我正在構建一個將被分區幷包含FILESTREAM
列的表。我遇到的問題是,看起來我必須有一個複合主鍵(FILE_ID
和FILE_UPLOADED_DATE
),因爲FILE_UPLOADED_DATE
是我的分區方案的一部分。那是對的嗎?我不希望這是一個複合鍵,只是有FILE_ID
是主鍵......這可能只是一個用戶錯誤?具有分區的Sql服務器主鍵問題
任何建議,將不勝感激。
版:SQL Server 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要求是一個有保證的未對齊索引,這可能會導致將來出現問題(例如,如果您需要使用快速分區切換來刪除已延長最大強制保留策略生命週期的文檔)。 –