日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQL Server 移動數(shù)據(jù)庫

系統(tǒng) 2196 0
原文: SQL Server 移動數(shù)據(jù)庫

移動系統(tǒng)數(shù)據(jù)庫在下列情況下可能很有用:

  • 故障恢復(fù)。例如,數(shù)據(jù)庫處于可疑模式下或因硬件故障而關(guān)閉。

  • 計劃的重定位。

  • 為預(yù)定的磁盤維護(hù)操作而進(jìn)行的重定位。

下列過程適用于在同一 SQL Server 實(shí)例內(nèi)移動數(shù)據(jù)庫文件。若要將數(shù)據(jù)庫移動另一個 SQL Server 實(shí)例中或另一臺服務(wù)器上,請使用 備份和還原 分離和附加 操作。

本主題中的過程需要數(shù)據(jù)庫文件的邏輯名稱。若要獲取該名稱,請在? sys.master_files ?目錄視圖中查詢名稱列。

?

預(yù)先安排的重定位與預(yù)定的磁盤維護(hù)過程

若要將移動系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)或日志文件的操作作為預(yù)先安排的重定位或預(yù)定的維護(hù)操作的一部分,請執(zhí)行下列步驟。此過程適用于除 master 和 Resource 數(shù)據(jù)庫以外的所有系統(tǒng)數(shù)據(jù)庫。

  1. 對于要移動的每個文件,請運(yùn)行以下語句。

                    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
    
                  
  2. 停止 SQL Server 實(shí)例或關(guān)閉系統(tǒng)以執(zhí)行維護(hù)。有關(guān)詳細(xì)信息,請參閱 停止服務(wù)

  3. 將文件移動到新位置。

  4. 重新啟動 SQL Server 實(shí)例或服務(wù)器。有關(guān)詳細(xì)信息,請參閱 啟動和重新啟動服務(wù)

  5. 通過運(yùn)行以下查詢來驗證文件更改。

              SELECT  name ,
    
            physical_name AS CurrentLocation ,
    
            state_desc
    
    FROM    sys.master_files
    
    WHERE   database_id = DB_ID(N'<database_name>') ;
            


如果移動了 msdb 數(shù)據(jù)庫并為 數(shù)據(jù)庫郵件 配置了 SQL Server 實(shí)例,則請完成下列附加步驟。

  1. 通過運(yùn)行以下查詢,驗證是否已為 msdb 數(shù)據(jù)庫啟用 Service Broker。

              SELECT  is_broker_enabled
    
    FROM    sys.databases
    
    WHERE   name = N'msdb' ;
            


    有關(guān)啟用 Service Broker 的詳細(xì)信息,請參閱? ALTER DATABASE (Transact-SQL)

  2. 通過發(fā)送測試郵件驗證數(shù)據(jù)庫郵件是否正常運(yùn)行。有關(guān)詳細(xì)信息,請參閱 對數(shù)據(jù)庫郵件進(jìn)行故障排除

如果由于硬件故障而必須移動文件,則請執(zhí)行下列步驟,將文件重新定位到一個新位置。此過程適用于除 master 和 Resource 數(shù)據(jù)庫以外的所有系統(tǒng)數(shù)據(jù)庫。

?重要提示

如果數(shù)據(jù)庫無法啟動,即處于可疑模式下或處于未恢復(fù)狀態(tài),則只有 sysadmin 固定角色的成員才可以移動該文件。

  1. 如果啟動了 SQL Server 實(shí)例,則將其停止。

  2. 通過在命令提示符下輸入下列命令之一,在僅 master 恢復(fù)模式下啟動 SQL Server 實(shí)例。在這些命令中指定的參數(shù)區(qū)分大小寫。如果未按所示方式指定參數(shù),則命令會失敗。

    • 對于默認(rèn)的 (MSSQLSERVER) 實(shí)例,請運(yùn)行以下命令:

                            NET START MSSQLSERVER /f /T3608
      
      
                          
    • 對于命名實(shí)例,請運(yùn)行以下命令:

                            NET START MSSQL$instancename /f /T3608
      
      
                          

    有關(guān)詳細(xì)信息,請參閱 如何啟動 SQL Server 實(shí)例(net 命令)

  3. 對于要移動的每個文件,請使用? sqlcmd ?命令或 SQL Server Management Studio 運(yùn)行以下語句。

                      ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
    
                    

    有關(guān)使用? sqlcmd ?實(shí)用工具的詳細(xì)信息,請參閱 使用 sqlcmd 實(shí)用工具

  4. 退出? sqlcmd ?實(shí)用工具或 SQL Server Management Studio。

  5. 停止 SQL Server 實(shí)例。例如,運(yùn)行? NET STOP MSSQLSERVER

  6. 將文件移動到新位置。

  7. 重新啟動 SQL Server 實(shí)例。例如,運(yùn)行? NET START MSSQLSERVER

  8. 通過運(yùn)行以下查詢來驗證文件更改。

                      SELECT name, physical_name AS CurrentLocation, state_desc
    
    FROM sys.master_files
    
    WHERE database_id = DB_ID(N'<database_name>');
    
    
                    

若要移動 master 數(shù)據(jù)庫,請按下列步驟進(jìn)行操作。

  1. “開始” 菜單中,依次指向 “所有程序” Microsoft SQL Server ?和 “配置工具” ,再單擊? SQL Server 配置管理器

  2. “SQL Server 服務(wù)” 節(jié)點(diǎn)中,右鍵單擊 SQL Server 實(shí)例(如? SQL Server (MSSQLSERVER) ),并選擇 “屬性”

  3. “SQL Server ( 實(shí)例名 ) 屬性” 對話框中,單擊 “高級” 選項卡。

  4. 編輯 “引導(dǎo)參數(shù)” 值以指向 master 數(shù)據(jù)庫數(shù)據(jù)和日志文件的計劃位置,然后單擊 “確定” 。可以選擇移動錯誤日志文件。

    數(shù)據(jù)文件的參數(shù)值必須跟在? -d ?參數(shù)的后面,日志文件的參數(shù)值必須跟在? -l ?參數(shù)的后面。下面的示例顯示 master 數(shù)據(jù)和日志文件默認(rèn)位置的參數(shù)值。

                      -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\
    
    master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    
    LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    
    DATA\mastlog.ldf
    
    
                    

    如果 master 數(shù)據(jù)和日志文件預(yù)先安排的重定位是? E:\SQLData ,則參數(shù)值將更改為:

                      -dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf
    
    
                    
  5. 通過右鍵單擊實(shí)例名稱并選擇 “停止” ,停止 SQL Server 實(shí)例。

  6. 將 master.mdf 和 mastlog.ldf 文件移動到新位置。

  7. 重新啟動 SQL Server 實(shí)例。

  8. 通過運(yùn)行以下查詢,驗證 master 數(shù)據(jù)庫的文件更改。

                      SELECT name, physical_name AS CurrentLocation, state_desc
    
    FROM sys.master_files
    
    WHERE database_id = DB_ID('master');
    
    GO
    
    
                    

Resource 數(shù)據(jù)庫的位置為 < drive >:\Program Files\Microsoft SQL Server\MSSQL10_50.< instance_name >\MSSQL\Binn\。無法移動該數(shù)據(jù)庫。

A. 移動 tempdb 數(shù)據(jù)庫

下面的示例將? tempdb ?數(shù)據(jù)和日志文件移動到一個新位置,作為預(yù)先安排的重定位的一部分。

注意

由于每次啟動 SQL Server 實(shí)例時都將重新創(chuàng)建 tempdb,所以不必實(shí)際移動數(shù)據(jù)和日志文件。在步驟 3 中重新啟動服務(wù)時,將在新位置中創(chuàng)建這些文件。在重新啟動服務(wù)之前,tempdb 將繼續(xù)使用現(xiàn)有位置中的數(shù)據(jù)和日志文件。

  1. 確定? tempdb ?數(shù)據(jù)庫的邏輯文件名稱以及在磁盤上的當(dāng)前位置。

                        SELECT name, physical_name AS CurrentLocation
    
    FROM sys.master_files
    
    WHERE database_id = DB_ID(N'tempdb');
    
    GO
    
    
                      
  2. 使用? ALTER DATABASE ?更改每個文件的位置。

                        USE master;
    
    GO
    
    ALTER DATABASE tempdb 
    
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
    
    GO
    
    ALTER DATABASE tempdb 
    
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
    
    GO
    
    
                      
  3. 停止再重新啟動 SQL Server 的實(shí)例。

  4. 驗證文件更改。

                        SELECT name, physical_name AS CurrentLocation, state_desc
    
    FROM sys.master_files
    
    WHERE database_id = DB_ID(N'tempdb');
    
    
                      
  5. 將? tempdb.mdf ?和? templog.ldf ?文件從其原始位置刪除。



    在 SQL Server 中,通過在? ALTER DATABASE ?語句的 FILENAME 子句中指定新的文件位置,可以將用戶數(shù)據(jù)庫中的數(shù)據(jù)、日志和全文目錄文件移動到新位置。此方法適用于在同一 SQL Server 實(shí)例中移動數(shù)據(jù)庫文件。若要將數(shù)據(jù)庫移動到另一個 SQL Server 實(shí)例或另一臺服務(wù)器上,請使用 備份和還原 分離和附加操作

    注意

    SQL Server 數(shù)據(jù)庫引擎的某些功能改變了數(shù)據(jù)庫引擎在數(shù)據(jù)庫文件中存儲信息的方式。這些功能僅限于特定的 SQL Server 版本。不能將包含這些功能的數(shù)據(jù)庫移到不支持這些功能的 SQL Server 版本。使用 sys.dm_db_persisted_sku_features 動態(tài)管理視圖可列出當(dāng)前數(shù)據(jù)庫中啟用的所有特定于版本的功能。

    本主題中的過程需要數(shù)據(jù)庫文件的邏輯名稱。若要獲取該名稱,請在? sys.master_files ?目錄視圖中查詢名稱列。

    注意

    將數(shù)據(jù)庫移動到另一個服務(wù)器實(shí)例上時,若要為用戶和應(yīng)用程序提供一致的體驗,您可能需要為數(shù)據(jù)庫重新創(chuàng)建部分或全部元數(shù)據(jù)。有關(guān)詳細(xì)信息,請參閱 當(dāng)數(shù)據(jù)庫在其他服務(wù)器實(shí)例上可用時管理元數(shù)據(jù)

    若要將移動數(shù)據(jù)或日志文件作為計劃的重定位的一部分,請執(zhí)行下列步驟:

    1. 運(yùn)行以下語句。

                            ALTER DATABASE database_name SET OFFLINE ;
                          


    2. 將文件移動到新位置。

    3. 對于已移動的每個文件,請運(yùn)行以下語句。

                            ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' ) ;
                          


    4. 運(yùn)行以下語句。

                                  
                                    ALTER DATABASE database_name SET ONLINE ;
                                  
    5. 通過運(yùn)行以下查詢來驗證文件更改。

                                  
                                    SELECT  name ,
      
              physical_name AS CurrentLocation ,
      
              state_desc
      
      FROM    sys.master_files
      
      WHERE   database_id = DB_ID(N'<database_name>') ;
                                  

    若要將重定位文件作為計劃的磁盤維護(hù)過程的一部分,請執(zhí)行下列步驟:

    1. 對于要移動的每個文件,請運(yùn)行以下語句。

                                  ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
      
      
                                
    2. 停止 SQL Server 實(shí)例或關(guān)閉系統(tǒng)以執(zhí)行維護(hù)。有關(guān)詳細(xì)信息,請參閱 停止服務(wù)

    3. 將文件移動到新位置。

    4. 重新啟動 SQL Server 實(shí)例或服務(wù)器。有關(guān)詳細(xì)信息,請參閱 啟動和重新啟動服務(wù)

    5. 通過運(yùn)行以下查詢來驗證文件更改。

                                  
                                    SELECT  name ,
      
              physical_name AS CurrentLocation ,
      
              state_desc
      
      FROM    sys.master_files
      
      WHERE   database_id = DB_ID(N'<database_name>') ;
                                  

    如果由于硬件故障而必須移動文件,則請執(zhí)行下列步驟,將文件重新定位到一個新位置。

    ?重要提示

    如果數(shù)據(jù)庫無法啟動,即處于可疑模式下或處于未恢復(fù)狀態(tài),則只有 sysadmin 固定角色的成員才可以移動該文件。

    1. 如果啟動了 SQL Server 實(shí)例,則將其停止。

    2. 通過在命令提示符下輸入下列命令之一,在僅 master 恢復(fù)模式下啟動 SQL Server 實(shí)例。

      • 對于默認(rèn)的 (MSSQLSERVER) 實(shí)例,請運(yùn)行以下命令。

                                  NET START MSSQLSERVER /f /T3608
                                


      • 對于命名實(shí)例,請運(yùn)行以下命令。

                                        NET START MSSQL$instancename /f /T3608
        
        
                                      

      有關(guān)詳細(xì)信息,請參閱 如何啟動 SQL Server 實(shí)例(net 命令)

    3. 對于要移動的每個文件,請使用? sqlcmd ?命令或 SQL Server Management Studio 運(yùn)行以下語句。

                                  ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
      
      
                                

      有關(guān)如何使用? sqlcmd ?實(shí)用工具的詳細(xì)信息,請參閱 使用 sqlcmd 實(shí)用工具

    4. 退出? sqlcmd ?實(shí)用工具或 SQL Server Management Studio。

    5. 停止 SQL Server 實(shí)例。

    6. 將文件移動到新位置。

    7. 啟動 SQL Server 實(shí)例。例如,運(yùn)行? NET START MSSQLSERVER

    8. 通過運(yùn)行以下查詢來驗證文件更改。SELECT name, physical_name AS CurrentLocation, state_desc

                                  FROM sys.master_files
      
      WHERE database_id = DB_ID(N'<database_name>');
      
      
                                

    若要移動全文目錄,請執(zhí)行下列步驟。請注意,指定新的目錄位置時,只指定? new_path ,而不是指定? new_path/os_file_name

    1. 運(yùn)行以下語句。

                                  ALTER DATABASE database_name SET OFFLINE
      
      
                                
    2. 將全文目錄移動到新位置。

    3. 運(yùn)行下列語句,其中: logical _ name ?是? sys.database_files ?中 name 列的值, new _ path ?是目錄的新位置。

                                  ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path');
      
      
                                
    4. 運(yùn)行以下語句。

                                  ALTER DATABASE database_name SET ONLINE;
      
      
                                

    另外,也可以使用 CREATE DATABASE 語句的 FOR ATTACH 子句移動全文目錄。下面的示例在 AdventureWorks2008R2 數(shù)據(jù)庫中創(chuàng)建一個全文目錄。若要將全文目錄移動到新位置,請分離 AdventureWorks2008R2 數(shù)據(jù)庫,并將全文目錄從物理意義上移動到新位置。然后附加數(shù)據(jù)庫,并指定全文目錄的新位置。

                            
                              USE AdventureWorks2008R2 ;
    
    CREATE FULLTEXT CATALOG AdvWksFtCat AS DEFAULT ;
    
    GO
    
    USE master ;
    
    GO
    
    --Detach the AdventureWorks2008R2 database.
    
    sp_detach_db AdventureWorks2008R2 ;
    
    GO
    
    --Physically move the full-text catalog to the new location.
    
    --Attach the AdventureWorks2008R2 database and specify the new location of the full-text catalog.
    
    CREATE DATABASE AdventureWorks2008R2 ON 
    
        (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf'), 
    
        (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf'),
    
        (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat') FOR ATTACH ;
    
    GO
                            

    下面的示例將 AdventureWorks2008R2 日志文件移動到一個新位置,作為計劃的重定位的一部分。

                            
                              USE master ;
    
    GO
    
    -- Return the logical file name.
    
    SELECT  name ,
    
            physical_name AS CurrentLocation ,
    
            state_desc
    
    FROM    sys.master_files
    
    WHERE   database_id = DB_ID(N'AdventureWorks2008R2')
    
            AND type_desc = N'LOG' ;
    
    GO
    
    ALTER DATABASE AdventureWorks2008R2 SET OFFLINE ;
    
    GO
    
    -- Physically move the file to a new location.
    
    -- In the following statement, modify the path specified in FILENAME to
    
    -- the new location of the file on your server.
    
    ALTER DATABASE AdventureWorks2008R2 
    
    MODIFY FILE ( NAME = AdventureWorks2008R2_Log, 
    
    FILENAME = 'C:\NewLoc\AdventureWorks2008R2_Log.ldf') ;
    
    GO
    
    ALTER DATABASE AdventureWorks2008R2 SET ONLINE ;
    
    GO
    
    --Verify the new location.
    
    SELECT  name ,
    
            physical_name AS CurrentLocation ,
    
            state_desc
    
    FROM    sys.master_files
    
    WHERE   database_id = DB_ID(N'AdventureWorks2008R2')
    
            AND type_desc = N'LOG' ;
                            


SQL Server 移動數(shù)據(jù)庫


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 台东县| 茶陵县| 阿拉善盟| 平远县| 湘潭市| 天柱县| 麟游县| 英吉沙县| 神池县| 乐安县| 巨鹿县| 西青区| 铜山县| 上杭县| 中阳县| 扶沟县| 浙江省| 海南省| 肥城市| 贵溪市| 永宁县| 乌鲁木齐市| 怀集县| 荣昌县| 射阳县| 乌恰县| 永兴县| 特克斯县| 聂拉木县| 客服| 定陶县| 松潘县| 万荣县| 新邵县| 连平县| 乡宁县| 类乌齐县| 青岛市| 呼伦贝尔市| 中卫市| 武胜县|