亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL Server 移動數據庫

系統 2209 0
原文: SQL Server 移動數據庫

移動系統數據庫在下列情況下可能很有用:

  • 故障恢復。例如,數據庫處于可疑模式下或因硬件故障而關閉。

  • 計劃的重定位。

  • 為預定的磁盤維護操作而進行的重定位。

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

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

?

預先安排的重定位與預定的磁盤維護過程

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

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

                    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
    
                  
  2. 停止 SQL Server 實例或關閉系統以執行維護。有關詳細信息,請參閱 停止服務

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

  4. 重新啟動 SQL Server 實例或服務器。有關詳細信息,請參閱 啟動和重新啟動服務

  5. 通過運行以下查詢來驗證文件更改。

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


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

  1. 通過運行以下查詢,驗證是否已為 msdb 數據庫啟用 Service Broker。

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


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

  2. 通過發送測試郵件驗證數據庫郵件是否正常運行。有關詳細信息,請參閱 對數據庫郵件進行故障排除

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

?重要提示

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

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

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

    • 對于默認的 (MSSQLSERVER) 實例,請運行以下命令:

                            NET START MSSQLSERVER /f /T3608
      
      
                          
    • 對于命名實例,請運行以下命令:

                            NET START MSSQL$instancename /f /T3608
      
      
                          

    有關詳細信息,請參閱 如何啟動 SQL Server 實例(net 命令)

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

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

    有關使用? sqlcmd ?實用工具的詳細信息,請參閱 使用 sqlcmd 實用工具

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

  5. 停止 SQL Server 實例。例如,運行? NET STOP MSSQLSERVER

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

  7. 重新啟動 SQL Server 實例。例如,運行? NET START MSSQLSERVER

  8. 通過運行以下查詢來驗證文件更改。

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

若要移動 master 數據庫,請按下列步驟進行操作。

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

  2. “SQL Server 服務” 節點中,右鍵單擊 SQL Server 實例(如? SQL Server (MSSQLSERVER) ),并選擇 “屬性”

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

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

    數據文件的參數值必須跟在? -d ?參數的后面,日志文件的參數值必須跟在? -l ?參數的后面。下面的示例顯示 master 數據和日志文件默認位置的參數值。

                      -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 數據和日志文件預先安排的重定位是? E:\SQLData ,則參數值將更改為:

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

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

  7. 重新啟動 SQL Server 實例。

  8. 通過運行以下查詢,驗證 master 數據庫的文件更改。

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

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

A. 移動 tempdb 數據庫

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

注意

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

  1. 確定? tempdb ?數據庫的邏輯文件名稱以及在磁盤上的當前位置。

                        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 的實例。

  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 子句中指定新的文件位置,可以將用戶數據庫中的數據、日志和全文目錄文件移動到新位置。此方法適用于在同一 SQL Server 實例中移動數據庫文件。若要將數據庫移動到另一個 SQL Server 實例或另一臺服務器上,請使用 備份和還原 分離和附加操作

    注意

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

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

    注意

    將數據庫移動到另一個服務器實例上時,若要為用戶和應用程序提供一致的體驗,您可能需要為數據庫重新創建部分或全部元數據。有關詳細信息,請參閱 當數據庫在其他服務器實例上可用時管理元數據

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

    1. 運行以下語句。

                            ALTER DATABASE database_name SET OFFLINE ;
                          


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

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

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


    4. 運行以下語句。

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

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

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

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

                                  ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );
      
      
                                
    2. 停止 SQL Server 實例或關閉系統以執行維護。有關詳細信息,請參閱 停止服務

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

    4. 重新啟動 SQL Server 實例或服務器。有關詳細信息,請參閱 啟動和重新啟動服務

    5. 通過運行以下查詢來驗證文件更改。

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

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

    ?重要提示

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

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

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

      • 對于默認的 (MSSQLSERVER) 實例,請運行以下命令。

                                  NET START MSSQLSERVER /f /T3608
                                


      • 對于命名實例,請運行以下命令。

                                        NET START MSSQL$instancename /f /T3608
        
        
                                      

      有關詳細信息,請參閱 如何啟動 SQL Server 實例(net 命令)

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

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

      有關如何使用? sqlcmd ?實用工具的詳細信息,請參閱 使用 sqlcmd 實用工具

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

    5. 停止 SQL Server 實例。

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

    7. 啟動 SQL Server 實例。例如,運行? NET START MSSQLSERVER

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

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

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

    1. 運行以下語句。

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

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

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

                                  ALTER DATABASE database_name SET ONLINE;
      
      
                                

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

                            
                              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 移動數據庫


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品香蕉成人网在线观看 | 国产不卡视频在线 | 亚洲性片| 韩国一级理黄论片 | 91视频a| 久久精品视频2 | 99热成人 | 伊人精品视频在线 | 日日摸夜夜添夜夜添一区二区 | 久久午夜青青草原影院 | 亚洲综合另类 | 日韩欧国产精品一区综合无码 | 久久久久国产精品四虎 | 综合久久精品 | 日本一级毛片免费播放 | 99爱在线精品视频免费观看9 | 国产福利区一区二在线观看 | 日本伊人 | 成人国内精品久久久久影院 | 亚洲欧美日韩综合二区三区 | 热久久在线 | 欧美在线日韩在线 | 5060午夜一级毛片免费观看 | 国产亚洲欧美ai在线看片 | 久久九九免费视频 | 亚洲欧美日韩精品 | 亚洲欧美一区二区久久 | 久久日韩精品中文字幕网 | 亚洲国产人成在线观看69网站 | 91亚洲免费视频 | 日韩欧美手机在线 | 亚洲综合视频在线 | 欧美成年黄网站色高清视频 | 国产成人久久精品激情91 | 一级爱爱 | 亚洲免费视频网址 | 青青在线成人免费视频 | 欧美亚洲综合图区在线 | 特级女人十八毛片a级 | 亚洲精品午夜久久久伊人 | 人成午夜欧美大片免费视频 |