Sql Server Auto Increment (Otomatik Artan) Kolon Ayarlama

Veri tabanı çalışmalarında kullanılan en önemli başlıklardan biri de otomatik artan değerdir.

Örnek olarak sıra girilen kaydın sıra numarası veya Id kolonunun değeri otomatik artan değerde ayarlanması işlem kolaylığı sağlayacaktır.

Şimdi Sql Server üzerinde otomatik artan kolon (IDENTITY) nasıl ayarlanır, beraberce inceleyelim.

Identity kolonu ayarlanırken göz önünde bulunması gereken en önemli unsur her tabloda en fazla bir identity kolonu olabileceğidir.

Otomatik Artan Kolon

Otomatik artan kolon tablo dizayn ekranında iki farklı şekilde yapılmaktadır.

  • İlki kolonunun özelliklerinden “Identity Specification” özelliğini “Yes” olarak ayarlanır. Bu özelliğin altında yer alan iki özellik: “Identity Increment” artışın kaçar kaçar olacağını, “Identity Seed” ise ilk sayının değerini belirtir.
  • İkinci şekilde de resmin sağ tarafında yer alan tablo özelliklerinden “Identity Column” seçeneğini seçmektir. Bu şekilde ayarlanması durumunda yukarıdaki iki değer varsayılan olarak 1 olarak ayarlanacaktır.

Kod ile belirtilmek istendiğinde de:




Ms SQL Server’ın Gizli Gücü xp_cmdshell

Sql Server dersini alırken sadece kullandığımız belli başlı 3 – 4 komut vardı, SELECT, UPDATE, DELETE… Ama hep dediğimiz bir şey daha vardı “Adamlar bu kadar büyük bir programı sırf SELECT için yazmış olamaz”, öyle ya bir yüklüyoruz bilgisayarda neredeyse 10GB yer kaplıyor.

Şimdi Sql Server’ın SELECT dışında yapabildiği binlerce işlemden birini beraber görelim.

xp_cmdshell, SQL Server üzerinden cmd komut satırına komut göndermeyi ve çalıştırmaya imkan sağlayan stored prosedür. Bu özelliği sayesinde cmd ekranında yapabildiğimiz herşeyi:

  • Windows Server üzerinde yeni kullanıcı açıpi buna full yetki verilip kuruluşumuzun her türlü gizli verisi ve işlemlerine ulaşılabilir
  • “format X” komutunu göndererek Sql Server üzerinden X diskini formatlanabilir
  • Windows Server içerisine her hangi bir .exe dosyası atılarak çalıştırılabilir, bu bir keyloger da olabilir

ve daha fazlası kısaca herşeyi.

xp_cmdshell stored prosedürü varsayılan olarak güvenlik politikası olarak devre dışıdır. Prosedürü devreye almak için aşağıdaki kod çalıştırabilir veya arayüz üzerinde de işlem yapılabilir. Sql koduna ve hemen ardından arayüz adımlarına geçelim.

Alternatif olarak arayüz adımları:

xp_cmdshell aktifleştirme

Bu işlemler sonucunda aktifleştirme gerçekleştirilir.

xp_cmdshell komutu çalıştırıldığında dönen sonuş tek kolon ve text şeklinde olur. Çıktı vermeyen komutlar için başarılı olması durumunda 1, başarızı olması durumunda 0  sonucu döner.

Şimdi de bazı örnekler yaparak çalışma şeklini görelim.

  • Çıktı Veren Örnek
    Komut satırına ‘DIR C:\’ komutunu göndererek C:\ diski altında yer alan dosyaları gösterelim.

    xp_cmdshell ile C:\ diski altında yer alan dosyaların gösterilmesi

     

  • Çıktı Vermeyen Örnek
    Komut satırın copy komutu göndererek C:\XP\Deneme.txt dosyasını aynı klasör altına Deneme2.txt adıyla kopyalayalım.




Sql Server “Saving changes is not permitted…” Hatası

Saving changes is not permitted…

Sql Server üzerinde yer alan tablolarda yapısal değişiklik yapıldığında Sql yukarıda ki gibi bir hata vermektedir, aslında bu hatadan çok bir güvenlik önlemidir. Bu durumu çözmek için şu yolu izleyebiliriz;

Sql Server Management Studio menüsünde Tools > Options > Designers penceresinde “Prevent saving changes that require the table to be re-created” seçeneğinin tıkını kaldırıp kaydedin. İşlem tamam.




SQL İle String Değeri Parçalama

Veri tabanı kolonlarında birden fazla bilgiyi karakter ile ayırarak tutmak tavsiye edilmese de bazı durumlarda bir hücrede birden fazla değer tutulma efektif olabilmektedir.

Örneğin; 2|4|32|34|535|435 değerlerini SQL ile işlemek için “|” karakterinden parçalayıp işlemek gerekebilir. Bunun için gerekli olan SQL kodlarını içeren fonksiyon aşağıdaki gibidir.

SQL Server üzerinde fonksiyon bu kod ile oluşturulduktan sonra kullanımı ve örnek ekran çıktısı ise şöyledir.

Örnek veri olarak yukarıdaki veriyi kullanacağız:

 




Bütün Veri Tabanı İçerisinde String Değer Arama

Merhaba, uzun bir aradan sonra tekrar yeni bir konu ve yeni bir heyecanla blogumuza dönüş yapıyoruz. Bu hafta ki konumuz Ms SQL Server üzerinde olacak.

Özellikle ters mühendislik işlemleri ile yapılan çalışmalarda bütün veri tabanı üzerinde bir değer aramak gerekebiliyor. Bu durumda bütün tabloların bütün satır ve kolonlarında arama yapmak gerekecektir. Bunun için aşağıda verilen SQL kodu ile ilgili stored procedure oluşturulabilir. Prosedür oluşturulduktan sonra aranmak istenen değer prosedüre parametre olarak verilip prosedür işlendiğinde: değerin hangi tablonun hangi kolonunda geçtiği sonuç olarak dönecektir.