在我安裝在IIS 7上的Web應用程序中,我需要連接到SQL Server Express數據庫文件(僅用於測試目的)。我在web.config文件中使用以下連接字符串:無法連接到SQL Server Express數據庫
<configuration>
<connectionStrings>
<add name="MyDbConnection" connectionString="data source=.\SQLEXPRESS;Integrated Security=true;AttachDBFilename='C:\Users\UserName\CSharp\WebApp004_TestDB\App_Data\Database1.mdf';User Instance=true;Connection Timeout=15" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
我還設置了NTFS權限的文件夾C:\Users\UserName\CSharp\WebApp004_TestDB\App_Data
這樣:
- IIS_IUSRS = FullControl
- IUSR = FullControl
- NT SERVICE \ MSSQL $ SQLEXPRESS = FullControl
- IIS應用程序池\ [MyAppPoolName] = FullControl
這仍然沒有幫助。當我試着通過我的C#代碼連接到數據庫中,我得到一個異常:
試圖附加自動命名的數據庫文件 C:\ Users \用戶名\ CSHARP \ WebApp004_TestDB \ App_Data文件\數據庫1。 mdf 失敗。存在相同名稱的數據庫,或指定的文件不能打開,或位於UNC共享上。
注意的是,相同的代碼工作另一臺機器上安裝了實際的SQL服務器(與我曾經DB用戶名和密碼不同的連接字符串。)
任何想法,我缺少什麼嗎?
在猜測帳戶運行SQL Server爲不能看到你的用戶文件夾中的文件。鑑於它很遙遠,這很可能。常用的解決方案是將帶有服務器的文件移動到該計算機所在的文件夾中。 –
@TonyHopkinson:謝謝,好點。事實上,如果我將.mdf文件移動到「C:\ Folder1」中並將其公開化,它就可以工作。爲什麼它不像我的用戶文件夾?我認爲設置這些ACL權限應該這樣做。 – ahmd0
如果您在同一臺計算機上,您可以在可以看到您的用戶文件夾的帳戶下運行sql server。可能必須設置一個。不能從共享連接,因此不同的計算機不在同一臺計算機上,但與從磁盤恢復相似。提起並移動文件,然後使用該路徑,太脆弱了,管理員一直在使用活動目錄等等。 –