远程SQL Server连接字符串

时间:2014-07-02 20:07:12

标签: c# asp.net sql-server connection-string sql-server-2012-express

我有一个项目,其中SQL Server和开发都在本地工作。

使用了以下连接字符串:

  SqlConnection connection= new SqlConnection("Data Source=.\\MYDB;Initial Catalog=Database;Integrated Security=true");
  connection.Open();

我的开发团队现在正在发展,我希望让另一位开发人员访问同一个数据库。

他将需要更改此连接字符串,我们正在尝试修改字符串中要更改的内容 - 到目前为止我们已尝试过:

  SqlConnection connection= new SqlConnection("Data Source=2.221.1.145\\MYDB;Initial Catalog=Database;Integrated Security=true");
  connection.Open();

但访问该页面时会引发以下错误:

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5352431
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
   System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +5363103
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +145
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +922
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +518
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +278
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38

SQL Server已启用TCPIP协议,并正在侦听我系统上的所有IPAddress。端口1433添加到防火墙是为入站的UDP和TCP,并且SQL Server Express实例服务已重新启动。

有人可以帮我们连接字符串吗?此外,我觉得集成安全线需要更改。

为了简单起见,我已将更新状态的问题移至新主题:Connection string for SQL Server Express on remote Computer login failed error

4 个答案:

答案 0 :(得分:1)

不是100%确定是否会导致错误,但是我第一次远程连接到SQL Server时看到这次旅行的人,所以值得检查一下:

在SSMS中打开服务器属性,在Connections下,检查是否已选中Allow remote connections to this server。即使在同一个局域网上,您也需要检查以从另一台计算机进行连接。

答案 1 :(得分:0)

MYDB尝试这样的连接字符串:

SqlConnection connection= new SqlConnection("Server=2.221.1.145;Database=Database;Trusted_Connection=True");

(根据需要分出服务器和数据库参数)

另外,你提到你打开了很好的端口。您应该查看SQL配置的另一部分。进入SQL服务器上的SQL配置管理器。展开SQL Server网络配置。 {yourinstance}的开放协议,然后双击TCP / IP。在“IP地址”选项卡下,滚动到最底部。确保TCP动态端口为空。还要验证TCP端口是否为1433。

EDIT1: 根据评论建议更新了连接。

此外 - 由于您正在远程连接,请仔细查看Trusted_Connection位。您在本地计算机上运行的Windows帐户是否能够登录并连接到远程服务器上的SQL?如果您没有远程执行任何操作并且在同一子网中,您可能不必担心这一点。

EDIT2:

Andy - 根据您的评论,您的问题似乎是您的连接不受信任,您需要输入用户名和密码。如果您使用SQL登录,则在SQL中定义。如果您使用的是Windows身份验证,则需要将域用户帐户添加到允许的登录名中。

如果您使用的是SQL登录,则需要使用"标准安全"样式连接字符串,而如果您使用域帐户,则需要使用"可信连接"样式连接字符串。请参阅此处以获取有关字符串的示例:

https://www.connectionstrings.com/sql-server-2012/

标准安全 Server = myServerAddress; Database = myDataBase; User Id = myUsername; 密码= MYPASSWORD;

可信连接 服务器= myServerAddress;数据库= MYDATABASE; Trusted_Connection = TRUE;

现在,您可能会问到在哪里设置此SQL登录!您将需要创建SQL登录和数据库用户。这可以从SQL Management Studio一步完成。以下是来自MSDN的详细操作方法:

http://msdn.microsoft.com/en-us/library/aa337562.aspx

答案 2 :(得分:0)

检查"集成安全性=' true'"是你的问题。

如果是,这将意味着您的远程连接必须提供访问/安全凭证。

答案 3 :(得分:0)

终于解决了。

将安全性转换为Windows和SQL身份验证。接下来是:How can I create a user in SQL Server Express database I added to my project?后跟GRANT EXECUTE to all stored procedures我们确切地确定了我们需要的东西!