2015-05-04 234 views
0

这是这种情况,我想连接到位于远程服务器上的SQL2008R2,我可以远程进入服务器,并且在登录后我作为管理员登录我使用SQL服务器MS(与SQL的连接是通过Windows身份验证)。远程SQL Server的连接字符串

我在WinForms应用程序需要与SQL连接的工作,我尝试了好几种的ConnectionString没有成功,例如:

public static string strCon = @"Server=190.xxx.xxx.xxx\ServerName,1433;Database=DataBaseName;Integrated Security=false;User ID=User;Password=Pass"; 

public static string strCon = @"Data Source=190.xxx.xxx.xxx\ServerName,1433;Network Library=DBMSSOCN;Initial Catalog=DataBaseName;User ID=User;Password=Pass; 

我缺少的东西?在尝试连接之前,我应该做其他事吗?

我认为我有一个与Windows认证的东西混乱,我可以绕过它,直接连接到SQL?

注意,远程连接在服务器上启用,和我查了端口是1433

编辑:

虽然我一直在寻找一个解决方案,我发现this question,我意识到,当我远程连接到服务器我使用一个端口(190.xxx.xxx.xxx:yyyy)。我的问题就在那里,不是吗?

EDIT2: 我的解决方案:我使用的connectionString没问题,问题是端口。我打开它用于我的办公室知识产权,所有东西都像魅力一样。

+0

'集成安全性= FALSE'应该是'集成安全性= TRUE;。并放弃用户名和密码。 –

+0

下面是创建连接字符串的快速方法https://msdn.microsoft.com/en-us/library/e38h511e%28v=vs.71%29.aspx。请注意,在C#中使用它时,必须删除提供程序部分。 – juharr

+0

@juharr:这是一个古老的链接。它已经有十年之久,并且过时了。 –

回答

1

如果你想与Windows身份验证你应该使用连接:

public static string strCon = @"Data Source=190.xxx.xxx.xxx\ServerName,1433;Database=DataBaseName;Integrated Security=True"; 

另外请注意,1433是默认的SQL端口,因此你不必指定它。 你可以这样写:

public static string strCon = @"Data Source=190.xxx.xxx.xxx\ServerName;Database=DataBaseName;Integrated Security=True"; 

在这种情况下User NamePassword不应该指定,因为它会使用Windows帐户当前会话。

您可以找到有关SQL Server连接字符串的详细信息here

+0

感谢您的回答,但我不想与Windows身份验证连接,因为当我通过远程连接使用SQL时,我以管理员身份登录。另外我想我已经读过,你不能在连接字符串中包含Windows登录信息。 – Straty

1

你忘了IntegratedSecurity属性,如果你想使用用户ID和密码

public static string strCon = @"Data Source=190.xxx.xxx.xxx\ServerName,1433;Network Library=DBMSSOCN;Initial Catalog=DataBaseName;Integrated Security=False;User ID=User;Password=Pass; 

否则连接:

public static string strCon = @"Data Source=190.xxx.xxx.xxx\ServerName,1433;Network Library=DBMSSOCN;Initial Catalog=DataBaseName;Integrated Security=True; 
2

我强烈建议您使用SqlConnectionStringBuilder类,该类允许您通过属性和配置连接字符串保证创建有效的连接字符串。

使用方法如下:

SqlConnectionStringBuilder b = new SqlConnectionStringBuilder(); 
b.DataSource = "190.xxx.xxx.xxx\ServerName"; 
b.InitialCatalog = "DataBaseName"; 
b.IntegratedSecurity = false; 
b.UserId = "..."; 
b.Password = "..."; 

string connectionString = b.ConnectionString;