2010-08-02 4 views
0

새 데이터베이스를 작성하고 내가 일반적으로 할 백업에서 그것을 채우려면 :파일 스트림 데이터를 포함하는 SQL Server 백업을 복원하여 파일 스트림 데이터의 새 폴더 이름을 할당하는 방법은 무엇입니까?

CREATE DATABASE MyDatabase -- I create an empty database 

-- I retrieve the filepath of mdf and ldf files 
DECLARE @FileData varchar(1000) 
DECLARE @FileLog varchar(1000) 

set @FileData = (select filename from MyDatabase.dbo.sysfiles where fileid = 1) 
set @FileLog = (select filename from MyDatabase.dbo.sysfiles where fileid = 2) 

-- I Restore the database from backup by substituting the mdf and ldf files 
RESTORE DATABASE MyDatabase 
FROM DISK = 'c:\Test\Test.bak' 
WITH REPLACE, 
MOVE 'MyApp_Data' TO @FileData, -- I forced the name to be MyApp_Data for simplicity 
MOVE 'MyApp_Log' TO @FileLog -- I forced the name to be MyApp_Log for simplicity 

방법 너무 FILESTREAM 데이터에 대해 동일한 작업을 수행하는? 파일 스트림 데이터를 만들기 위해 폴더를 강제로 만들거나 수동으로 만들어야합니까?

내 접근 방식에 대해 의견을 말씀해 주시겠습니까?

답변

2

필자는 파일 스트림 데이터에도 MOVE 옵션을 사용할 수 있다고 생각합니다. 다음 명령을 실행하여 백업 파일의 파일 목록을 볼 수 있습니다. 이렇게하면 파일 스트림 파일을 식별하는 데 도움이됩니다.

RESTORE FILELISTONLY 
FROM DISK = 'c:\Test\Test.bak' 

귀하의 전반적인 접근 방식에 관해서는 귀하가해야 할 일보다 더 많이 할 수 있다고 생각합니다. 백업을 복원하기 전에 데이터베이스를 작성할 필요가 없습니다. RESTORE 명령은 DB 작성 단계를 처리합니다.

따라서 RESTORE 명령은 REPLACE 옵션을 제외 할 수 있다는 것을 제외하고는 사용하는 것과 동일합니다. MOVE 옵션에서 대상 파일 정보를 지정할 수 있습니다.

+0

임시 테이블에 "restore filelistonly ..."에 의해 반환 된 데이터를 삽입하여 질문에 설명 된 방법을 사용하지 않아도되는 방법을 제안 할 수 있습니까? select * from #TempTable from (DISSTART = 'c : \ Test \ Test.bak') (이 경우 복구되지 않습니다. FROM DISK = 'c : \ Test \ Test.bak') -이 작업을 수행 할 수 없기 때문에 T- SQL (= 복원 쿼리에서) 임시 테이블에 포함 된 데이터? 어쨌든 나는 이것을 위해 헌신적 인 질문을 할 것이다. – LaBracca