2014-05-22 3 views
0

저는 sqlserver에서 데이터베이스를 복사하는 여러 가지 방법을 살펴 보는 데 바쁜 시간을 보냈습니다. 주제에 대한 다양한 질문과 답변이 있지만 그 중 어느 것도 내 시나리오에 맞지 않는 것 같습니다.SQL 서버에서 데이터베이스 복사

기본적으로 내가하려는 것은 특정 상태 (스키마 + 데이터 데이터)로 데이터베이스를 설정하는 것입니다. 내가 선택한 모든 방법으로 - 응용 프로그램에서 쓰레기를 치고 삽입물 등을 작성하는 것이 좋습니다. 상태로 사용할 수있는 해당 데이터베이스 복사본을 보존하려면 특정 테스트 집합이/require와 관련하여 실행된다는 것을 의미합니다. 나는 이것을 추출 할 때 일어났던 것뿐만 아니라 어떤 데이터베이스 이름에도 이것을 놓을 수 있어야한다. 빌드 서버의 명령 줄에서이 작업이 필요합니다. 다른 곳

outputFile = "something.IDontCareWhatExtension" 
databaseName = "aDatabase" 
SaveDatabase(databaseName, outputFile) 

과 :

이상적으로 나는 같은 것을 할 수 있도록하고 싶습니다

inputFile = "theFilename" 
databaseName = "somethingOtherDatabase" 
Load(databaseName, inputFile); 

그것은 큰 질문처럼 보일 나던! 나는 imp + exp로 oracle에서 비슷한 것을 해왔고 기본적으로 내가 원하는 것을 수행한다.

지금까지 SMO.net 라이브러리를 사용해 보았습니다. 이것은 데이터베이스를 오른쪽 클릭 => 작업 => 스크립트를 생성 할 때 SSMS의 내부에서 사용되는 것입니다. 이것들은 근본적으로 당신이 예상했던 것처럼 작동하지 않으며 제약 같은 것들을 얻으려면 놀랄만한 양의 프로그래밍 노력을 필요로합니다. 이 접근법에 더 많은 시간을 들여 놓기 전에 나는 백업과 복구에 대해 좀 더 자세하게 살펴볼 것이라고 생각했지만 백업과 복원을 위해 준비된 것으로 보인다. 예를 들면, 그들은 당신이 백업을 설치할 데이터베이스를 알려주지 않는 것 같습니다.

도와주세요. 분명히 그렇게하기가 어렵지 않을 것입니다!

내가 생각할 수있는 유일한 다른 점은 다른 접근 방식을 사용하고 대신 데이터베이스 설치 스크립트를 작성해야한다는 것입니다. 여기서 특정 버전의 스키마를 생성 한 다음 공예품에 삽입 문을로드해야합니다. 그렇게하면 버그를 재현하기 위해 서버에서 클라이언트 데이터를 가져 오는 것을 막을 수 있습니다.

+0

HM 때문에 문제가 복원 된 데이터베이스가 항상 백업 한 하나의 동일한 이름을 가지고 있다는 것입니다 쪽으로? 복원 후 간단하게 이름을 바꾸지 않습니까? – DrCopyPaste

+0

db를 백업하고 복원하는 저장 프로 시저를 작성할 수 있습니다. 그런 다음 콘솔 앱에서 호출합니다. 그걸 들여다 봤니? –

+0

@DrCopyPaste 당신이 자세히 설명해 주시겠습니까? –

답변

1

원하는 특정 상태로 데이터베이스를 백업 한 다음 테스트를 위해 해당 백업을 복원 할 수 있습니다.

BACKUP DATABASE [ReadyForTesting] TO DISK = N'C:\Temp\Backup.bak' WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N'ReadyForTesting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO 

그런 다음 복원, 그냥 복사 또는 복제 할 다른 이름을 지정

USE [master] 
RESTORE DATABASE [Restored_Copy] FROM DISK = N'C:\Temp\Backup.bak' WITH FILE = 1, MOVE N'dbfile' TO N'C:\MDFPath\Filename.mdf', MOVE N'LogFile' TO N'C:\LogPath\Filename_log.LDF', NOUNLOAD, STATS = 5 

GO 
+0

데이터베이스 백업 및 복원을 실행하기위한 구문을 찾고 있습니까? –

+0

N'dbfile 이동 '으로 이동해야하는 값은 무엇입니까? 구문 오류가 발생합니다. 나는 이것이 처음에 상수라고 생각했다. –

+1

첫 번째는 논리 이름이고 두 번째는 경로와 파일 이름입니다. mdf에 대한 이동 하나, ldf에 대한 이동 하나, 그리고 임의의 ndf 파일에 대한 추가 이동이 필요합니다. SSMS에서 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동 한 다음 파일 탭을 보면이 정보를 찾을 수 있습니다. –

관련 문제