无法使用C#Console App连接到Azure SQL DB(使用System.Data)

时间:2018-05-22 12:44:08

标签: c# azure azure-sql-database

好的......我在这里撕扯我的头发(我开始时没有太多的东西)..以及其中一个开发人员认可印章其中"它的工作原理我的机器"

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

在我的电脑上,在Visual Studio(或CMD线)下,我可以连接到BOTH实例,但是,在我的PROD服务器上,我可以连接到DEV数据库,但不是PROD DB ...使用完全相同的测试app(见下文)。

现在,我支持公司防火墙/代理,但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);
            }
        }
    }
}

现在......结果......

enter image description here

所以...我错过了什么......

为了记录,我搜索了SO以寻找类似的问题,但是他们要么没有得到回答,要么提供的回复仍然没有解决问题...而且你不能"碰撞"要问的问题"我遇到了这个问题"

1 个答案:

答案 0 :(得分: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