Selamlar,
Microsoft, SQL Server 2017 CTP sürümünü bir önceki sürümle karşılaştırıldığı gibi birçok yeni özellik ve geliştirmeyle duyurdu Bu blog yazısında, SELECT INTO deyimi ile FILEGROUP seçeneğinin kullanmayı öğreneceğiz.
Veri tabanı uzmanı / yöneticisi olarak, günlük faaliyetlerimizde hepimiz ifadelere başvurduk. Bunu kullanmanın farklı nedenleri olabilir.
- Bir tablonun tüm verilerini yeni bir tabloya kopyalamak istiyorum
- Bir tablonun bazı sütunlarını yeni bir tabloya kopyalamak istiyorum.
SQL Server 2016’ya kadar kadar SELECT INTO, yeni bir tablo oluşturur ve verileri yeni tabloya kopyalanmasını sağladı fakat bu işlemi hep default filegroup üzerinde gerçekleştirirdi. Fakat SQL Server 2017 ile artık SELECT INTO deyimi ile farklı filegroup üzerinde tablo oluşturulmasını ve verilerin oraya kopyalanmasını sağlayabiliriz.
Bir Örnek ile detaylandıracak olursak ;
Örnek içinde kullanacağımız AdventureWorks2014 veritabanın dosyaları hakkında bilgi edilenelim. Bunun için aşağıdaki kodu çalıştırmak yeterli olacaktır.
[Code]
sp_helpdb ‘AdventureWorks2014’
[/code]
Yukarıdaki resimde görüldüğü gibi AdventureWorks2014 isimli veritabanın varsayılanın haricinde herhangi bir filegroup ekli değil biz şimdi AdventureWorks2014 isimli veritabanı içerisinde SECONDARY_FG isimli bir filegroup oluşturup tanımlamasını sağlıyoruz.
<span style="color: #333333;"><span style="font-family: Open Sans, Arial, Helvetica, sans-serif;"><span style="font-size: medium;">USE [master] GO ALTER DATABASE [AdventureWorks2014] ADD FILEGROUP [SECONDARY_FG] GO ALTER DATABASE [AdventureWorks2014] ADD FILE ( NAME = N'AdventureWorks2014_Data_SECONDARY', FILENAME = N'D:\DATA\AdventureWorks2014_Data_SECONDARY.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [SECONDARY_FG] GO</span></span></span>
Filegroup ekledilkten sonra tekrar sp_helpdb ile kontrol edelim ve eklediğimiz yeni SECONDARY_FG görüntüleyelim.
SQL Server Management Studio’dan da veritabanın file’larına bakalım.
Görüldüğü gibi artık veritabanı içerisinde kullanabileceğimiz bir SECONDARY_FG isimli bir filegroup mevcut ve bu filegroup veritabanı dosyalarımızından farklı bir disk üzerinde konumlanmış durumda.
Şimdi makalemizin asıl konusu olan SQL Server 2017 SELECT INTO deyimi ile SECONDARY_FG data aktarımı sağlayalım.
Örneğimizde AdventureWorks2014 veritabanı içerisinde Person schemasında yer alan Person tablosunun bir kopyasınmı SECONDARY_FG isimli filegroup’a taşıyor olacağız. Öncelikle Person.Person’ın filegroup olarak nerede olduğunu görelim.
Resimde görüldüğü gibi PRIMARY filegroup üzerinde şimdi SELECT INTO deyimini kullanarak SQL SERVER 2017 aracılıgı ile bir kopyasını farklı bir filegroup’a alıyoruz.
SQL Server 2017 SELECT INTO Kullanımı
<span style="color: #333333;"><span style="font-family: Open Sans, Arial, Helvetica, sans-serif;"><span style="font-size: medium;">Select * INTO [AdventureWorks2014].[Person].[Person_Demo] <strong>ON [SECONDARY_FG]</strong> FROM [AdventureWorks2014].[Person].[Person]</span></span></span>
Yukarıdaki code bloğu ile Person.Person’da yer alan bütün tablo yapısını ve içerisini Person.Person_Demo tablosunu oluşturup içerisine aktarıyoruz bu tabloda farklı disk’te oluşturduğumuz SECONDARY_FG isimli filegroupda yer alıyor.
Kontrol edelim.
Nihayet tablomuzu ve verilerimizi farklı bir tabloya aktarabildik fakat burada dikkat edilmesi gereken durum yeni oluşan tabloda herhangi bir index veya constrait’ler aktarılmıyor. Sadece tablo yapısı ( Tablonun seçtiğiniz kolonları ) ve tablo içerisindeki veriler aktarılıyor.
SQL Server 2017 ile gelen bu SELECT INTO deyimindeki yeniliğin kullanımı anlattık, bir sonraki makalede görüşmek üzere..