好的......我在这里撕扯我的头发(我开始时没有太多的东西)..以及其中一个开发人员认可印章其中"它的工作原理我的机器"
基本上,我有一个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);
}
}
}
}
现在......结果......
所以...我错过了什么......
为了记录,我搜索了SO以寻找类似的问题,但是他们要么没有得到回答,要么提供的回复仍然没有解决问题...而且你不能"碰撞"要问的问题"我遇到了这个问题"
答案 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。