Perşembe, Kasım 26, 2009

SQLCMD Aracı

MSSQL ve .NET ile projeler üretirken işimizi kolaylaştıracak araçlar ve sihirbazlar arasında tabiki komut satırından çalışan araçlara ihtiyacımız olmuyordu. Dün müşterilerden birisinin bilgisayarına teamviewer ile bağlanıp bilgisayarda SQL Management Studio olmadığını anlayınca ilk olarak uzaktan SQL Management Studio ile bağlanmayı denedim. Modemden kaynaklanan sorunlar nedeniyle bir türlü ateş duvarını aşamadık. İnternetten herhangi bir yönetim aracı indirmek yavaş internet bağlantısı nedeniyle imkansız gibi görünüyordu ve  o anda aklıma Oracle SQLPLUS geldi. SQLCMD i bilmeden görmeden SQLPLUS ile tanışmam biraz da Microsoft’un bu tür araçlara bakış açısından kaynaklanıyor olabilir çünkü SQLCMD artık kullanılmayan bir araç olarak görünüyor internette.   Ama oracle ile uğraşırken SQLPLUS aracının komut satırından çalışan ve çok marifetli bir araç olduğunu öğrenmiştim. SQLCMD ile bağlanıp veritabanını oluşturmam ve veritabanı tablolarını ve ilişkilerini düzenleyen SQL scriptini çalıştırmam gerekiyordu. Biraz araştırma sonrasında benim işimi görecek komutları toparladım.

Önce veritabanı dosyasını oluşturmak gerekli. Bunun için komut satırını açarak SQLCMD ile giriş yapıyoruz.

> sqlcmd –S .\SQLEXPRESS

burada .\SQLEXPRESS kısmına SQL Servisinin ismini yazmamız gerekli.

> create database TREEM
> GO

Burada veritabanının ismini vererek veritabanı oluşturduk. GO deyimi transact-SQL için ifadenin bittiğini ve buraya kadar olanı uygula anlamında kullanılan bir anahtar sözcük. Örnek olarak bundan sonra yaptığımız işlemlerin TREEM veritabanı üzerinde uygulanmasını istiyorsak

> USE TREEM
> GO

ile bunu sağlayabiliriz.

Veritabanı hazır olduktan sonra SQL Scriptini çalıştırma vakti geldi. Bunun için de yeni bir komut satırında

> sqlcmd –S .\SQLEXPRESS -i C:\SqlScript.sql

Burada script dosyasının yerini belirtmemiz gerekiyor.

SQLCMD ile  2. Round

Tam kurtuldum dediğim anda client programının biryerinde tarih formatından kaynaklanan bir hata baş gösterdi ve tüm uğraşlarıma rağmen bir daha SQL Datetime kullanmamaya yemin ettikten sonra client programındaki SQLDatetime kullanan alanları string kullanacak şekle getirdim ve veritabanında küçük bir değişiklik yapma gereksinimi böylece ortaya çıkmış oldu. İşlemler tablosundaki datetime olan islemTarihi alanı varchar(50) olarak değiştirilmeliydi ve ben yine SQLCMD ile başbaşaydım. Bu kez yine eksik Oracle çalışmalarımın meyvesini yemeye başladım ve benim de kendime hayret ettiğim bir alter table komutu ile bu sorunu da bertaraf ettim.

> SQLCMD –S .\SQLEXPRESS –U sa –P 1111
> USE treem
> GO

>alter table tbl_islemler alter column islemTarihi VARCHAR(50)
>GO

bu komutlarla önce süper user olarak kullanıcı girişi yaptım. –U parametresinden sonra kullanıcı adı ve –P parametresinden sonra da parola girilmeli. tbl_islemler tablosundaki islemTarihi kolonunun veri tipini de VARCHAR(50) olarak değiştirdim. Burada ilginç bir nokta olarak belirtmek gerekirse, eğer SQL Management Studio ile bu işlemi gerçekleştiriyor olsaydım bu veritipi değişikliğine izin vermeyecekti ve önce tbl_islemler tablosundaki tüm veriyi silmem gerekecekti. SQLCMD ile yaptığım işlem sonucunda programdan sorgu sonuçlarına göre bu komutlar sonrasında tablodaki veriler zaten otomatik olarak silinmişler.

SQLCMD ile ilgili güzel bir deneyim yaşamış oldum. Artık elimin altındaki bu aracı hep kullanmaya çalışacağım.

0 yorum:

Yorum Gönder