6

Tôi sử dụng SQL Server 2008 R2 và muốn chia bảng Master và bảng chi tiết lại với nhau. Làm thế nào tôi có thể phân vùng bảng chi tiết theo trường MasterTypeID trong bảng chính.Phân vùng Bảng chi tiết tổng thể

Chức năng phân vùng của tôi là:

CREATE PARTITION FUNCTION MasterTypeFN(int) 
AS 
RANGE LEFT FOR VALUES (1,2,3) 

Schema phân vùng của tôi là:

CREATE PARTITION SCHEME MasterTypeScheme 
AS 
PARTITION MasterTypeFN 
TO ([FG1], [FG2], [FG3], [PRIMARY]) 

My Thạc sĩ Bảng Cấu trúc là:

CREATE TABLE [dbo].Master 
(
    [MasterID] [int] NOT NULL, 
    [MasterTypeID] [int] NOT NULL, 
    ... 
) 
ON MasterTypeScheme (MasterTypeID) 

My chi tiết Bảng Cấu trúc là:

CREATE TABLE [dbo].Detail 
(
    [DetailID] [int] NOT NULL, 
    [MasterID] [int] NOT NULL, 
    ... 
) 

Tôi muốn bảng phân vùng chi tiết liên quan đến phân vùng chính. Nói cách khác, tôi muốn lưu bản ghi bảng Master và các chi tiết liên quan trong một nhóm tệp.

+0

Các bảng này sẽ là HEAP hoặc chúng sẽ có chỉ mục nhóm không? Nếu chúng là một bảng phân cụm, cột phân vùng sẽ cần phải là một phần của chỉ mục nhóm hoặc khóa chính. –

Trả lời

2

Bạn nên xác định cột MasterTypeID trong bảng Chi tiết và xác định quyền trên đó để vô hiệu cập nhật cột này. và tạo trình kích hoạt trên Master bảng để đồng bộ hóa cột MasterTypeID trong Master bảng với cột MasterTypeID trong bảng Detail.

1

Điều bạn muốn là có thể. Bạn cần sao chép giá trị MasterTypeID vào mỗi hàng của bảng Detail để có thể áp dụng chức năng phân vùng cho Detail.

Tạo cột mới Detail.MasterTypeID và điền vào cột đó một cách thích hợp. Hoặc là trong mã ứng dụng của bạn hoặc sử dụng một kích hoạt trong cơ sở dữ liệu.

Sau khi cột được điền chính xác, bạn có thể áp dụng chức năng phân vùng.

+0

cảm ơn câu trả lời của bạn. làm thế nào tôi có thể đồng bộ hóa 'Detail.MasterTypeID' và' Master.MasterTypeID' với nhau? –

+0

'Detail.MasterTypeID' phải là cột chỉ đọc và chỉ cập nhật khi cột' Master.MasterTypeID' thay đổi. cũng 'Detail.MasterTypeID' phải bằng' Master.MasterTypeID' có liên quan và phải tự động thay đổi khi 'Master.MasterTypeID' thay đổi. –

+0

Có chính xác. Tôi đề nghị bạn tạo một kích hoạt 'AFTER' trong bảng' Master' 'cho INSERT, UPDATE, DELETE'. Bạn có thể sử dụng các bảng giả 'INSERTED' và' DELETED' trong trình kích hoạt đó để cập nhật tất cả các hàng 'Chi tiết' cho phù hợp. Đây là quá nhiều mã để nhập ở đây, nhưng nó là thẳng về phía trước. – usr

Các vấn đề liên quan