2014-11-07 5 views
3

로컬 데이터베이스에서 MSSQL (2008R2 Data Center)의 FILESTREAM 기능을 실험 해 보았습니다. 실제 데이터베이스는 서버에서 실행 중입니다. 나는이 쿼리를 사용하여 설치를 전체 FILESTREAM 있습니다filestream 및 모든 첨부 파일을 제거하는 방법

/* CREATE FILESTREAM AND FILESTREAM TABLE */ 
USE [master] 
GO 
ALTER DATABASE SenONew 
ADD FILEGROUP [FileStream] 
CONTAINS FILESTREAM 
GO 
ALTER DATABASE SenONew 
ADD FILE 
(
NAME = 'fsSenONew', 
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf' 
) 
TO FILEGROUP [FileStream] 
GO 

USE [SenONew] 
GO 
CREATE TABLE Filestore(
    FileID int PRIMARY KEY, 
    RowID uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWSEQUENTIALID(), 
    FileDescr nvarchar(max), 
    FileIndex varbinary(max) FILESTREAM NULL) 
GO 

을 그리고 난 다음 몇 개의 파일을 추가을 삭제 실험을했다.

이제 실험용으로 만 제작되었으므로 나 역시 제거하고 싶습니다. 실제 서버에서 사용할 데이터베이스 개발을 위해 로컬 서버를 사용하고 있으므로 로컬 서버에 BackUp을 만들고 실제 서버에 복원하여 업데이트됩니다 (소프트웨어는 개발 중이며, 그래서 데이터베이스 구조는 데이터뿐만 아니라 많은 변화를 가져오고 소프트웨어가 테스트되고있는 실제 서버로 전체 복원을 수행해야합니다.

검색 시간이 지나면 내 문제에서 아무 것도 찾을 수 없습니다. 내가

그래서 제거 파일 그룹을 FILESTREAM

  • 의 파일을 제거해야

    1. 가 FILESTREAM 정보
    2. 를 저장하는 데이터베이스 테이블을 제거

      은 내가해야한다는 것을 이해 이 쿼리를 사용하여 처음부터 설정 한 모든 것을 제거합니다.

      /* DROP FILESTREAM TABLE AND FILEGROUP */ 
      USE SenONew 
      DROP TABLE Filestore 
      GO 
      
      ALTER DATABASE SenONew 
      REMOVE FILE fsSenONew 
      
      ALTER DATABASE SenONew 
      REMOVE FILEGROUP [FileStream] 
      GO 
      

      내가해야 할 모든 것을 다한다. 그러면 오류없이 완료된다. 그래서 난 내 파일 그룹, 파일 내 파일의 위치를 ​​입력 할 때, 나는 그들이 모두 완전히 제거 참조 :

      enter image description here enter image description here enter image description here

      하지만 (내 로컬 데이터베이스의 백업을 수행 할 때있는 삭제 된 FILESTREAM을 포함 , 파일 경로 및 파일 그룹)와 함께 서버를 복원하려고하면 오류가 발생합니다.

      enter image description here

      ,691 : 나는 다음과 같은 오류가

      /* CREATE RESTORE OF DATABASE WITHIN REAL SERVER CONNECTION */ 
      use master 
      alter database SenONew set offline with rollback immediate; 
      
      DECLARE @FileName2 nvarchar(250) 
      SELECT @FileName2 = (SELECT '' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK') 
      RESTORE DATABASE SenONew 
      FROM DISK = @FileName2 
      
      alter database SenONew set online with rollback immediate; 
      

      :

      /* CREATE BACKUP OF DATABASE WITHIN CURRECT CONNECTION */ 
      DECLARE @FileName2 nvarchar(250) 
      SELECT @FileName2 = (SELECT 'C:\SenO BackUp\' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK') 
      BACKUP DATABASE SenONew TO [email protected] 
      GO 
      

      enter image description here

      는 그런 다음 서버에 복원 않습니다

      SQL 백업을 만들 수 있습니다

      * (메시지 5121, 수준 16, 상태 2, 줄 7 "C : \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA \ Senonew.ndf"로 지정된 경로가 유효한 디렉터리에 없습니다. .

      메시지 1656, 수준 3, 상태 3, 줄 7 파일 'fsSenONew'을 'C : \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA \ Senonew.ndf'로 복원 할 수 없습니다. WITH MOVE를 사용하여 파일의 유효한 위치를 식별하십시오.

      메시지 3119, 수준 16, 상태 1, 줄 7 문제가 RESTORE 문을 계획하는 동안 확인되었습니다. 이전 메시지는 세부 사항을 제공합니다.

      메시지 3013, 수준 16, 상태 1, 줄 7 RESTORE DATABASE가 비정상적으로 종료됩니다.) *

      .ndf FILESTREAM 위치를 삭제했습니다. 왜이 경로가 지정된 경로입니까? 또한, fsSenONew가 왜 복원을 시도합니까? 나는 그 주위에 내 머리를 얻을 수 없습니다. 내부적으로 삭제해야 할 경로가 있습니까?

  • +0

    나는 데이터베이스를 개발하는 가장 좋은 방법은되지 않도록 백업을 제안하고 복원 할 수 있음? 이제는 제대로 작동하지만 데이터베이스가 프로덕션에서 * 사용 * 되 자마자 더 이상 실용적인 방법이 아닐 수 있습니다 (프로덕션 데이터를 지우는 것이 괜찮은 경우 제외). 그 가정하에, 나중에 필요하게 될 대체 접근법을 개발하지 않겠습니까? –

    +0

    백업 및 복원은 당분간 완벽하게 작동하는 것 같습니다. 앞서 언급했듯이 개발 단계로 인해 데이터베이스 구조가 많이 바뀝니다. 프로젝트가 끝날 때 완성 된 데이터베이스 구조는 실제 현재 회사 데이터로 채워질 것입니다. 그 후에야 새로운 소프트웨어가 프로덕션에 사용되며 모든 변경은 실제 서버에서만 수행됩니다. –

    답변

    3

    확인할 수 있습니다 :

    SELECT * FROM SenONew.sys.data_spaces WHERE name = 'FileStream' 
    

    이 0 행을 반환해야합니다.

    ALTER TABLE Filestore DROP column FileIndex 
    GO 
    ALTER TABLE Filestore SET (FILESTREAM_ON="NULL") 
    GO 
    ALTER Database SenONew REMOVE FILE fsSenONew 
    GO 
    ALTER Database SenONew REMOVE FILEGROUP [FileStream] 
    GO 
    

    this article에 설명 된대로 :

    는 SQL 서버에서 2008 데이터베이스를 FILESTREAM 기능을 제거하는 방법이있다. 그러나 당신이 한 조치는 똑같은 일을해야합니다.

    귀하의 문제는 확실히 이상하다,하지만 난 당신이

    USE SenONew 
    EXEC Sp_help 
    EXEC Sp_helpfile 
    EXEC Sp_helpfilegroup 
    

    당신은 그 FILEGROUP을 사용하여 다른 테이블 등이 의심스러운 무언가를 찾을 수 있습니다 다음 사용하여 시도하는 것이 좋습니다.

    설명하는 단계를 정확히 수행 했으므로 문제를 재현 할 수 없습니다. 데이터베이스 복원 화면이 어떻게 보이는지 확인하십시오.

    enter image description here

    +0

    오, 정말 이상합니다. 나는 다시 한 번 복원을 시도했고, sundently 히 일했다. 나의 질문은 물론 나의 것이었다. 이 글을 게시 한 날, 모든 SQL 서비스를 다시 시작한 후 FILESTREAM 옵션을 선택 취소하여 구성 오류가 발생했습니다.이 옵션은 꽤 오랫동안 해결하려고 노력하고 있습니다. 컴퓨터 재부팅으로 문제가 해결되었지만 복원을 수행 할 수 없습니다. 오늘, 웬일인지, 나는 할 수있다. 귀하의 복제물에 감사 드리며이를 받아 들였습니다. 실제로 이것은 이상합니다. –

    +0

    네, 표준이 아니며 쉽게 재현 할 수있는 상황이 아니라고 생각합니다. 당신이 그것을 해결했기 때문에 다행입니다. –