SQL Server 2017 SELECT INTO Yeniliği

SQL Server 2017 versiyonu ile artık SELECT INTO deyimi Filegroup bazlı EXEC edilebilir hale getirildi.

Hızlı bir şekilde örnek ile konuya açıklık getirelim.

İlk önce veritabanımızın yapısına dair bilgiyi sp_help komutu ile alıyoruz.

sp_helpdb N'WideWorldImporters'
GO

WideWorldImporters  veritabanımızın toplam 2 data file bir log file dan oluştuğunu görmekteyiz. Şimdi biz yeni bir file ekleyelim ve örneğimizi bu file üzerinde gerçekleştirelim.

WideWorldImporters_sqlturkiye adında bir file Create ediyoruz.

USE [Master]
GO
ALTER DATABASE [WideWorldImporters] ADD FILEGROUP [SECONDARY]
GO
ALTER DATABASE [WideWorldImporters]
ADD FILE
(
NAME = N'WideWorldImporters_sqlturkiye',
FILENAME = N'D:\Data\WideWorldImporters_sqlturkiyedt.ndf',
SIZE = 15 MB,
MAXSIZE = 200 MB,
FILEGROWTH = 50 MB
)
TO FILEGROUP [SECONDARY]
GO

Şimdi tekrar sp_help ile kontrolümüzü yapalım.

sp_helpdb N'WideWorldImporters'
GO

File ımızın SECONDARY FileGroup umuz üzerinde  oluştuğunu teyid ediyoruz.

SQL Server 2017 verisyonundan önce SELECT INTO komutu aşağıda ki syntax a sahipti.

SELECT ColumnName_1,ColumnName2,..,ColumnName_N
INTO New_TableName
FROM TableName
WHERE Condition

Mesela 2017 öncesinde ki Syntax ile bir örnek yapalım ,

SELECT
	* INTO [WideWorldImporters].[Sales].[OrderLines_sqltrDemo]
FROM [WideWorldImporters].[Sales].[OrderLines]

Yeni tablomuza  [Sales].[OrderLines]  tablosundan verileri aktardık yukarıda ki scriptimiz ile. Şimdi ise yeni tablomuzun yapıısna sp_help komutu ile bakalım.

sp_help N'[Sales].[OrderLines_sqltrDemo]'
GO

Gördüğünüz üzere yeni tablomuz Default FileGroup umuz olan USERDATA Filegroup a oluştuğunu görmekteyiz. Peki Default Filegroup umuzun USERDATA olduğunu nasıl öğrenebiliriz diyorsanız. Veritabanımız üzerine gelip sağ tıkladıktan sonra Proparties sekmesine tıklıyoruz ve açılan pencerede sol tarafta Filegroup bölümüne tıkladığımızda FileGroup larımız listelenmektedir.

USERDATA Filegroup umuzun Default alanda check eidlmiş olduğunu görmekteyiz. Bu demek oluyor ki oluşturduğumuz objeler aksi belirtilmedikçe default filegroup un içeriisnde oluşacaktır. Tıp ki SELECT INTO komutu ile oluşturduğumuz  isimli [Sales].[OrderLines_sqltrDemo] tablomuzda olduğu gibi.

SQL Server 2017 ile SELECT INTO Syntax ımıza baktığımız da,

SELECT ColumnName_1,ColumnName2,..,ColumnName_N
INTO New_TableName
ON FILEGROUP 
FROM TableName
WHERE Condition

ON FILEGROUP adımı eklendiğini görmekteyiz. Bu özellik ile SELECT INTO ile oluşturduğumuz tablolarımızı artık istediğimiz FileGroup üzerinde oluşturabileceğiz.

SELECT
	* INTO [WideWorldImporters].[Sales].[OrderLines_sqltrDemo2017]
	ON [SECONDARY]
FROM [WideWorldImporters].[Sales].[OrderLines]

[Sales].[OrderLines_sqltrDemo2017] tablomuzun force ettiğimiz fillegroup umuz üzerinde oluşup oluşmadığını kontrol edelim.

sp_help N'[Sales].[OrderLines_sqltrDemo2017]'
GO

 

Filegroup sekmemize baktığınızda SECONDARY olarak SELECT INTO yu çalıştırmıştık ve tablomuz SECONDARY Filegroup u üzer,nde oluştuğunu görmekteyiz.

Bu özellik ile genelde Backupladığınız tablolar için ayrı bir Filegroup oluşturup Live ortamda Backupladığınız tablolarınıxz o File grupta tutarak arka taraftaki yönetiminizi rahatlatabilirsiniz.

 

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *