IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫MSSQL → 淺談如何在SQL Server 2008中附加一個數(shù)據(jù)庫

淺談如何在SQL Server 2008中附加一個數(shù)據(jù)庫

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

SQL Server 7.0中,微軟推出了sp_attach_db和sp_attach_single_file_db系統(tǒng)存儲過程。它對于SQL Server數(shù)據(jù)庫管理員執(zhí)行下面的任務(wù)是非常方便的:

使用sp_attach_db系統(tǒng)存儲過程直接將.MDF和.LDF文件附加到服務(wù)器。

使用sp_attach_single_file_db系統(tǒng)存儲過程只附加.MDF文件。

使用sp_detach_db將數(shù)據(jù)庫從一個服務(wù)器分離,復(fù)制.MDF文件到另一個服務(wù)器上,然后使用sp_attach_db系統(tǒng)存儲過程重新附加這些文件到兩個服務(wù)器上。

盡管它對于SQL Server數(shù)據(jù)庫管理員是很有用的,但是在使用這兩個存儲過程時(shí)是有一些限制的。限制如下:

你不能附加多個日志文件

你不能附加16個以上的文件

在SQL Server 2008中,微軟宣布上面的系統(tǒng)存儲過程將在未來的版本中被廢棄。而他們在"Create Database"SQL語句中添加了一個從句"For Attach"。

這篇文章將介紹使用"For Attach"從句的多種方法,以克服在使用sp_attach_db和sp_attach_single_file_db時(shí)要面臨的限制。

假設(shè)我們有一個數(shù)據(jù)庫叫"MyDB1",它有一個.MDF文件和一個.LDF文件。使用下面的事務(wù)SQL語句創(chuàng)建這個數(shù)據(jù)庫。再假設(shè).MDF文件和.LDF文件的位置是"C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data File"。

  1. Use?Master? ?
  2. go? ?
  3. CREATE?DATABASE?MyDB1? ?
  4. ON? ?
  5. (?NAME?=?MyDB1_dat,? ?
  6. FILENAME?=?'C:Program?Files? ?
  7. Microsoft?SQL?ServerMSSQL10.SQL2008MSSQLDATA? ?
  8. Summary?Database?DataData?File?for?Monthly?Archive? ?
  9. Microsoft?SQL?Server?2008?Data?FileMyDB1.mdf',? ?
  10. SIZE?=?10,? ?
  11. MAXSIZE?=?50,? ?
  12. FILEGROWTH?=?5?)? ?
  13. LOG?ON? ?
  14. (?NAME?=?MyDB1_log,? ?
  15. FILENAME?=?'C:Program?Files? ?
  16. Microsoft?SQL?ServerMSSQL10.SQL2008MSSQLDATA? ?
  17. Summary?Database?DataData?File?for?Monthly?Archive? ?
  18. Microsoft?SQL?Server?2008?Data?FileMyDB1.ldf',? ?
  19. SIZE?=?5MB,? ?
  20. MAXSIZE?=?25MB,? ?
  21. FILEGROWTH?=?5MB?)? ?
  22. GO??

現(xiàn)在,讓我們分離該數(shù)據(jù)庫,并嘗試使用sp_detach_db和 sp_attach_db將它重新附加。執(zhí)行下面的事務(wù)SQL語句。

  1. use?master? ?
  2. go? ?
  3. sp_detach_db?'MyDB1'? ?
  4. go? ?
  5. sp_attach_db?'MyDb1',? ?
  6. 'C:Program?FilesMicrosoft?SQL?ServerMSSQL10.SQL2008MSSQLDATASummary?Database?Data? ?
  7. Data?File?for?Monthly?ArchiveMicrosoft?SQL?Server?2008?Data?FileMyDB1.mdf',? ?
  8. 'C:Program?FilesMicrosoft?SQL?ServerMSSQL10.SQL2008MSSQLDATASummary?Database?Data? ?
  9. Data?File?for?Monthly?ArchiveMicrosoft?SQL?Server?2008?Data?FileMyDB1.ldf'? ?
  10. GO? ?
  11. 你可以使用具有"For?Attach"從句的"Create?database"命令附加上相同的數(shù)據(jù)庫文件,如下所示。? ?
  12. use?master? ?
  13. go? ?
  14. sp_detach_db?'MyDB1'? ?
  15. go? ?
  16. CREATE?DATABASE?MyDB1? ?
  17. ON? ?
  18. (? ?
  19. FILENAME?=?'C:Program?FilesMicrosoft?SQL?ServerMSSQL10.SQL2008MSSQLDATASummary?Database?Data? ?
  20. Data?File?for?Monthly?ArchiveMicrosoft?SQL?Server?2008?Data?FileMyDB1.mdf'? ?
  21. ),? ?
  22. (? ?
  23. FILENAME?=?'C:Program?FilesMicrosoft?SQL?ServerMSSQL10.SQL2008MSSQLDATASummary?Database?Data? ?
  24. Data?File?for?Monthly?ArchiveMicrosoft?SQL?Server?2008?Data?FileMyDB1.ldf'? ?
  25. )?for?Attach? ?
  26. go??

現(xiàn)在,讓我們分離數(shù)據(jù)庫MyDB1,然后刪除.ldf文件,再然后使用sp_attach_single_file_db系統(tǒng)存儲過程通過執(zhí)行下面的TSQL命令將它重新附加上。

  1. use?master? ?
  2. go? ?
  3. sp_detach_db?'MyDB1'? ?
  4. go? ?
  5. exec?master..xp_cmdshell?'del?"C:Program?FilesMicrosoft?SQL?ServerMSSQL10.SQL2008MSSQLDATASummary?Database?Data? ?
  6. Data?File?for?Monthly?ArchiveMicrosoft?SQL?Server?2008?Data?FileMyDB1.ldf"'? ?
  7. go??

注意:我使用xp_cmdshell來刪除.ldf文件。如果xp_cmdshell沒有激活,那么你將得到下面的錯誤。

錯誤:

  1. Msg?15281,?Level?16,?State?1,?Procedure?xp_cmdshell,?Line?1? ?
  2. SQL?Server?blocked?access?to?procedure?'sys.xp_cmdshell'?of?component?'xp_cmdshe

    關(guān)鍵詞標(biāo)簽:SQL Server 2008

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系

相關(guān)下載

人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法