나는 파티션이 될 테이블을 만들고 FILESTREAM
열을 포함하고 있습니다. 내가 만나는 문제는 FILE_UPLOADED_DATE
이 내 파티션 구성표의 일부이기 때문에 복합 기본 키 (FILE_ID
및 FILE_UPLOADED_DATE
)가 있어야한다는 것입니다. 그 맞습니까? 나는 이것이 복합 키가 아니며 단순히 FILE_ID
이 기본 키가되는 것을 선호합니다 ..... 이것이 단지 사용자 오류 일 수 있습니까?SQL Server의 기본 키 (파티션 문제 포함)
의견을 보내 주시면 감사하겠습니다.
버전 : SQL 서버 2008 R2
파티션 구성표 및 기능 :
CREATE PARTITION FUNCTION DocPartFunction (datetime)
AS RANGE RIGHT FOR VALUES ('20101220')
GO
CREATE PARTITION SCHEME DocPartScheme AS
PARTITION DocPartFunction TO (DATA_FG_20091231, DATA_FG_201);
GO
CREATE PARTITION SCHEME DocFSPartScheme AS
PARTITION DocPartFunction TO (FS_FG_20091231,FS_FG_201);
GO
만들기 진술 :
CREATE TABLE [dbo].[FILE](
[FILE_ID] [int] IDENTITY(1,1) NOT NULL,
[DOCUMENT] [varbinary](max) FILESTREAM NULL,
[FILE_UPLOADED_DATE] [datetime] NOT NULL,
[FILE_INT] [int] NOT NULL,
[FILE_EXTENSION] [varchar](10) NULL,
[DocGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE ON [PRIMARY],
CONSTRAINT [PK_File] PRIMARY KEY CLUSTERED
( [FILE_ID] ASC
) ON DocPartScheme ([FILE_UPLOADED_DATE])
)ON DocPartScheme ([FILE_UPLOADED_DATE])
FILESTREAM_ON DocFSPartScheme;
오류 내가 포함하지 않는 경우 FILE_UPLOADED_DATE
:
Msg 1908, Level 16, State 1, Line 1
Column 'FILE_UPLOADED_DATE' is partitioning column of the index 'PK_File'. Partition columns for a unique index must be a subset of the index key.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
고마워요!
Remus, 정말 고마워요. 파일 영역 파일 그룹을 다른 위치로 가져갈 수 있도록 파티션이 필요합니다 ..... 그러나 공간 제한이 있기 때문에 최신 파일 만 ... 긴 스토리. – scarpacci
위의 해결책이 작동하지 않습니까? 그 중 일부는 예약어 "FILE_ID"로 인해 있었지만 위의 구조로 테이블을 만들려고 할 때 여전히 오류가 발생하는 것을 수정 한 후에 수정했습니다. – scarpacci
스크립트를 수정했습니다 (이번에 테스트). 파티션을 파일 그룹 관리에 사용하는 것이 파티션을 배포해야하는 타당한 이유입니다. 유감스럽게도 ROWGUIDCOL의 고유 제약 조건에 대한 FILESTREAM 요구 사항은 정렬되지 않은 인덱스가 보장되어 있으므로 향후에 문제가 발생할 수 있습니다 (예 : 빠른 파티션 스위치를 사용하여 최대 보존 기간 정책 기간을 연장 한 문서를 삭제해야하는 경우). –