2012-07-05 162 views
1

我正在使用C#web服務。無法連接到SQL Server 2008的.Net

我已經部署了一個在我的本地系統上完美工作的Web服務,但是當我嘗試在虛擬專用服務器上運行相同的服務時,它返回一個錯誤。

這是我的連接字符串

Data Source = <serverinstance>\\SQLEXPRESS; Initial Catalog = DomainTable; User ID= <serverinstance>\\admin; Password = <Windows_Login_Password> 

在此之前我就是用這個連接字符串

Data Source=<serverinstance>\\SQLEXPRESS; Initial Catalog=DomainTable; Integrated Security=SSPI"; 

其中沒有一個是爲我工作。請幫助它真的非常重要

+0

是數據庫運行在與IIS相同的機器上? – 2012-07-05 19:14:46

+1

請包括*實際*詳細信息,例如您對(服務器名稱,本地主機,IP地址等)以及「返回錯誤」意思 - 例如包括*實際錯誤*。 – 2012-07-05 19:16:43

+0

是sqlserver 2008安裝在同一臺機器上 – Pirate 2012-07-05 19:17:11

回答

2

Data Source = serverinstance \ SQLEXPRESS;
----------------------------------------- ^這裏只有一個斜槓

還要確保遠程服務器可以看到您所引用的任何內容,如<serverinstance>。您可能會將此作爲localhost,但您的Web服務器不認爲您的機器是本地主機。它也可能無法通過名稱來訪問它,特別是如果它位於不同的域中。

如果您嘗試使用Windows身份驗證,有地球上沒有辦法,你應該使用:

用戶ID = serverinstance \管理;密碼= Windows_Login_Password

哇,從來沒有硬編碼Windows密碼任何地方。如果你想使用SQL認證,那麼設置。否則,您應該使用此代替用戶ID /密碼:

Persist Security Info = true;

確保IIS用戶已被授予對您的SQL Server的訪問權限。

+0

整個字符串是在雙引號,因此我使用雙反斜線 – Pirate 2012-07-05 19:16:10

+0

有沒有辦法不需要在C#中做到這一點。 – 2012-07-05 19:17:30

0

試試吧;

"data source=.\\SQLEXPRESS;Integrated Security=SSPI;initial catalog=DomainTable" 

我相信用戶名/密碼一般只需要遠程連接,並且您必須爲指定的數據庫設置它們。如果您尚未創建所需的登錄憑據,上面的連接字符串應該讓您繼續在本地計算機上運行sqlexpress的運行實例。

編輯

如果您使用的是IIS主辦,這裏是從最近的文章中,我做了部署和設置應用程序池與SQL Express的2008年工作的一大塊即使你不使用IIS ,你仍然需要做這樣的事情來讓你的託管環境與SQL Server正確設置。

步驟1中的IIS用戶

在MS SQL Server的安全部分創建一個數據庫登錄,需要用鼠標右鍵點擊用戶和IIS APPPOOL(IIS APPPOOL \ apppoolname,在一節創建的,步驟2)。檢查出DP的回答這裏查看更多一步一個步驟 - Add IIS 7 AppPool Identities as SQL Server Logons

第2步設置權限爲IIS用戶對數據庫

右擊數據庫名稱,然後單擊屬性。在權限部分添加您剛剛創建的APPPOOL用戶,請務必爲他提供所需的Execute \ Select權限。

注意:Website1需要執行,選擇,刪除,插入權限。 Website2也在使用這個應用程序池,它不應該是因爲我們不需要讓用戶在trimdynamics應用程序中擁有這種功能。我們可以分離應用程序池,以便我們的修剪動態IIS USRS只獲得執行和選擇權限。

如果這沒有幫助,這是很難說什麼怎麼回事沒有您的託管結構的具體知識,還有的部署時gotch遐從開發大量的對生產環境:(

+0

抱歉克里斯我也試過這個,但它不工作:( – Pirate 2012-07-05 19:26:22

+1

@皮拉特DEFINE「不工作」請。例如添加***實際的錯誤信息***到您的問題! – 2012-07-05 19:27:40

+0

@皮拉特剛注意到你部署在你的開發服務器,這會導致你第一次遇到很多麻煩,你必須這樣想 - 現在IIS /一些服務託管你的網站,而不是你本地的機器,事情有點不同,在你的開發環境中,工作正常,因爲你的執行查詢作爲當前用戶,它有權限。當您託管您的應用程序時,例如在IIS中,您知道有一個IIS池正在執行您的數據庫上的查詢,該查詢不會自動擁有權限。您是否收到用戶許可erro – clamchoda 2012-07-05 19:31:19