قابلیت جدید دستور SELECT INTO

قابلیت جدید دستور SELECT INTO

همان‌طور که می‌دانید با استفاده از دستور SELECT INTO یا در اصطلاح همان Make Table Query می‌توان یک نمونه‌ی کپی از جدول موردنظر را ایجاد کرد؛ البته در این شرایط جدولی که ایجاد می‌شود صرفا مشابه ساختار جدولِ موجود و به‌همراه رکوردهای آن خواهد بود و خبری از کپی شدن سایر محدودیت‌ها و آبجکت‌ها از قبیل ایندکس‌ها، ویوها، تریگرها و … نیست.

نکته جالب اما این‌که در SQL Server 2017 شما می‌توانید به‌راحتی تعیین کنید که این جدولِ جدید در کدام FILE GROUP ایجاد شود. تا قبل از این، به‌محض استفاده از دستور SELECT INTO، جدولِ جدید در FILE GROUP پیش‌فرض ایجاد می‌شد.

پس از ایجاد هر دیتابیسی، به‌صورت اتوماتیک FILE GROUPای با عنوان PRIMARY ایجاد می‌شود و از این پس تمامی آبجکت‌های ایجاد شده در آن قرار خواهد گرفت.

برای ایجاد یک FILE GROUP جدید در دیتابیس از دستور زیر استفاده می‌کنیم:

ALTER DATABASE Your_DatabaseName
ADD FILEGROUP FG1;
GO

با استفاده از VIEW سیستمی زیر می‌توانید لیستی از FILE GROUPهای موجود در دیتابیس‌تان را ببینید:

SELECT * FROM sys.filegroups;
GO

اکنون به ‌ساده‌گی و با استفاده از دستور زیر می‌توان مشخص کرد آبجکتی که قرار است از جدول موردنظرمان ایجاد شود، در کدام FILE GROUP ذخیره شود:

SELECT * INTO New_Table
ON FG1
FROM Your_TableName;
GO

در پایان با اجرای اسکریپت زیر می‌توانید ببینید که جدول ایجاد‌شده در کدام FILE GROUP قرار گرفته است:
SELECT
F.name AS FileGroupName
FROM sys.filegroups F
JOIN sys.indexes I
ON I.data_space_id = F.data_space_id
JOIN sys.tables T
ON T.object_id = I.object_id
WHERE I.index_id < 2
AND T.name= ‘Your_TableName’
AND T.schema_id = schema_id(‘Your_SchemaName’);
GO

از وبلاگ (کانال ) آقای  مهدی شیشه‌بری