2017-09-19 22 views
1

나는 원칙적으로 파일 스트림 데이터를 가지고있는 데이터베이스에서 mdf 및 ldf 파일을 가지고있다. 내가 관계형 테이블과 파일 스트림 폴더에만 관련된 문제를 디버깅해야하기 때문에파일 스트림 정보를 무시하고 mdf 파일을 첨부하는 방법은 무엇입니까?

내가 단지 MDF와 LDF 어떻게 든 건너 뛰는 파일 스트림 이것은

에서 DB를 부착 할 수있는 방법이 있는지 궁금 너무 큰 this question에서 가져온 전형적인 첨부 쿼리

USE [master] 
GO 
CREATE DATABASE [AdventureWorks2008] ON 
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLTRAININGKIT\MSSQL\DATA\AdventureWorks2008_Data.mdf'), 
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLTRAININGKIT\MSSQL\DATA\AdventureWorks2008_Log.ldf'), 
FILEGROUP [PRIMARY] CONTAINS FILESTREAM DEFAULT 
(NAME = N'Documents', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLTRAININGKIT\MSSQL\DATA\Documents') 
FOR ATTACH 
GO 

내가 어떻게 할 수있는 파일 스트림 데이터를 가지고 있지 않기 때문에?

답변

1

내가 아는 한 첨부 할 때이 작업을 수행 할 방법이 없다는 것입니다 (첨부는 모든 파일이 있어야하기 때문에). 또한 this answer을보십시오.

하지만 대안이 있습니다. 데이터베이스가 전체 복구 모드에 있으면 파일 스트림 그룹없이 부분 백업을 수행 할 수 있습니다. 그러면 해당 백업에서 복원 할 수 있으며 누락 된 파일 그룹은 오프라인 모드로 액세스 할 수 없게됩니다. 누락 된 파일 그룹에서 개체를 사용하려고하는 쿼리는 실패합니다.

샘플 명령 :

BACKUP DATABASE [Demo] 
FILEGROUP = N'PRIMARY' 
TO DISK = N'.\MSSQL\Backup\Demo.bak' 
WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N'Demo-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO 

RESTORE DATABASE [OtherDatabase] 
FILE = N'Demo' FROM DISK = N'.\MSSQL\Backup\Demo.bak' WITH FILE = 1, 
MOVE N'Demo' TO N'.\MSSQL\DATA\OtherDatabase.mdf', 
MOVE N'Demo_log' TO N'.\MSSQL\DATA\OtherDatabase_Log.ldf', 
MOVE N'FStream' TO N'.\MSSQL\DATA\OtherDatabase_Documents', NOUNLOAD, STATS = 10 
GO 

편집 :

일부 추가 유용한 링크

이 백업에 관한 및 복원 파일/파일 그룹 :

EDIT 2 :

데이터베이스가 단순 복구 모드이고 특정 파일 그룹 만 백업하려면 다른 모든 파일 그룹을 읽기 전용으로 설정해야합니다. 그런 다음 READ_WRITE_FILEGROUPS를 사용하여 R/W 파일 그룹 만 백업 할 수 있습니다.

샘플 명령 : 내가 너무 READ_WRITE_FILEGROUPS를 추가하는 데 필요한 백업을 수행 할 수있는 답변을

USE [master] 
GO 
ALTER DATABASE [Demo] MODIFY FILEGROUP [FilestreamGroup] READONLY 
GO 

BACKUP DATABASE [Demo] READ_WRITE_FILEGROUPS TO DISK = N'.\MSSQL\Backup\EFCoreDemo.bak' 
WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N'Demo-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 
GO 

ALTER DATABASE [Demo] MODIFY FILEGROUP [FilestreamGroup] READ_WRITE 
GO 

RESTORE DATABASE [OtherDatabase] 
FILE = N'Demo' FROM DISK = N'.\MSSQL\Backup\EFCoreDemo.bak' WITH FILE = 1, 
MOVE N'Demo' TO N'.\MSSQL\DATA\OtherDatabase.mdf', 
MOVE N'Demo_log' TO N'.\MSSQL\DATA\OtherDatabase_Log.ldf', 
MOVE N'FStream' TO N'.\MSSQL\DATA\OtherDatabase_Documents', NOUNLOAD, STATS = 10 
GO 
+0

감사합니다. 또한 복원에 "데이터베이스가 간단한 복구 모델을 사용하고 있습니다. 그것은 읽기 - 쓰기 데이터의 하위 집합을 복원 할 수 없습니다.", 전체 복구 모드로 변경하려면 itried지만 오류가 지속 .. 어떤 생각? – LaBracca

+0

나는이 질문을 너무 많이 제기했다. https://stackoverflow.com/questions/46324380/is-it-possible-to-create-a-dummy-filestream-filegroup-to-study-mdf-content-only – LaBracca

+0

백업하기 전에 , 데이터베이스는 전체 복구 모드 여야합니다. READ_WRITE_FILEGROUPS를 지정하지 않습니다 (단순 복구 모드에서만 필요하지만 filestream 그룹이 R/W 인 경우 원하는 작업을 수행하지 않습니다). 부분 백업을 완료하면 모든 파일을 나열하여 새 데이터베이스로 복원합니다. 복원은 성공하지만 파일 스트림 그룹이 존재하지 않아 오프라인 상태가됩니다. 게시 관련 링크를 추가했습니다. – nejcs