1
我有一個名爲MyStaging的SQL Server 2005中的數據庫,並且我創建了一個名爲MyStaging_bk的空白數據庫。我去了備份MyStaging,然後嘗試恢復到MyStaging_bk。但它說我無法恢復,因爲備份集是不同的。將SQL Server數據庫複製到另一個數據庫
如何複製數據庫和它們在同一個數據庫服務器上?
我有一個名爲MyStaging的SQL Server 2005中的數據庫,並且我創建了一個名爲MyStaging_bk的空白數據庫。我去了備份MyStaging,然後嘗試恢復到MyStaging_bk。但它說我無法恢復,因爲備份集是不同的。將SQL Server數據庫複製到另一個數據庫
如何複製數據庫和它們在同一個數據庫服務器上?
我在考慮你可以用高級用戶登錄sql server。
-- go for master
use master
-- backup the old database
backup database olddatabasename
to disk = 'c:\backup.bak'
-- create a new database
create database newdatabasename
on
(
name = newdatabasenamedata,
filename = 'c:\newdatabasenamedata.mdf',
size = 500mb,
maxsize = unlimited,
filegrowth = 25mb
)
log on
(
name = newdatabasenamelog,
filename = 'c:\newdatabasenamelog.ldf',
size = 5mb,
filegrowth = 5mb
)
-- put it in single user mode
alter database newdatabasename
set single_user
with rollback immediate
-- get the backup logical names and write it down
restore filelistonly
from disk = 'c:\backup.bak'
-- restore the database from the backup using the logical names
restore database newdatabasename
from disk = 'c:\backup.bak'
with
move 'olddatabasenamelogicalnamedata' to 'c:\newdatabasenamedata.mdf',
move 'olddatabasenamelogicalnamelog' to 'c:\newdatabasenamelog.ldf',
replace
-- rename the logical names if you want (do it =p)
alter database newdatabasename
modify file
(
name = 'olddatabasenamelogicalnamedata',
newname = 'newdatabasenamedata'
)
alter database newdatabasename
modify file
(
name = 'olddatabasenamelogicalnamelog',
newname = 'newdatabasenamelog'
)
我敢肯定,從備份還原數據庫會自動將它在多用戶,但:
alter database newdatabasename
set multi_user
的newdatabase沒有任何用戶添加到它。所以:
use newdatabasename
create user someuser from login anexistentloginname
sp_addrolemember 'db_owner', 'someuser'
sp_addrolemember 'db_datareader', 'someuser'
sp_addrolemember 'db_datawriter', 'someuser'
UPDATE1:
你必須單獨運行每個塊或每個塊添加go
關鍵字。
UPDATE2:
我的壞在這裏,newdatabase將得到所有從備份數據庫用戶。
@chris請看我最近的更新。 – lolol