[轉]SQL Server 2005 如何複製資料庫 :十一的部落:Xuite日誌
  • yan.kee
  • 文章分類
  • 最愛連結
  • 我的發燒文
  • 累積 | 今日
    loading......
  • 參觀人氣統計
  • 誰拜訪過我
  • BLOG玩意兒
  • 搜尋文章
  • 關鍵字
  • 最新文章
  • 最新回應
  • Re:只能在執行 Render() 的過程中調用 RegisterForEventValidation,by(11)於2008-07-03
    Re:[轉]自動清除7天以上的檔案 ,by(haoming)於2008-06-13
    Re:[kuso]尿布舞,by(11)於2008-05-18
    Re:[kuso]尿布舞,by(seth)於2008-05-18
    Re:C#中產生GUID,by(yankee)於2008-02-17
    Re:C#中產生GUID,by(jimmy)於2008-02-16
    Re:開發excel 問題討論串,by(11)於2008-02-02
    Re:Connection Strings 討論串,by(11)於2008-01-27
    Re:SQL 分頁,by(11)於2008-01-25
    Re:開發excel 問題討論串,by(11)於2008-01-16
  • 活動
  • 到台灣玩不帶走一張發票
    ===訪客來自===
    Locations of visitors to this page
  • 日誌使用資源






  • 如何使用RSS
    Powered by Xuite
  • 最新引用
  • 沒有新引用
  • 最愛日誌
  • 2008-05-20 20:22 [轉]SQL Server 2005 如何複製資料庫
  • ?
  • SQL
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


    T-SQL 程式如下:

    -- 宣告來源資料庫的名稱
    DECLARE @Source_DB nvarchar(256);
    -- 宣告來源資料庫的「資料邏輯名稱」
    DECLARE @Source_DB_LogicalName_Dat nvarchar(256);
    -- 宣告來源資料庫的「紀錄邏輯名稱」
    DECLARE @Source_DB_LogicalName_Log nvarchar(256);

    -- 宣告目的地的資料庫的名稱
    DECLARE @Target_DB nvarchar(256);

    -- 取得資料庫本機的 DATA 資料目錄
    DECLARE @data_path nvarchar(256);
    DECLARE @data_file_mdf nvarchar(256);
    DECLARE @data_file_ldf nvarchar(256);
    SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                      FROM master.sys.master_files
                      WHERE database_id = 1 AND file_id = 1);

    -- 取得資料庫本機的 Backup 資料目錄
    DECLARE @backup_path nvarchar(256);
    DECLARE @backup_file nvarchar(256);
    SET @backup_path = (SELECT SUBSTRING(SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1), 1, CHARINDEX(N'\DATA\', LOWER(physical_name)) - 1) + '\Backup\'
                      FROM master.sys.master_files
                      WHERE database_id = 1 AND file_id = 1);
    ----------------
    -- 參數設定區 --
    ----------------
    SET @Source_DB = 'MyDB';
    SET @Source_DB_LogicalName_Dat = @Source_DB
    SET @Source_DB_LogicalName_Log = @Source_DB + '_log';
    SET @Target_DB = 'MyDB_TEMP';

    SET @backup_file = @backup_path + @Source_DB + '.bak';

    SET @data_file_mdf = @data_path + @Target_DB + '.mdf';
    SET @data_file_ldf = @data_path + @Target_DB + '_log.ldf';

    -- 先將 @Source_DB 資料庫備份至 Backup 資料夾
    BACKUP DATABASE @Source_DB
       TO DISK=@backup_file;

    -- 最後將傳回的資料記錄檔還原到 @Target_DB 資料庫
    RESTORE DATABASE @Target_DB
       FROM DISK=@backup_file
       WITH MOVE @Source_DB_LogicalName_Dat TO @data_file_mdf,
       MOVE @Source_DB_LogicalName_Log TO @data_file_ldf;
    GO

     

    ======================================

    使用說明:

    • 基本上只需要修改「參數設定區」的 @Source_DB 與 @Target_DB 即可成功複製資料庫。
      @Source_DB : 來源資料庫
      @Target_DB : 目的資料庫 ( 即新的資料庫 )
    • 如果你原本的資料庫邏輯名稱不是預設的話,你要自己修改 @Source_DB_LogicalName_Dat 與 @Source_DB_LogicalName_Log 參數。
    • 如果你的資料庫中已經有 @Target_DB 所定義的這個資料庫名稱的話,所有資料都會被 @Source_DB 資料庫中的資料直接覆蓋掉喔!!


    yan.kee / Xuite日誌 / 回應(0) / 引用(0) / 好文轉寄
  • 回應