2015-05-04 301 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;