就是这样,我想连接到位于远程服务器上的SQL2008R2,我可以远程进入服务器,在我登录作为管理员在Windows上我处理SQL服务器MS(与SQL的连接是通过Windows身份验证)。
我正在开发一个需要与SQL连接的WinForms应用程序,我尝试了几个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没问题,问题是端口。我为我的办公室IP打开了它,而且每件事都像魅力一样。
答案 0 :(得分: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;
答案 1 :(得分: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 Name
和Password
,因为它将使用您当前会话的Windows帐户。
您可以找到有关SQL Server连接字符串here
的更多详细信息答案 2 :(得分:1)
如果要连接用户ID和密码
,则忘记了IntegratedSecurity属性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;