2010-08-31 40 views
1

我有一個Windows 2008 R2 x64企業版+ SQL Server 2008 R2數據中心版 從本地電腦我可以在C# 連接到SQL服務器sqlClient,這裏是我的連接字符串的樣子:爲什麼我無法通過.net中的sqlcinet與sql server 2008建立連接,但使用oledb可以嗎?

using (sqlconnection cn = new sqlconnection("Data Source=myServerIPAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;")) 
{ 
    cn.open(); //I'll get error here from remote 
    using (sqlcommand cmd = new sqlcommand("sql",cn)) 
    { 
     //some code here 
    } 
} 

但由於上面詳細代碼從遠程計算機我會得到這個錯誤:

Timeout expired. The timeout period 
elapsed prior to completion of the 
operation or the server is not 
responding. 

但是當我改變上面的代碼oledb一切工作正常。 分別oledb不會改變連接字符串,這是我oledb連接字符串:

Provider=SQLOLEDB;Data 
Source=myserverIP;Password=password;User 
ID=sa;Initial Catalog=catalog 

:我已經試過this,但也沒有什麼區別。

+0

你確定這個代碼工作,因爲這段代碼有一個像「)」缺少使用等 – Kashif 2010-08-31 09:21:52

+0

耶代碼工作的語法錯誤,正如我所說的它的工作在本地但不是從任何遠程計算機,因爲與oledb它工作 – 2010-08-31 10:02:11

回答

1

Hai, 請設置連接字符串的Connection Timeout屬性。

+0

作爲connectionstrings.com表示沒有超時attr存在連接字符串爲sql server 2008. 但無論如何,我已經做了什麼,我告訴過這裏,並感謝它的工作原理,但有一個更大的問題:它是緩慢的地獄! oledb連接太快。 我讀過的地方是sqlclient比oledb快,但實際上它完全是相反的。 你有什麼想法嗎? 關於。 – 2010-08-31 10:16:22

+1

我認爲Sql server有問題。使用正確的用戶標識sa創建另一個用戶。 – 2010-08-31 10:57:20

+0

我在我的連接字符串中使用了「sa」,並且sa對我期望的目錄具有完全權限我不知道如何進行任何進一步的更改,您能否提供建議? 謝謝 – 2010-08-31 11:31:56

0

TCP/IP是Sql-Server的啓用連接協議嗎?您可以在「Sql Server網絡配置」下的Sql Server配置管理器中進行檢查。

+0

也啓用TCP/IP。即使在創建連接之後,檢索數據的速度也會很慢。 – 2010-08-31 10:35:31

1

Windows 2008服務器從連接字符串中去掉密碼。

你要密碼專門分配給您的連接cn

using (sqlconnection cn = new sqlconnection("Data Source=myServerIPAddress;Initial  Catalog=myDataBase;User Id=myUsername;Password=myPassword;")) 
{ 
    cn.password = "myPassword"; 
    cn.open(); //I'll get error here from remote 
    using (sqlcommand cmd = new sqlcommand("sql",cn)) 
    { 
     //some code here 
    } 
} 
相關問題