2

獲取數據庫名稱我目前使用此連接字符串附加到我的數據庫,我在Visual Studio中創建:從SQL Server Express數據庫在Visual Studio

Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Database1.mdf;User Instance=true 

我想舉辦與IIS的網站,所以我可以亂七八糟響應標題,但我得到這裏描述的問題:SQL Server Express connection string for Entity Framework Code First

我試圖找到什麼數據庫名稱來指定,但沒有任何運氣。我想Initial Catalog=Database1但給了我這個錯誤:

Cannot create file 'D:\docs\Visual Studio 2010\Projects\QuickHomePage\QuickHomePage\App_Data\Database1.mdf' because it already exists. Change the file path or the file name, and retry the operation.
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

我只是想附加到Database1.mdf。爲什麼它會嘗試創建它?有人建議將.mdf文件附加到另一個數據庫實例以查看其中的內容。

需要運行SQL Server Management Studio嗎?每次嘗試連接到服務器類型數據庫引擎和本地計算機時,都會發出連接錯誤。

回答

3

數據庫名稱是您在附加到SQL Server(Express)服務器實例時爲.MDF文件提供的名稱。 MDF中沒有固定的數據庫名稱,您需要發現它 - 這完全取決於您在服務器上調用數據庫的方式。

所以,如果您將Database1.mdf這樣的:

CREATE DATABASE CrazyDatabase ON 
(FILENAME = N’C:\Data\Database1.mdf’), 
(FILENAME = N’C:\Data\Database1_Log.ldf’) 
FOR ATTACH 

那麼你的數據庫名稱爲CrazyDatabase - 但是這並沒有任何連接到原來的MDF文件的文件名或者裏面的任何內容 - 你可以把它叫做什麼別的,也是 - 無論你選擇什麼。

在這種情況下,您的新的連接字符串是:

Server=.\SQLEXPRESS;Database=CrazyDatabase;Integrated Security=SSPI; 
+0

因此,同時指定.mdf文件和數據庫是沒有意義的?在將其附加到「真實」實例的過程中,我指定了一個數據庫名稱?這是否意味着我不能在EF上使用.mdf文件,如果我想通過IIS進行託管? – RandomEngy

+1

@RandomEngy:是 - 「AttachDbFileName =」僅用於您自己的開發機器上的開發目的;一旦你投入生產,你將數據庫放到一個*真實的* SQL Server上,附加它並從那個點開始,你只會**使用你定義的數據庫名稱 - 文件名將變成完全的無關。你應該**從不**在連接字符串中定義! –

+1

感謝您解決問題。我現在把事情搞好了,運行得很好。 – RandomEngy

2

如果你只想看到DB名稱

你不必附加DB看到DB名稱。 在SSMSsqlcmdMSQRY32.EXE :-)(從MS Office),你可以運行這個簡單的查詢:

DBCC checkprimaryfile(N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf', 2) 

輸出示例:

property   value 
---------------- ----------------- 
Database name AlaBalaPortocala 
Database version 655 
Collation  53268 

錯誤

要看到一個列表,包含您可以使用的數據庫的所有文件:

DBCC checkprimaryfile(N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf', 3) 

輸出示例:

status  fileid name     filename 
----------- ------ -------------------- --------------------------------------------------------------------------------------------- 
2   1  AlaBalaPortocala  C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf    
1048642  2  AlaBalaPortocala_log C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AlaBalaPortocala_log.ldf 

從你的問題的錯誤消息告訴我們,這些文件之一(見filename列)已經存在。解決方案是附加數據庫並使用marc_s解決方案更改文件名/文件路徑。

+0

據此,我的數據庫名稱是數據庫文件的整個路徑。 – RandomEngy

+0

對不起。我沒有任何線索。在連接數據庫之前,此命令由'SSMS'使用:'Object explorer> Databases> Atach ...'看看這個[Microsoft Connect上公佈的請求](http://connect.microsoft.com/SQLServer/feedback /信息/ 293012/MSFT-EDW-請文檔,其-當前無證內部最DBCC-checkprimaryfile語句)。 –

相關問題