2013-01-14 62 views
0

我想將數據庫A完全複製到數據庫B(同一個SQL Server) - 最簡單的SQL或實用程序命令是什麼? (數據庫B應該在複製之前被100%擦除)如何將整個數據庫複製到另一臺服務器上?

請注意,它可以是非SQL的東西,但無論如何我需要將它作爲一次單擊來運行它。因此,只要點擊一下鼠標或從命令行運行復制,一些實用程序也可以接受。

的SQL Server 2008 R2或2012年

最佳阿斯卡爾

+4

我通常只是備份和恢復到一個新位置。我確定你可以寫一個命令行來做到這一點。 – DavidB

+1

你需要考慮很多事情的額頭,就像你仍然希望數據庫A可以在你的副本中訪問,如果是的話如何處理變化,以確保它們是100%相同的。數據庫有多大,備份恢復速度會更快還是更簡單,插入更快,甚至是複製? –

+0

有沒有版本** 2010年**的SQL Server - 你有2005年,2008年,2008年R2或2012年.... –

回答

0

我做了基於大衛的想法一soultion。它看起來像這樣(PROD - 源DB,演示 - 目的地複製)

DECLARE @backup varchar(300) = 'e:\Prod.bak'; 
DECLARE @logic_db_file varchar(300) = 'koe'; 
DECLARE @logic_log_file varchar(300) = 'koe_log'; 
DECLARE @out_db_file varchar(300) = 'c:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Demo.mdf'; 
DECLARE @out_log_file varchar(300) = 'c:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Demo_log.ldf'; 

PRINT N'Backing up Production database.' 
BACKUP DATABASE Prod 
    TO DISK = @backup WITH FORMAT; 


PRINT N'Restoring FILELISTONLY, see log file for data.' 
-- Restore the files to Demo 
RESTORE FILELISTONLY 
    FROM DISK = @backup 

PRINT N'Getting exclusive access to Demo' 
Alter database Demo set single_user with rollback immediate 
drop database Demo 



PRINT N'Restoring backup to Test database' 
RESTORE DATABASE Demo 
    FROM DISK = @backup 
    WITH REPLACE, 
    MOVE @logic_db_file TO @out_db_file, 
    MOVE @logic_log_file TO @out_log_file 
GO 

    -- if you want you can do some SQL fixes to newly made DB 

    PRINT N'Changing normal users to demo users, if account type is OK' 

    USE Demo; 
    UPDATE USER_ACCOUNTS SET ACCOUNT_TYPE=3 WHERE (STATUS=1) AND (ACCOUNT_TYPE=1); 
    GO  
相關問題