SQL Server Management Studio (SSMS) kullanarak Database yedeklerini Script olarak alma işlemi, özellikle detaylı konfigürasyonlara ihtiyaç duyulduğunda ve tekrar kullanılabilir bir yedekleme planı oluşturulmak istendiğinde oldukça önemli bir özelliktir. Bu işlem, yalnızca yedekleme işleminin gerçekleştirilmesiyle kalmaz, aynı zamanda bu yedekleme işleminin nasıl yapılacağını adım adım kaydedip, gerektiğinde bu adımların tekrar yürütülmesini sağlar. Böylece bir Database yedekleme işlemi sırasında kullanılan tüm parametreler, bir Script olarak kaydedilip, daha sonra manuel olarak ya da farklı sistemlerde yeniden kullanılabilir.
SSMS ile Database yedeklemesini Script olarak alma işlemi, teknik olarak yedekleme işleminin tamamlanmasından önce gerçekleştirilir. Yani, bir yedek alma işlemi başlatmadan önce tüm yapılandırmaları seçtikten sonra, işlem doğrudan yapılmak yerine, SQL Server Management Studio (SSMS) arayüzünden bu adımlar bir T-SQL Script'e dönüştürülür. Bu özellik, yedekleme işlemlerini kayıt altına almanın yanı sıra, özelleştirilmiş Script'ler oluşturulmasına da imkan tanır. Özellikle farklı sunucularda aynı yedekleme senaryolarını tekrarlamak gerektiğinde, bu Script'ler büyük avantaj sağlar.
SSMS üzerinden alınan bu Script'ler, SQL Server ortamında yedekleme politikalarının bir parçası olarak kullanılabilir. Örneğin, bir yedekleme işlemi sırasında hangi Database'in, hangi Disk veya Network sürücüsüne yedekleneceği, yedekleme sırasında hangi seçeneklerin etkin olacağı gibi detaylar Script'e dahil edilir. Böylece, her bir yedekleme işlemi için aynı ayarların tekrar tekrar seçilmesine gerek kalmaz, tüm işlem bir Script ile standardize edilir ve gerektiğinde başka sistemlerde de kullanılabilir.
Bu yedekleme işlemlerinde Script oluşturmanın bir diğer avantajı, herhangi bir sorun anında tam olarak hangi adımların uygulandığını görmek ve bu adımları tekrar gözden geçirebilmektir. Ayrıca, oluşturulan Script'ler üzerinde değişiklik yaparak, yedekleme stratejisini kolayca güncelleyebilir ve daha karmaşık yedekleme planları oluşturabilirsiniz.
1- Yedeğini Script olarak almak istediğiniz veri tabanı (Database) üzerinde sağ tıklayarak Generate Scripts... seçeneğini seçiyorum.

2- Karşıma çıkan Generate and Publish Scripts penceresinde Intruction adımında, Wizard ile yapılabilecek işlemlerle ilgili bilgi veriliyor. Açıklamada; "Bu sihirbaz ile seçilen veri tabanı neselerinin Script'leri alınır. Bu Script'ler, Database Engine üzerindeki bir Instance'da (kurulu bir SQL Server) veri tabanı oluşturulmak üzere saklanabilir ya da Database Publishing Web Service (Wizard) ile veri tabanı yayınlama işlemi gerçekleştirilebilir." ifadesi yer almaktadır. Next butonuna basarak işlemime devam ediyorum.

3- Choose Object adımında, hangi Database objesinin (veri tabanı nesnesi) Script'inin oluşturulacağını belirliyoruz.
Burada iki seçenek mevcut;
3.1- Script entire Database and all Database objects: Tüm veri tabanı ve veri tabanı nesnelerini seçme.
3.2- Select specific Database objects: Belirli veri tabanı nesnelerini seçme. Burası üç kısıma ayrılıyor;
3.2.1- Tables: İstenilen veri tabanı tablolarını tablo içleri boş olarak alır. Tablo içinde hiçbir bilgi barındırmaz.
3.2.2- Users: veri tabanına ait tüm tanımlı kullanıcıları alır.
3.2.3- Schemas: veri tabanına ait Schema (şema) yapısını da alır. Schema; Databasedeki tablo, view ve stored procedure gibi objeleri gruplamaya yarar. Bir objeyi bir şema altında yaratabilirsiniz veya bir şemanın altına transfer edebilirsiniz. Ayrıca şema bazlı yetki de verebilirsiniz. Yani DB User (veri tabanı kullanıcısı), sadece izin verdiginiz şemanın altındaki objeleri görebilir, diğer DB kullanıcıları göremez. Normalde obje sayılarının fazlalığı yönetimi ve izinlerini oldukça zorlaştıracaktır. Her bir objeyi tek tek yetkilendirmek yerine şema bazında yetkilendirme yapmak daha uygun olacaktır.
Siz bir şema tanımlamasanız bile Default olarak oluşturduğunuz objeler her zaman bir şemaya dahil olacaktır, örneğin SQL Server’da dbo şeması default olarak bulunur ve objeler aksi belirtilmediği müddetçe ".dbo" şemasına bağlı olarak oluşturulur.
CREATE Schema şema_ismi [ AUTHORIZATION kullanıcı_ismi ] [ şema_öğesi [ … ] ] |
gibi bir tanımlama ile şema oluşturabiliriz. Ek olarak, oluşturulacak olan şemanın ismi belirtilmezse, şema ismi olarak kullanıcı ismi kullanılır. Şemanın sahibi olacak kullanıcının ismi belirtilmezse, komutu çalıştıran kullanıcının ismi ön tanımlı olur.

4- Set Script Options altında, oluşturacağımız Script'in nereye kaydedileceğini belirliyoruz. Buradaki önemli olan detay, Advanced butonu altındadır.

5- Advanced butonuna tıkladığımızda, Advanced Scripting Options penceresi açılacaktır. Bu pencere içindeki Types of Data to Script önemlidir. 3. adımda ister Script entire Database and all Database objects seçmiş olun, isterseniz de Select specific Database objects altındaki Tables seçeneğinden istediğiniz bir tabloyu seçmiş olun, tablo içleri boş gelecektir. Bu nedenle burada, tablodaki verilerin alınıp alınmayacağı ile ilgili seçeneği yapılandırmamız gerekiyor.
✅ Data only:Tablo içine sadece Data'ları alır. Yukarıda belirttiğim gibi, Schema yapısını almaz ama default Schema yapısı oluşur.
✅ Schema and Data:Schema yapısı ile birlikte tablo Data'larını da alır.
✅ Schema only:Sadece Schema yapısını alır. Data'ları almaz.
Ben, Schema and Data seçeneğini seçip, Next butonuna basarak devam ediyorum.

6- Summary bölümünde karşımıza, Script oluşturmak için uyguladığımız gerekli yapılandırma ayarlarının özeti çıkıyor. Next butonuna basarak devam ediyorum.

7- Summary bölümünde Next butonuna basarak Save or Publish Scripts bölümüne geçiyorum ve otomatik olarak Script yapımız oluşturulmaya başlanıyor.

8- Script yapımız başarılı bir şekilde oluşturuldu.

9- Oluşturduğum Script, belirlediğim Path'e (dizin yoluna) oluşturuldu.

10- Oluşturduğum Script'i çift tıklayarak açıyor, içeriğini görüntülüyorum.

Database yedeğini Script olarak almak, otomasyonun sağladığı hız ve güvenilirlikle süreçleri standart hale getirmenin en etkili yollarından biridir. SQL Server'ın sağladığı esneklik sayesinde, ihtiyaç duyulan tüm parametreleri belirleyerek Backup işlemlerini tamamen kontrol edilebilir bir yapıya dönüştürmek mümkün olur.
Kod temelli yedekleme, sadece manuel işlemleri azaltmakla kalmaz, aynı zamanda hataları minimize ederek tutarlı bir yönetim modeli oluşturur. Script tabanlı çözümler, Maintenance Plan gibi görsel araçlardan daha fazla özelleştirme imkanı sunduğu için özellikle büyük ölçekli Database ortamlarında tercih edilir.
Zamanlanmış görevler aracılığıyla belirli periyotlarla çalıştırılabilen bu yöntem, yedekleme süreçlerinin aksatılmadan yürütülmesini garanti altına alır. T-SQL komutları ile özelleştirilmiş bir Backup Strategy oluşturmak, hem veri güvenliğini artırır hem de olası kurtarma senaryolarında daha hızlı aksiyon almayı mümkün kılar.
Kurallara bağlı, sistematik ve tekrarlanabilir bir Backup mekanizması oluşturmak, her ölçekten yapının ihtiyacı olan bir standarttır. Elle yapılan işlemler yerine, belirli şablonlar üzerinden ilerleyen bir yapı kurmak, uzun vadede hem yönetimi kolaylaştırır hem de olası hataların önüne geçer.
Faydalı olması dileğiyle...
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.