5 Kasım 2008 Çarşamba

SQL Server 2008: Replace Fonksiyonu

SQL Server 2005' te, Replace fonksiyonunu kullandığınızda, bu fonksiyonun aldığı üç parametrenin sağındaki boşluklar otomatik olarak siliniyordu (RTRIM). Fakat SQL Server 2008' deki Replace fonksiyonunda bu boşluklar otomatik olarak silinmiyor. Bu işlemin aynen SQL Server 2005' teki gibi olmasını isteyenler Replace fonksiyonunu şu şekilde kullanabilirler:

REPLACE(RTRIM(parametre1), RTRIM(parametre2), RTRIM(parametre3)).

SQL Server' da noktalı virgül kullanımı

SQL Server' ın sıradaki değil (yani muhtemelen 2011' de çıkacak versiyon değil), ama ondan sonraki SQL Server versiyonunda (muhtemelen SQL Server 2014) T-SQL komutlarının sonuna noktalı virgül koyulması zorunlu olacak.

Bunu şimdiden sizinle paylaşıyorum ki, ileriye dönük projeleriniz için noktalı virgül kullanımına şimdiden başlayın. Aksi takdirde, gelecekteki SQL Server' da uygulamanızı çalıştırırken sorun yaşarsınız. Muhtemelen "daha çook var" diyorsunuzdur, zaten benim de "ileriye dönük" ibaresini vurgulamamın nedeni buydu.

SQL Command (SQLCMD)

SQLCMD aracı vasıtasıyla çalıştırdığınız Script' lerde veya komut satırlarında değişkenler kullanabileceğinizi biliyor muydunuz?

Örneğin, "yedek_al.sql" isimli Script' inizin içinde şöyle bir yedek alma komutu olsun:

"BACKUP DATABASE $(Veritabanim) TO DISK=N'D:\SQLYedekler\$(Veritabanim).bak'"

Gördüğünüz gibi, buradaki değişken adı "Veritabanim". Bu değişkene atanacak değer ise, SQLCMD komutuyla "yedek_al.sql" Script dosyası çağırılırken "-v" parametresi ile atanıyor.

Örnek: SQLCMD -E -i yedek_al.sql -v Veritabanim="Muhasebe".

SQL Command (SQLCMD)

ISQL ve OSQL, SQL Server 2005' ten önce SQL Server Instance' larında Komut İstemcisinden işlem yapmak için kullanılan Komut İstemcisi araçlarıydı. SQL Server 2005 ile birlikte, tamamen yeniden yazılan SQL Command (SQLCMD) Komut İstemci aracı geliştirildi ve OSQL da tedavülden kalkma sürecine girdi ("Deprecated" oldu).

SQLCMD' den önceki araçlar SQL Server Instance' larına ODBC ile bağlanıyorlar ve bu yüzden bir seferde bir Instance' a bağlanabiliyorlardı. Fakat SQLCMD aracı bağlantı için OLE DB kullanıyor ve bu sayede değişik SQL Server Instance' larına bir Script' te birden fazla bağlantı kurabiliyor.

Örnek vermek gerekirse, ODBC ile bağlandığınızda bir Script içerisinde iki farklı SQL Server Instance' ından iki farklı veritabanının yedeğini alamazsınız. Fakat aynı işlem için SQLCMD kullanarak ve Script' inizde de

":CONNECT SQLServerInstanceAdı -E"

komutunu da kullanarak farklı Instance' larda işlem yapabilirsiniz.

SQL Server Agent

SQL Server 2005 ve 2008' de, bir kullanıcıyı "sysadmin" yapmadan, bu kullanıcıya iş (Job) oluşturma ve bunu yönetme hakkı verebileceğinizi biliyor muydunuz?

Bunun için, bahsi geçen kullanıcıyı MSDB veritabanındaki üç rolden birine atamanız yeterli.

Rolleri, yetkileri en kısıtlı olandan itibaren yazıyorum:
1) SQLAgentUserRole,
2) SQLAgent ReaderRole,
3) SQLAgentOperatorRole.

Roller hakkında daha fazla bilgi için Books Online' a bakabilirsiniz: http://msdn.microsoft.com/en-us/library/ms188283.aspx