ده مثال عملی منحصربهفرد برای ALTER TABLE ... SWITCH
مثال 1: تعریف پایه با مقدار ثابت در ALTER TABLE ... SWITCH
در مثال شماره 1، سناریوی «تعریف پایه با مقدار ثابت» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Metadata Switch در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_01 (int) AS RANGE RIGHT FOR VALUES (100,200);
CREATE PARTITION SCHEME ps_Switch_01 AS PARTITION pf_Switch_01 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_01 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_01(Id);
CREATE TABLE dbo.SwitchStage_01 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_01 CHECK (Id >= 100 AND Id < 200));
INSERT INTO dbo.SwitchMain_01(Id,Payload) VALUES (110,N'ردیف اول 01'),(140,N'ردیف دوم 01');
ALTER TABLE dbo.SwitchMain_01 SWITCH PARTITION 2 TO dbo.SwitchStage_01;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_01;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 1 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Staging Table باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 2: اجرای سناریو روی جدول نمونه در ALTER TABLE ... SWITCH
در مثال شماره 2، سناریوی «اجرای سناریو روی جدول نمونه» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Staging Table در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_02 (int) AS RANGE RIGHT FOR VALUES (200,300);
CREATE PARTITION SCHEME ps_Switch_02 AS PARTITION pf_Switch_02 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_02 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_02(Id);
CREATE TABLE dbo.SwitchStage_02 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_02 CHECK (Id >= 200 AND Id < 300));
INSERT INTO dbo.SwitchMain_02(Id,Payload) VALUES (210,N'ردیف اول 02'),(240,N'ردیف دوم 02');
ALTER TABLE dbo.SwitchMain_02 SWITCH PARTITION 2 TO dbo.SwitchStage_02;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_02;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 2 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Aligned Index باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 3: استفاده در SELECT و گزارشگیری در ALTER TABLE ... SWITCH
در مثال شماره 3، سناریوی «استفاده در SELECT و گزارشگیری» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Aligned Index در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_03 (int) AS RANGE RIGHT FOR VALUES (300,400);
CREATE PARTITION SCHEME ps_Switch_03 AS PARTITION pf_Switch_03 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_03 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_03(Id);
CREATE TABLE dbo.SwitchStage_03 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_03 CHECK (Id >= 300 AND Id < 400));
INSERT INTO dbo.SwitchMain_03(Id,Payload) VALUES (310,N'ردیف اول 03'),(340,N'ردیف دوم 03');
ALTER TABLE dbo.SwitchMain_03 SWITCH PARTITION 2 TO dbo.SwitchStage_03;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_03;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 3 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد CHECK Constraint باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 4: کنترل شرط و بازه هدف در ALTER TABLE ... SWITCH
در مثال شماره 4، سناریوی «کنترل شرط و بازه هدف» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار CHECK Constraint در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_04 (int) AS RANGE RIGHT FOR VALUES (400,500);
CREATE PARTITION SCHEME ps_Switch_04 AS PARTITION pf_Switch_04 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_04 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_04(Id);
CREATE TABLE dbo.SwitchStage_04 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_04 CHECK (Id >= 400 AND Id < 500));
INSERT INTO dbo.SwitchMain_04(Id,Payload) VALUES (410,N'ردیف اول 04'),(440,N'ردیف دوم 04');
ALTER TABLE dbo.SwitchMain_04 SWITCH PARTITION 2 TO dbo.SwitchStage_04;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_04;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 4 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Empty Target باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 5: ترکیب با قابلیت مکمل SQL Server در ALTER TABLE ... SWITCH
در مثال شماره 5، سناریوی «ترکیب با قابلیت مکمل SQL Server» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Empty Target در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_05 (int) AS RANGE RIGHT FOR VALUES (500,600);
CREATE PARTITION SCHEME ps_Switch_05 AS PARTITION pf_Switch_05 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_05 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_05(Id);
CREATE TABLE dbo.SwitchStage_05 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_05 CHECK (Id >= 500 AND Id < 600));
INSERT INTO dbo.SwitchMain_05(Id,Payload) VALUES (510,N'ردیف اول 05'),(540,N'ردیف دوم 05');
ALTER TABLE dbo.SwitchMain_05 SWITCH PARTITION 2 TO dbo.SwitchStage_05;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_05;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 5 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Schema Lock باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
تصویر دوم جریان ورودی تا خروجی ALTER TABLE ... SWITCH را با تمرکز بر Staging Table، Empty Target و اعتبارسنجی نتیجه نمایش میدهد.
مثال 6: بررسی رفتار NULL یا داده مرزی در ALTER TABLE ... SWITCH
در مثال شماره 6، سناریوی «بررسی رفتار NULL یا داده مرزی» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Schema Lock در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_06 (int) AS RANGE RIGHT FOR VALUES (600,700);
CREATE PARTITION SCHEME ps_Switch_06 AS PARTITION pf_Switch_06 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_06 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_06(Id);
CREATE TABLE dbo.SwitchStage_06 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_06 CHECK (Id >= 600 AND Id < 700));
INSERT INTO dbo.SwitchMain_06(Id,Payload) VALUES (610,N'ردیف اول 06'),(640,N'ردیف دوم 06');
ALTER TABLE dbo.SwitchMain_06 SWITCH PARTITION 2 TO dbo.SwitchStage_06;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_06;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 6 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Archive Out باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 7: ثبت خطای رایج و نسخه اصلاحشده در ALTER TABLE ... SWITCH
در مثال شماره 7، سناریوی «ثبت خطای رایج و نسخه اصلاحشده» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Archive Out در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_07 (int) AS RANGE RIGHT FOR VALUES (700,800);
CREATE PARTITION SCHEME ps_Switch_07 AS PARTITION pf_Switch_07 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_07 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_07(Id);
CREATE TABLE dbo.SwitchStage_07 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_07 CHECK (Id >= 700 AND Id < 800));
INSERT INTO dbo.SwitchMain_07(Id,Payload) VALUES (710,N'ردیف اول 07'),(740,N'ردیف دوم 07');
ALTER TABLE dbo.SwitchMain_07 SWITCH PARTITION 2 TO dbo.SwitchStage_07;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_07;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 7 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Metadata Switch باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 8: سناریوی سازمانی دورهای در ALTER TABLE ... SWITCH
در مثال شماره 8، سناریوی «سناریوی سازمانی دورهای» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Metadata Switch در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_08 (int) AS RANGE RIGHT FOR VALUES (800,900);
CREATE PARTITION SCHEME ps_Switch_08 AS PARTITION pf_Switch_08 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_08 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_08(Id);
CREATE TABLE dbo.SwitchStage_08 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_08 CHECK (Id >= 800 AND Id < 900));
INSERT INTO dbo.SwitchMain_08(Id,Payload) VALUES (810,N'ردیف اول 08'),(840,N'ردیف دوم 08');
ALTER TABLE dbo.SwitchMain_08 SWITCH PARTITION 2 TO dbo.SwitchStage_08;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_08;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 8 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Staging Table باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 9: اجرای تراکنشی و امکان Rollback در ALTER TABLE ... SWITCH
در مثال شماره 9، سناریوی «اجرای تراکنشی و امکان Rollback» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Staging Table در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_09 (int) AS RANGE RIGHT FOR VALUES (900,1000);
CREATE PARTITION SCHEME ps_Switch_09 AS PARTITION pf_Switch_09 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_09 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_09(Id);
CREATE TABLE dbo.SwitchStage_09 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_09 CHECK (Id >= 900 AND Id < 1000));
INSERT INTO dbo.SwitchMain_09(Id,Payload) VALUES (910,N'ردیف اول 09'),(940,N'ردیف دوم 09');
ALTER TABLE dbo.SwitchMain_09 SWITCH PARTITION 2 TO dbo.SwitchStage_09;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_09;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 9 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد Aligned Index باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.
مثال 10: ممیزی Performance و متادیتا در ALTER TABLE ... SWITCH
در مثال شماره 10، سناریوی «ممیزی Performance و متادیتا» برای ALTER TABLE ... SWITCH اجرا میشود. هدف این است که رفتار Aligned Index در یک نمونه قابل بازتولید دیده شود و نتیجه بدون نیاز به اجرای ذهنی قابل فهم باشد.
CREATE PARTITION FUNCTION pf_Switch_10 (int) AS RANGE RIGHT FOR VALUES (1000,1100);
CREATE PARTITION SCHEME ps_Switch_10 AS PARTITION pf_Switch_10 ALL TO ([PRIMARY]);
CREATE TABLE dbo.SwitchMain_10 (Id int NOT NULL, Payload nvarchar(50) NULL) ON ps_Switch_10(Id);
CREATE TABLE dbo.SwitchStage_10 (Id int NOT NULL, Payload nvarchar(50) NULL,
CONSTRAINT CK_SwitchStage_10 CHECK (Id >= 1000 AND Id < 1100));
INSERT INTO dbo.SwitchMain_10(Id,Payload) VALUES (1010,N'ردیف اول 10'),(1040,N'ردیف دوم 10');
ALTER TABLE dbo.SwitchMain_10 SWITCH PARTITION 2 TO dbo.SwitchStage_10;
SELECT COUNT(*) AS StageRows FROM dbo.SwitchStage_10;
| شاخص | خروجی نمونه |
|---|
| Stage table | 2 |
تحلیل مثال 10 برای ALTER TABLE ... SWITCH: این سناریو نشان میدهد CHECK Constraint باید همراه کنترل کاتالوگ و مقدارهای مرزی بررسی شود. کاربرد واقعی آن در بارگذاری سریع، آرشیو و تخلیه پارتیشن است.