TransSQL

Merhabalar!

Microsoft SQL Server ile çalışıyor olan, özellikle sistem yöneticileri ve veritabanı yöneticileri arkadaşlarımızın iş hayatlarını kolaylaştırmak adına böyle bir aracı geliştirmek için birçok motivasyonumuz oldu.

Bu yazıda kullanılan ekran görüntüleri her ne kadar İngilizce olsa da, eğer TransSQL’i bir Türkçe Windows işletim sisteminde açarsanız, TransSQL’in arayüzü de otomatik olarak Türkçe olacaktır.

Öncelikle size TransSQL’in Microsoft SQL Server ortamlarınızda size nasıl yardımcı olabileceğinden özetle bahsetmek istiyorum.

Sorun 1: Birçok firma kamu kurumlarıyla, bankalarla, hastanelerle ve finansal kurumlarla çalışıyor, ki bu kurumların verileri oldukça kritik ve bu tür firmaların çoğunun düzenlemeleri ve teftişleri var. Bu kurumlar çalıştıkları iş ortaklarının kendi belirledikleri bazı güvenlik şartlarına uymalarını istiyorlar, aksi takdirde yaptıkları teftişlerde saptadıkları bulguları aleyhinize kullanabiliyorlar ve bu da o kurumun firmanıza iş vermemesine kadar gidebiliyor. Bu kurumlar ve firmanız arasındaki işbirliği neticesinde bu kurumlara ait kritik bilgileri kendi veritabanı sunucularınızda barındırmanız gerekebilecek. Verilerin kritikliği nedeniyle (örneğin ilgili kurumun müşteri bilgileri gibi) bu kurumlar sizin IT personeliniz dahil hiçbir personelinizin doğrudan, kontrolsüz bir şekilde bu veriye ulaşamamasını, değiştirememesini isteyebilecek.

Çözüm 1: SQL kod geliştiricileriniz DML / DDL işlemlerini TransSQL ile yapabilirler. Doğrudan üretim sunucularınıza (production server) bağlanmalarına gerek kalmaz. Eğer TransSQL yöneticisi izin verirse, kullanıcılarınız yine TransSQL vasıtasıyla doğrudan üretim sunucularınızda SELECT komutu çalıştırabilirler. Yine TransSQL yöneticisi isterse çalıştırılacak bu SELECT komutunun sonucunda gelecek olan kayıt sayısını da sınırlayabilir ve hatta panoya kopyalamasını da engelleyebilir. Bu ayarların hepsi birkaç fare tıklamasıyla yapılabilir!

Paketler, uygulamalar için oluşturulur ve her uygulamanın en azından bir ortamı vardır. Bu ayrıntılara Uygulama Yönetimi bölümünden ulaşılabilir.
Kullanıcılar Tip’lerden Liste’yi seçtiklerinde kaynak ve hedef veritabanlarına karşı SELECT komutu çalıştırabilirler. Bu özellik Ayarlar sekmesinden yönetici tarafından kapatılıp açılabilir. Ayrıca SELECT komutu sonucu dönecek olan kayıt sayısı, bu ekran görüntüsünden de görülebileceği gibi yine yönetici tarafından sınırlanabilir.

Sorun 2: Piyasadaki tecrübemizden de bildiğimiz üzere birçok uygulama geliştiricisi, veritabanında kod geliştirmenin en iyi yöntemlerinden bihaber. Genelde sadece kendinden istenilen işi yapıyorlar, kod işlevsel olarak çalışıyor, ama performansı sıkıntılı oluyor. Özellikle bu kod geliştirici arkadaşların herhangi bir bilirkişi tarafından denetlenmeden SQL kodlarını doğrudan üretim sunucularına göndermesi tehlikeli durumlar oluşturabiliyor.

Çözüm 2: TransSQL ile SQL kodlarını hedef sunuculara taşımak için geliştiriciler paketler oluşturur. Bu paketler adımlardan oluşur ve adımlar da SQL komutlarından oluşur. Paketler, kod geliştiriciler tarafından oluşturulduktan sonra TransSQL’in yöneticileri (Ayarlar’daki seçime bağlı olarak) e-posta ile uyarılırlar. Yöneticiler paketleri inceledikten sonra çalıştırabilir veya bir sorun bulurlarsa reddedebilirler. Böylece sunuculara taşınan tüm kodlar bir bilirkişi tarafından kontrol edilebilir.

Paket inceleme. Arkaplandaki ana pencerede geliştiriciler tarafından oluşturulan paketleri görebilirsiniz ve ön taraftaki pencerede de kodun incelenme anını görüyorsunuz. Arada kalan pencerede de paketin içeriği olan adımlar gösteriliyor.
Örneğin taşınacak bir Stored Procedure hedef veritabanında zaten varsa, o zaman taşınacak yeni versiyon da, hedefteki eski versiyon da yöneticiye karşılaştırma için gösterilir. Ayrıca taşınacak yeni versiyonda nelerin değiştiği de sarı renkle işaretlenir.

Sorun 3: Kod geliştiriciler doğrudan üretim sunucularına bağlandığında ve kod değişiklikleri yaptıklarında kimse hangi kodun kim tarafından ve ne zaman değiştirildiğini bilmez.

Çözüm 3: TransSQL her taşımanın kaydını tutar. Kolayca kimin, ne zaman hangi paketi oluşturduğunu bulabilir, kimin ne zaman ve neden hangi paketi sunucularınıza taşıdığını veya reddettiğini bulabilirsiniz.

Çok yönlü ve esnek raporlama bölümünde her taşımaya ait ayrıntıları kolayca bulabilirsiniz. Aradığınızı bulmanız için kullanabileceğiniz birçok önceden tanımlı kriter mevcut.

Sorun 4: Kod geliştiriciler yaptıkları işleri dokümante etmeyi pek sevmezler, bunu hepimiz biliriz. Mesela tipik bir ortamda bir kod geliştirici kodu doğrudan üretim ortamına taşıdığında ve bu taşıma da performans veya işlevsellik sorunlarına neden olduğunda tam olarak neyin değiştiği bilinmez.

Çözüm 4: Yeni kod taşıma öncesinde TransSQL, Stored Procedure’ler, View’ler, Function’lar, Trigger’lar için eğer hedefte zaten varlardıysa önceki versiyonlarının da yedeğini alır. Böylece sorun yaşadığınız bu nesnelerin yeni kod taşıma öncesindeki versiyonlarını aşağıdaki ekran görüntüsünde de gösterildiği gibi birkaç fare tıklamasıyla geri alabilirsiniz.

Bunlar, Microsoft SQL Server taşımalarınız için TransSQL’i kullandığınızda kazanacağınız avantajların sadece birkaçı.

Peki TransSQL nasıl çalışıyor?
– Öncelikle “Uygulama yönetimi” bölümünde bir uygulama tanımlamanız gerekiyor. Bu sekmede, veritabanı uygulamanız için tabiri caiz ise bir isim uyduruyorsunuz, bunun bir anlamı olmak zorunda değil, daha sonra bir ortam, kaynak Microsoft SQL Server Instance ve veritabanı isimlerini, hedef Microsoft SQL Server Instance ve veritabanı isimlerini ve varsa da uygulamanızın versiyon bilgilerini belirliyorsunuz.

– Uygulamanızı tanımladıktan sonra kodlarınızı belirlediğiniz kaynak ve hedefler arasında taşımak için paketler oluşturmaya başlayabilirsiniz. Paketler, ilk sekme olan Paket girişi sekmesinde oluşturulur. Paketinize DML / DDL komutları ekleyebilirsiniz. Paketler önceden de belirttiğim gibi adımlardan oluşur. Bir adım CREATE PROCEDURE script’i veya DELETE table SET field1 WHERE field2 = xxx script’i veya kaynaktan hedefe veri aktarmak için bir Aktar adımı olabilir.

– Paketinizi düzenledikten sonra onu kaydedebilirsiniz, akabinde yöneticiler paketinizi Paket çalıştırma sekmesinde görecekler. Ayrıca yeni paketleriniz hakkında (Ayarlar bölümündeki seçime bağlı olarak) e-posta ile bilgilendirilecekler. Siz de paketiniz çalıştırılırsa, reddedilirse veya paketniz çalıştırılma esnasında hata alırsa (Ayarlar bölümündeki seçime bağlı olarak) e-posta ile bilgilendirileceksiniz.

Bu kadar! TransSQL’i öğrenmek sadece birkaç dakika alıyor.

TransSQL’i kullanacak kullanıcılara çeşitli yetkiler verilebiliyor. Örneğin bazı kullanıcılarınızın sadece paketi oluşturmasını ve bazılarının sadece paketleri inceleyebilmesini belirleyebilirsiniz. Sadece belirlediğiniz kişiler paketleri çalıştırabilir.

TransSQL hakkında daha fazla bilgiye ulaşmak için lütfen blog sitesini ziyaret edin.

Zaman ayırdığınız için teşekkürler!