【问题标题】:Cannot connect to Azure SQL DB using C# Console App (using System.Data)无法使用 C# 控制台应用程序(使用 System.Data)连接到 Azure SQL DB
【发布时间】:2018-05-22 12:44:07
【问题描述】:

好的......我在这里扯头发(我没有太多开始)..它是“它在我的机器上工作”的那些开发者批准印章之一

基本上,我有一个 C# 控制台应用程序,它需要将数据上传到托管在 Azure 中的 SQL 数据库。我的 Dev 数据库保存在 Visual Studio 订阅(MSDN 中的免费订阅)中,Prod 数据库保存在我们的企业 Azure 订阅中(我必须依靠我们的 Azure 管理员团队来配置)。

在我的 PC 上,在 Visual Studio(或 CMD 行)下,我可以连接到两个实例,但是,在我的 PROD 服务器上,我可以连接到 DEV 数据库,但不能连接到 PROD DB...使用完全相同的测试应用程序(见下文)。

现在,我在公司防火墙/代理后面,但 IP 地址已添加到两个数据库的防火墙规则中......显然配置正确,因为它可以通过 Dev PC 连接。

为了尝试简化测试,我将所有内容缩减为一个简单的测试 C# 测试应用程序,并使用适当的连接字符串运行它...

using System;
using System.Data.SqlClient;

namespace AzureConnectTest
{
    class AzureConnectTest
    {
        static void Main(string[] args)
        {
            string ConnectionString = @"data source=******.database.windows.net; ";
            ConnectionString += @"initial catalog=****; ";
            ConnectionString += @"persist security info=False; ";
            ConnectionString += @"MultipleActiveResultSets=True; ";
            ConnectionString += @"user id=""*****""; ";
            ConnectionString += @"password=""*****""; ";

            Console.WriteLine("Attempting to connect");
            Console.WriteLine(ConnectionString);
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    Console.WriteLine(" - Success");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(" - Failed");
                Console.WriteLine(ex.Message);
            }
        }
    }
}

现在...这是结果...

所以......我在这里错过了什么......

为了记录,我已经搜索了类似的问题,但他们要么没有得到回答,要么提供的回复仍然没有解决问题......而且你不能“碰撞”问题说“我有这个问题”

【问题讨论】:

  • 嗨。如果您无权访问 Azure,那么找出配置的内容是一个挑战。例如,您可能需要 Encrypt=True;并且可能 TrustServerCertificate=False。为了更快地找到它以及如何连接,我建议您使用 sql management studio 并尝试连接到那里的 azure 数据库。
  • @Mono 尝试了这两个参数(所有组合),但仍然无法从 prod 服务器连接 - 我们的 Azure 团队不是开发人员,并且一直说“你尝试过 SSMS”,但它没有安装在 prod 上服务器,我不愿意安装它“只是为了测试连接”
  • 第二行错误表示连接字符串中有无效关键字authentication。第三行错误说sql server不可连接。

标签: c# azure azure-sql-database


【解决方案1】:

要成功连接到Azure SQL Database,您的连接字符串需要以下组件:

Server=tcp:***server***.database.windows.net,1433;
Initial Catalog=***database***;
Persist Security Info=False;
User ID=***user id***;
Password=***password**
MultipleActiveResultSets=False;
Encrypt=True;
TrustServerCertificate=False;
Connection Timeout=30;

请注意,为了代理连接,连接机器的 IP 地址必须被授予firewall exception

【讨论】:

  • 嗯....好消息,坏消息...好消息是更改为此连接 sting 构造解决了我的生产服务器上的问题...但是,它不适用于我的dev PC ...但至少我可以在每个环境的 App.Config 中设置它
  • @ChrisHammond 很高兴听到它!我怀疑是防火墙问题。我相应地更新了我的答案
  • aaaannndddd ...它再次停止了...所以我现在开始考虑相同的@mathijspim ...但是IP地址从服务器(通过防火墙/代理/ NAT)被添加到数据库异常中
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2018-05-13
  • 2018-01-05
相关资源
最近更新 更多