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

时间:2017-08-08 13:39:43

标签: c# .net sql-server azure

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

  • [Machine 1]是运行SQL Server的数据库机器
  • [Machine 2]运行连接数据库的C#服务

运行服务的机器似乎无法与数据库通信。在服务开始时,我得到SqlConnection例外(下面)。

我尝试的事情:

  • 我开发的SQL Server Management Studio可以与[Machine 1]
  • 上的数据库通信
  • 如果我在从Visual Studio运行的开发机器上本地使用完全相同的连接参数,我可以连接到数据库[Machine 1]
  • 我将SQL Server Management Studio安装到[Machine 2]上,它可以连接到[Machine 1]
  • 上的数据库
  • [机器1]可以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配置管理器&gt; SQL Server网络配置

  • 共享内存=已启用
  • 命名管道=已启用
  • TCP / IP =已启用

这是我得到的例外

  

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

     

at System.Data.SqlClient.SqlInternalConnectionTds..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.CreatePooledConnection(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,Boolean,Boolean,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.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal ByRef)
at 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.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(System.Threading.Tasks.TaskCompletionSource
1)   在   System.Data.SqlClient.SqlConnection.TryOpen(System.Threading.Tasks.TaskCompletionSource 1<System.Data.ProviderBase.DbConnectionInternal>) at System.Data.SqlClient.SqlConnection.Open() at SiloHost.SiloConfigurationFactory.OrleansTablesExists() at SiloHost.SiloConfigurationFactory.CreateOrleansTables() at SiloHost.SiloConfigurationFactory.CreateSqlConfiguration() at SiloHost.BifrostService..ctor() at SiloHost.Program+<>c.<Main>b__0_2(Topshelf.Runtime.HostSettings) at Topshelf.Builders.DelegateServiceBuilder 1 [[System .__ Canon,mscorlib,   版本= 4.0.0.0,文化=中立,   公钥= b77a5c561934e089]]。构建(Topshelf.Runtime.HostSettings)

     

异常信息:Topshelf.ServiceBuilderException at   Topshelf.Builders.DelegateServiceBuilder 1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Build(Topshelf.Runtime.HostSettings) at Topshelf.Builders.RunBuilder.Build(Topshelf.Builders.ServiceBuilder)
at Topshelf.HostFactory.New(System.Action
1)   在SiloHost.Program.Main()

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

  

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

0 个答案:

没有答案