İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

Sistem Tabloları ile Çalışmak

03-07-2012 15:24
#1
Aftemelouchos - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
06/2012
Nereden:
Balıkesir -- Erdek
Yaş:
26
Mesajlar:
2.695
Teşekkür (Etti):
11
Teşekkür (Aldı):
238
Konular:
1658
Ticaret:
(0) %
Öncelikle s.a bu gün biraz sistem tablo bilgi sahibi olalım Başlıyalım;
Hangi sistem tablosu nerede yer alıyor, görevleri nelerdir kısaca değinip ardından en çok kullanılan birkaç sistem tablosuna ait sorguları inceleyeceğiz.


sysdatabases: Master veritabınında yer alır ve SQL Server üzerindeki her bir veritabanı için bir satır içerir.

syslogins: Master veritabınında yer alır ve SQL Server’a bağlanmak için gereken login hesablarını içerir.

sysmessages: Master veritabınında yer alır ve SQL Server’ın verebileceği hata mesajlarını içerir.

sysalerts: MSDB veritabınında yer alır ve satır satır uyarı mesajlarını içerir.

syscategories: MSDB veritabınında yer alır ve SQL Server Management Studio tarafından işleri, uyarıları ve operatörleri kaydetmek amacıyla kullanılan kategorileri içerir.

sysdownloadlist: MSDB veritabınında yer alır ve tüm hedef sunucular için download talimatlarının sırasını içerir.

sysjobactivity: MSDB veritabınında yer alır ve anlık SQL Server Agent’a ait işleyişi kontrol eder ve durumu hakkındaki bilgileri içerir.

sysjobhistory: MSDB veritabınında yer alır ve SQL Server Agent tarafından planlanmış işlerin uygulaması hakkındaki bilgileri içerir.

sysjobs: MSDB veritabınında yer alır ve SQL Server Agent tarafından planlanmış işlerle ilgili bilgileri depolar.

sysjobschedules: MSDB veritabınında yer alır ve SQL Server Agent tarafından gerçekleştirilecek işlerin plan bilgilerini içerir.

sysjobservers: MSDB veritabınında yer alır ve belirli bir iş için bir ya da daha fazla hedef sunucu arasındaki tüm bağların bilgilerini içerir.

sysjobsteps: MSDB veritabınında yer alır ve SQL Server Agent tarafından tamamlanmak üzere olan bir işin her aşamasıyla ilgili bilgileri içerir.

sysjobstepslogs: MSDB veritabınında yer alır ve günlük iş bilgilerini içerir.

sysmail_allitems: MSDB veritabınında yer alır ve database mail tarafından işlenmiş mesajları içerir.

sysmailevent_log: MSDB veritabınında yer alır ve database mail sistemi tarafından geri çevrilen her Windows ya da SQL Sunucusu mesajlarını içerir.

sysmail_faileditems: MSDB veritabınında yer alır ve başarısız durumdaki her data mail mesajını içerir.

sysmail_mailattachments: MSDB veritabınında yer alır ve data mail’a iliştirilen ekleri içerir.

sysmail_sentitems: MSDB veritabınında yer alır ve database mail tarafından gönderilen her bir mesajı içerir.

sysmail_unsentitems: MSDB veritabınında yer alır ve "Gönderilemedi" veya "tekrar deneniyor" durumundaki data mail mesajlarını içerir.

sysnotifications: MSDB veritabınında yer alır ve bildirimleri içerir.

sysoperators: MSDB veritabınında yer alır ve her bir SQL Server Agent operatörünü saklar.

sysproxies: MSDB veritabınında yer alır ve SQL Server Agent yetkili hesaplarıyla ilgili bilgileri içerir.

sysproxylogin: MSDB veritabınında yer alır ve her SQL Server Agent yetkili hesabıyla ilişkilendirilmiş SQL Server oturumunu kaydeder.

sysproxysubsystem: MSDB veritabınında yer alır ve her yetkili hesabıyla kullanılan SQL Server alt sistemini kaydeder.

sysschedules: MSDB veritabınında yer alır ve SQL Server Agent zamanlanmış görevlerle ilgili bilgileri içerir.

syssessions: MSDB veritabınında yer alır ve her SQL Server Agent oturumu için SQL Server Agent’ın başlagıç tarihini içerir.

syssubsystems: MSDB veritabınında yer alır ve mevcut SQL Server Agent üzerindeki alt sistemlerle ilgili bilgileri içerir.

systargetservergroupmembers: MSDB veritabınında yer alır ve anlık çok sunuculu grupta listelenmiş grup üyelerini kaydeder.

systargetservergroups: MSDB veritabınında yer alır ve anlık çok sunuculu ortamda listelenmiş hedef sunucu gruplarını kaydeder.

systargetservers: MSDB veritabınında yer alır ve anlık çok sunuculu domain de listelenmiş hedef sunucuları kaydeder.

systaskids: MSDB veritabınında yer alır ve SQL Server’ın önceki sürümlerinde oluşturulmuş görevlerle, güncel
Microsoft SQL Server Management Studio’daki işler arasındaki eşleştirmeleri içerir.

sysaltfiles: Tüm veritabanlarında yer alır ve özel durumlarda, veritabanındaki dosyalara karşılık gelen satırlar içerir.

syscacheobjects: Tüm veritabanlarında yer alır ve ön bellekle ilgili bilgiler içerir.

syscharsets: Tüm veritabanlarında yer alır ve SQL Server 2005’den itibaren veritabanı motoru tarafından kullanılmak üzere karakter katarlarını tutar.

syscolumns: Tüm veritabanlarında yer alır ve veritabanı tablolarındaki her sütunu satıra çevirir.

syscomments: Tüm veritabanlarında yer alır ve veritabanında tutulan her tablo, varsayılan değer, kural, varsayılan kısıtlama, kontrol kısıtlaması için girdi içerir.

sysconfigures: Tüm veritabanlarında yer alır ve kullanıcı tarafından yapılmış konfigurasyon bilgilerini içerir.

sysconstraints: Tüm veritabanlarında yer alır ve veritabanındaki objeler ve bu objelerle ilgili kısıtları içerir.

syscurconfigs: Tüm veritabanlarında yer alır ve geçerli kurulumun her seçeneği için bir girdi içerir.

sysdepends: Tüm veritabanlarında yer alır ve veritabanındaki objelerle (tablo, işlem ve deklanşörler) tanımlarının içerdiği objeler arasındaki bağla ilgili bilgiler içerir.

sysdevices: Tüm veritabanlarında yer alır ve ilgili veritabanına ait diskteki ve de banttaki yedek dosya ile veritabanındaki dosyalara ait bilgileri içerir.

sysfilegroups: Tüm veritabanlarında yer alır ve veritabanındaki her dosya grubuna ait bilgi içerir. Bu tabloda ana dosya grubu için en az bir girdi mevcuttur.

sysfiles: Tüm veritabanlarında yer alır ve veritabanındaki her dosyaya ait bilgi içerir.

sysforeignkeys: Tüm veritabanlarında yer alır ve veritabanındaki tanım tablosunda bulunan foreign key kısıtlamalarıyla ilgili bilgileri içerir.

sysfulltextcatalogs: Tüm veritabanlarında yer alır ve tüm metin katalogları hakkında bilgiler içerir.

sysindexes: Tüm veritabanlarında yer alır ve aktif veritabanındaki her tablo ve dizin için bilgi içerir.

sysindexkeys: Tüm veritabanlarında yer alır ve veritabanı dizinindeki anahtarlar veya kolonlar ile ilgili bilgileri içerir.

syslanguages: Tüm veritabanlarında yer alır ve SQL Server 2005’ten itaberen server da mevcut olan tüm diller için bilgi içerir.

syslockinfo: Tüm veritabanlarında yer alır. Beklemedeki, değişim halindeki ve kabul edilmiş tüm kilit değişiklikleriyle ilgili bilgileri içerir.

sysmembers: Tüm veritabanlarında yer alır ve veritabanı görevindeki her üyeye ait bilgiyi içerir.

sysobjects: Tüm veritabanlarında yer alır ve ilgili veritabanındaki her bir objeye ait bilgiyi içerir.

sysoledbusers: Tüm veritabanlarında yer alır ve özel bağlı sunucuda her kullanıcı ve şifre eşleştirmesi için bilgileri içerir.

sysperfinfo: Tüm veritabanlarında yer alır ve Windows Sistem Monitörü tarafından görüntülenebilen, SQL Server 2005’den itibaren performans ölçücü veritabanı motor bilgilerini içerir.

syspermissions: Tüm veritabanlarında yer alır. Veritabanındaki kabul ve reddedilmiş tüm kullanıcı, grup ve görev izinleri ile ilgili bilgileri içerir.

sysprocesses: Tüm veritabanlarında yer alır. Microsoft SQL Server örneğinde geçerli tüm işlemlerle ilgili bilgileri içerir.

sysprotects: Tüm veritabanlarında yer alır. GRANT ve DENY komutları yardımıyla veritabanındaki güvenlik hesaplarına verilen izinlerle ilgili bilgileri içerir.

sysreferences: Tüm veritabanlarında yer alır. Veritabanındaki ilişkili kolonlarla forgein key kısıtlama tanımlarının eşleştirmesini içerir.

sysremotelogins: Tüm veritabanlarında yer alır. Microsoft SQL Server örneğinde stoklanmış işlemleri çağırmaya izinli tüm uzak kullanıcılara ait bilgi içerir.

sysservers: Tüm veritabanlarında yer alır. Microsoft SQL Server örneğinin OLE DB veri kaynağı olarak erişebildiği tüm sunuculara ait bilgi içerir.

systranschemas: Tüm veritabanlarında yer alır. Karşılıklı yayımlanan makale ve reklamlardaki şemalarda yapılan değişiklikleri takip etmek için kullanılır.

systypes: Tüm veritabanlarında yer alır. Veritabanında, kullanıcı tarafından tanımlanmış ve sistemde bulunan her türlü veri için bilgi tutar.

sysusers: Tüm veritabanlarında yer alır. Her satırda bir NT kullanıcısı, NT grup, SQL Server kullanıcısı ya da SQL rolü içerir.


Şimdi ise bazı işlemlerde kolaylık sağlayan sorguları bu tabloları kullanarak yazalım.


# SQL Server’daki kayıtlı tüm veritabanı listesini almak için;

SELECT name FROM SYS.DATABASES



# Veritabanına ait tabloların listesini almak için;

SELECT name FROM SYS.TABLES


Yukarıdaki sonucu almak için farklı sistem tablolarından yararlanarak aşağıda olduğu gibi farklı alternatif sorgular yazarakta elde edebiliriz.


SELECT name FROM SYS.OBJECTS WHERE type=’U’

SELECT NAME FROM SYSOBJECTS WHERE xtype=’U’

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’U’

SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=’BASE TABLE’



# Veritabanında kayıtlı tüm SP’lerin listesini almak için;

SELECT name FROM SYS.PROCEDURES

Aynı şekilde aşağıdaki sorgulardan da yararlanabilirsiniz.

SELECT name FROM SYS.OBJECTS WHERE type=’P’

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’P’

SELECT NAME FROM SYSOBJECTS WHERE xtype=’P’

SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE=’PROCEDURE’



# Veritabanında kayıtlı Views’lerin listesini almak için;

SELECT name FROM SYS.VIEWS

Alternatifler:

SELECT name FROM SYS.OBJECTS WHERE type=’V’

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’V’

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS



# Aynı şekilde veritabanında kayıtlı tüm fonksiyonların listesi elde etmek için;

SELECT name FROM SYS.OBJECTS WHERE type=’IF’ -- inline function

SELECT name FROM SYS.OBJECTS WHERE type=’TF’ -- table valued function

SELECT name FROM SYS.OBJECTS WHERE type=’FN’ -- scalar function

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’IF’ -- inline function

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’TF’ -- table valued function

SELECT name FROM SYS.ALL_OBJECTS WHERE type=’FN’ -- scalar function

SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE=’FUNCTION’




# Kayıtlı tüm triggerların listesini almak için;

SELECT * FROM SYS.TRIGGERS

veya

SELECT * FROM SYS.OBJECTS WHERE type=’TR’



# Belli bir tabloya ait triggerların listesini görmek için;

SP_HELPTRIGGER Products SP’sini çalıştırabilir veya

SELECT * FROM SYS.TRIGGERS WHERE parent_id = object_id(’products’) sorgusu ile de görebilirsiniz.



# Belli bir tabloya ait sütunları

SP_COLUMNS Products SP’sini çalıştırabilir veya aşağıdaki alternatif sorgulardan yararlanabilirsiniz.

SELECT * FROM SYS.COLUMNS WHERE object_id = object_id(’Products’)

SELECT COLUMN_NAME, Ordinal_position, Data_Type, character_maximum_length FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’Products’



# Belli bir tabloya ait sütuna ulaşmak için aşağıdaki alternatif sorgulardan yararlanabilirsiniz.


SELECT O.name FROM SYS.OBJECTS O INNER JOIN SYS.COLUMNS C ON C.Object_ID = O.Object_ID WHERE C.name LIKE ’%ShipName%’

SELECT OBJECT_NAME(object_id) AS [Table Name] FROM SYS.COLUMNS WHERE name LIKE ’%ShipName%’

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ’%ShipName%’



# Tablodaki toplan satırların listesini almak için;

SELECT COUNT(@@ROWCOUNT) FROM Products

SELECT COUNT (ProductID) FROM Products

SELECT OBJECT_NAME(id) AS [Table Name], rowcnt FROM SYSINDEXES
WHERE OBJECTPROPERTY(id,’isUserTable’)=1 AND indid < 2 ORDER BY rowcnt DESC

SELECT rowcnt FROM sysindexes WHERE id = OBJECT_ID(’Products’) AND indid < 2

SELECT OBJECT_NAME(OBJECT_ID) TableName, row_count FROM sys.dm_db_partition_stats
WHERE object_id = object_id(’Products’) AND index_id < 2



# Veritabanındaki constraints’lerin listesini almak için aşağıdaki sorgulardan yararlanılabilir.

SELECT * FROM SYS.OBJECTS WHERE type=’C’

SELECT * FROM sys.check_constraints




# Tabloda kullanılan indexlerin listesini almak için de;

sp_helpindex Products SP’sinden yararlanabilir veya aşağıdaki sorguyu çalıştırabilirsiniz.

SELECT * FROM sys.indexes WHERE object_id = object_id(’products’)


Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı