2008-06-01

Bir Nesnenin Detay Bilgilerini Görme

Merhaba Değerli Okuyucular,

SQL Server'da bir nesne üzerinde bir şeyler yapmak istediğimde o nesnenin detay bilgilerini bilmek isterim. Örneğin bir tabloya yeni bir alan ekeleneceği zaman bu tablo ne zaman oluşturulmuş, en son ne zaman değişikliğe uğramış, üzerinde kaç Insert, Update, Delete triggerı var, kaç satırdan oluşuyor, fiziksel büyüklüğü ne kadar, tablonun alanları, tablo üzerindeki indexler ve constraintler vs gibi bilgileri anında görebilirsem tablo üzerinde daha sağlıklı bir değişiklik yapma şansım olur. Tüm bu özellikleri bir SP üzerinde yapıp tek noktadan tüm bilgilere erişme ihtiyacı hissettim. Diğer şekilde tablonun bu özelliklerine ulaşmak için tek tek ilgili yerlere bakmak bana sıkıcı ve hammalık gibi geliyor. Bu yüzden SQL server üzerindeki bir nesnenin detay bilgilerini öğrenmek için ObjectInfo adında bir SP oluşturdum. Sizlere de bir faydası dokunur diye günlüğümde yayınlıyorum:

CREATE PROCEDURE [dbo].[ObjectInfo]
@ObjectName [varchar](255) = null
WITH EXECUTE AS CALLER
AS
/*
Yazan : Mehmet GÜZEL
Tarih : 30.05.2005
Açıklama: İlgili nesnenin detay bilgilerini verir.
*/
SET NOCOUNT ON
DECLARE @Type VARCHAR(64)
BEGIN
SELECT @Type = type
FROM sys.objects
WHERE name=@ObjectName
IF @Type ='U'
BEGIN
SELECT OBJECT_NAME(O.object_id),
O.type Type,
O.type_desc AS TypeDesc,
O.create_date AS Create_Date,
O.modify_date AS modify_date,
MAX(S.rowcnt) AS Rows,
8.0*SUM(S.reserved) AS SizeKB,
(SELECT COUNT(1) FROM sys.trigger_events WHERE type_desc='INSERT' AND object_id =O.object_id) AS InsertTrCount,
(SELECT COUNT(1) FROM sys.trigger_events WHERE type_desc='UPDATE' AND object_id =O.object_id ) AS UpdateTrCount,
(SELECT COUNT(1) FROM sys.trigger_events WHERE type_desc='DELETE' AND object_id =O.object_id) AS DeleteTrCount
FROM sys.all_objects O LEFT OUTER JOIN sys.sysindexes S ON O.object_id =S.id
WHERE O.name=@ObjectName
GROUP BY O.object_id,
O.type,
O.type_desc,
O.create_date,
O.modify_date
END
IF @Type ='P'
BEGIN
SELECT type AS Type,
type_desc AS TypeDesc,
create_date AS CreateDate,
modify_date AS ModifyDate
FROM sys.procedures
WHERE name=@ObjectName
END
EXEC sp_help @ObjectName
RETURN 0
END


Not: SP, SQL Server 2005/2008 ortamında geliştirilip derlenmiştir, SQL Server ortamında syntax hataları verebilir.

Hiç yorum yok:

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.