2012-09-05 3 views
1

SQL Server 2005에 MyStaging이라는 데이터베이스가 있고 MyStaging_bk라는 빈 복사본을 만들었습니다. Backup MyStaging으로 이동 한 다음 MyStaging_bk로 복원하려고했습니다. 그러나 백업 세트가 다르므로 복원 할 수 없다고 말합니다.다른 데이터베이스에 SQL Server 데이터베이스 복사

db를 복사하는 방법과 데이터베이스가 동일한 데이터베이스 서버에 있습니까?

답변

3

상위 수준의 사용자와 함께 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' 

갱신 1 :

별도로 각 블록을 실행하거나 각 블록에 go 키워드를 추가해야합니다.

UPDATE2 : 백업 데이터베이스에서

내 여기 나쁜의 newdatabase 얻을 모든 사용자.

+0

@chris 마지막 업데이트를 참조하십시오. – lolol

관련 문제