2009-05-29 114 views
6

如何在SQL Server中連接沒有LDF文件的數據庫?如何在沒有LDF文件的情況下附加數據庫?

+1

只需要補充一點,您可能會通過執行此操作來獲取不一致的數據庫。將它與原始LDF結合起來要好得多。請參閱https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx – 2009-05-29 16:25:54

回答

8

您可以使用sp_attach_single_file_db附加缺少日誌文件的數據庫。

+0

它出現此錯誤: 無法打開新數據庫'SharedCS'。 CREATE DATABASE被中止。 設備激活錯誤。物理文件名'd:\ Program Files \ Microsoft SQL Server \ MSSQL \ data \ dummy_Log.LDF'可能不正確。 – Ricardo 2009-05-29 14:11:36

+0

不要嘗試附加虛擬日誌。你能發佈你正在運行的sp_attach_single_file_db命令嗎? – 2009-05-29 14:41:37

+1

這隻有在.mdf所說的日誌文件可以重新創建的情況下才有效。 – Joshua 2011-12-15 19:37:13

1

你可以「只是做」它會發出警告,它找不到.ldf,但它仍然會附加數據庫。

+0

它給出了一個錯誤,數據庫沒有附加。 – Ricardo 2009-05-29 14:11:58

3

您可以嘗試使用MohammedU發佈的here。基本上,他使用了DBCC REBUILD_LOG命令。它將取決於您的服務器的版本。

以下是具體步驟(無詳細信息):

  1. 重命名現有.mdf文件到.mdf_old
  2. 創建具有相同的.mdf和.ldf文件作爲一個老一個新的數據庫。
  3. 停止SQL Server
  4. 重命名.mdf和.ldf新的DB的文件.mdf_old和.ldf_old
  5. 重命名.mdf_old到.MDF
  6. 啓動SQL Server
  7. 您應該看到分貝可疑模式
  8. 將數據庫上下文更改爲主服務器並允許更新系統表
  9. 將數據庫設置爲緊急(旁路恢復)模式。
  10. 停止並重新啓動SQL Server。
  11. 重建日誌。
  12. 將數據庫設置爲單用戶模式並運行DBCC CHECKDB以驗證物理一致性。
  13. 關閉對系統表的更新。
+1

我該如何做8到13步? – 2015-03-23 09:24:35

1

如果遇到問題,請確認mdf文件不是隻讀的。

0
EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DBNAME_Data.mdf'; 

我試過了,它工作...希望這會有所幫助。

3

通過SQL Server Management Studio中

  1. 打開SSMS試試這個步驟,並就數據庫右鍵單擊。
  2. 選擇附加選項
  3. 然後點擊添加以附加MDF文件。
  4. 從列表中選擇文件並單擊OK
  5. 現在屏幕顯示MDF文件和LDF文件(未找到)
  6. 選擇LDF文件,並單擊刪除選項。
  7. 刪除LDF文件後點擊確定。
  8. MDF文件成功附加到數據庫列表中。
3

嘗試通過將MDF文件添加到「附加數據庫」對話框來附加它。您會注意到該對話框將報告缺少的LDF文件。按照以下步驟上的圖片,如圖所示:

enter image description here

1

以下是代碼片段programaticaly創建.ldf文件

以下3種方法。

方法-1

在我的情況,我有我的DATA文件夾數據庫。

您可以通過右擊得到完整路徑數據庫,然後將屬性 那麼你可以完整路徑複製到數據庫

在我的情況下路徑如下。

C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL11.DRIBBLEE \ MSSQL \ DATA

現在,這裏是第一種方法,通過使用存儲過程(sp_attach_single_file_db),並通過它的參數(數據庫名和物理路徑)

USE [master] 
GO 

EXECUTE sp_attach_single_file_db 
@dbname='AdventureWorksDW_2012', 
@physname=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW2012_Data.mdf' 

GO 

在執行代碼後執行代碼轉到您駐留的數據庫文件夾,您將在其中創建.ldf文件。

然而,你將在你的

The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW2012_log.ldf" may be incorrect. 
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW_2012_log.ldf' was created. 

現在你可以將你的數據庫和附加數據庫就在您的服務器名稱在對象資源管理器點擊刷新後得到如下信息。

方法-2

如果你的數據庫有一個或多個日誌文件丟失,您可以使用以下

CREATE DATABASE db_namehere ON 
(
    FILENAME=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\db_namehere.mdf') 

FOR ATTACH_REBUILD_LOG 
GO 

方法-3

如果數據庫只有一個日誌文件錯誤你可以使用這個

CREATE DATABASE db_name ON 
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\TestDb.mdf') 
FOR ATTACH 
GO 

此外,您可以閱讀「在線預訂」以獲取更多信息。

相關問題