C# 无法连接到远程SQL Server数据库

C# 无法连接到远程SQL Server数据库,c#,.net,sql-server,azure,C#,.net,Sql Server,Azure,我最近在azure中创建了两个虚拟机 [Machine 1]是运行SQL Server的数据库计算机 [Machine 2]运行连接到数据库的C#服务 运行该服务的计算机似乎无法与数据库通信。在服务启动时,我得到一个SqlConnection异常(如下) 我尝试过的事情: 我开发的SQL Server Management Studio可以与[Machine 1]上的数据库对话 如果我在从Visual Studio运行的dev计算机上本地使用完全相同的连接参数,我可以连接到数据库[mach

我最近在azure中创建了两个虚拟机

  • [Machine 1]是运行SQL Server的数据库计算机
  • [Machine 2]运行连接到数据库的C#服务
运行该服务的计算机似乎无法与数据库通信。在服务启动时,我得到一个
SqlConnection
异常(如下)

我尝试过的事情:

  • 我开发的SQL Server Management Studio可以与[Machine 1]上的数据库对话
  • 如果我在从Visual Studio运行的dev计算机上本地使用完全相同的连接参数,我可以连接到数据库[machine 1]
  • 我在[Machine 2]上安装了SQL Server Management Studio,它可以连接到[Machine 1]上的数据库
  • [机器1]can ping[机器2]
  • 我已尝试关闭两台计算机的两个防火墙
但是,在[Machine 2]上运行的程序仍然无法连接到[Machine 1]

这是我的[编辑过的]连接字符串

<add name="XXXX" 
     connectionString="data source=XXXX;initial catalog=XXXX;
                       persist security info=True;user id=sa;password=XXXX;
                       multipleactiveresultsets=True;
                       application name=XXXX" 
     providerName="System.Data.SqlClient" />

SQL Server配置管理器>SQL Server网络配置

  • 共享内存=已启用
  • 命名管道=已启用
  • TCP/IP=已启用
这是我得到的例外

描述:由于未处理的异常,进程已终止。 异常信息:System.Data.SqlClient.SqlException

位于System.Data.SqlClient.SqlInternalConnectionDS..ctor(System.Data.ProviderBase.DbConnectionPoolIdentity,System.Data.SqlClient.SqlConnectionString,System.Data.SqlClient.SqlCredential,System.Object,System.String,System.Security.SecureString,Boolean,System.Data.SqlClient.SqlConnectionString, System.Data.SqlClient.SessionData,System.Data.ProviderBase.DbConnectionPool,System.String,Boolean)
位于System.Data.SqlClient.SqlConnectionFactory.CreateConnection(System.Data.Common.DbConnectionOptions,System.Data.Common.DbConnectionPoolKey,System.Object,System.Data.ProviderBase.DbConnectionPool,System.Data.Common.DbConnection,System.Data.Common.DbConnectionOptions)
位于System.Data.ProviderBase.DbConnectionFactory.CreatePoolledConnection(System.Data.ProviderBase.DbConnectionPool,System.Data.Common.DbConnection,System.Data.Common.DbConnectionOptions,System.Data.Common.DbConnectionPoolKey,System.Data.Common.DbConnectionOptions)
位于System.Data.ProviderBase.DbConnectionPool.CreateObject(System.Data.Common.DbConnection,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal)
位于System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(System.Data.Common.DbConnection,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal)
位于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection,UInt32,布尔值,布尔值,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal ByRef)
位于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource
1,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal ByRef)
在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource
1,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,System.Data.ProviderBase.DbConnectionInternal ByRef)
位于System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory,System.Threading.Tasks.TaskCompletionSource
1,System.Data.Common.DbConnectionOptions)
位于System.Data.SqlClient.SqlConnection.TryOpenInner(System.Threading.Tasks.TaskCompletionSource
1) 在 System.Data.SqlClient.SqlConnection.TryOpen(System.Threading.Tasks.TaskCompletionSource
1)
位于System.Data.SqlClient.SqlConnection.Open()的
SiloHost.SiloConfigurationFactory.OrleansTablesExists()位于
SiloHost.SiloConfigurationFactory.CreateOrleansTables()位于
SiloHost.SiloConfigurationFactory.CreateSqlConfiguration()位于
SiloHost.BifrostService..ctor()位于
SiloHost.Program+c.b_uu0_u2(Topshelf.Runtime.HostSettings)位于
Topshelf.Builders.DelegateServiceBuilder
1[[System.\u Canon,mscorlib, 版本=4.0.0.0,区域性=中性, PublicKeyToken=b77a5c561934e089]].Build(Topshelf.Runtime.HostSettings)

异常信息:Topshelf.ServiceBuilderException位于 Topshelf.Builders.DelegateServiceBuilder
1[[System.\u Canon,mscorlib,
版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089]].Build(Topshelf.Runtime.HostSettings)
在
Topshelf.Builders.RunBuilder.Build(Topshelf.Builders.ServiceBuilder)
在 Topshelf.HostFactory.New(系统操作
1) 在SiloHost.Program.Main()上

我无法在本地计算机上复制此操作,但如果我将配置中数据库的IP更改为不存在的IP,则会出现一个外观相同的错误,并提供更多信息:

运行时发生与网络相关或特定于实例的错误 正在建立与SQL Server的连接。找不到服务器,或者 无法访问。验证实例名称是否正确,以及 SQL Server配置为允许远程连接。(提供者:已命名) 管道提供程序,错误:40-无法打开到SQL Server的连接)


SQL server是否配置为TCP/IP连接?默认情况下,否。我怀疑的是您的服务用户的权限。暂时来说,如果你用不同的用户名(比如你的用户名)运行服务,你会得到相同的异常吗?@b这是一个很好的观点,但我认为是的,它是配置好的,我会马上更新问题,以反映您是否使用连接字符串中的相同凭据来测试Sql Management Studio连接?@Juan Yes每次我尝试使用Sql server时,它的IP/用户/密码都是相同的