Bir SQL Server veritabaniniz mi var. Veritabanindaki tablolarin boyutlarini ve satir sayilarini mi ögrenmeniz gerekiyor. O zaman asagidaki T-SQL kodu çalistirin, zaman kazanin.
T-SQL kodunu buradan indirebilirsiniz
/* Tablolar, isimlerine göre siralanir */ SELECT ROW_NUMBER() OVER (ORDER BY TABLE_NAME) AS TABLE_NO, TABLE_NAME, TABLE_SCHEMA INTO #Tablo FROM INFORMATION_SCHEMA.TABLES GO /* Tablo verilerini tutacak geçici tablo yaratilir */ CREATE TABLE #TabloBilgileri ([Tablo Adi] varchar(128), [Satir Sayisi] varchar(11), [Toplam Alan] varchar(18), [Veri Alani] varchar(18), [Index Alani] varchar(18), [Kullanilmayan Alan] varchar(18)) GO /* Her tablo için “exec sp_spaceused” komutu çaliþtirilir */ DECLARE @sayac int DECLARE @tablosayisi int DECLARE @sql varchar(MAX) SET @tablosayisi = (SELECT MAX(TABLE_NO) FROM #Tablo) SET @sayac = 0 WHILE @sayac < @tablosayisi BEGIN SET @sayac = @sayac + 1 SET @sql = ‘insert into #TabloBilgileri exec sp_spaceused "’ + (SELECT TABLE_SCHEMA FROM #Tablo WHERE @sayac = TABLE_NO) + ‘.[‘ + (SELECT TABLE_NAME FROM #Tablo WHERE @sayac = TABLE_NO) + ‘]"’ EXEC(@sql) END /* KB cinsinden gösterilen tablo boyutlari MB ve GB boyutlarinda gösterilir */ SELECT [Tablo Adi], [Satir Sayisi], (CASE WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024) < 1024 THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024) + ‘ MB’ ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Toplam Alan],LEN([Toplam Alan])-3))/1024/1024)) + ‘ GB’ END) AS [Toplam Alan] ,(CASE WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024) < 1024 THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024) + ‘ MB’ ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Veri Alani],LEN([Veri Alani])-3))/1024/1024)) + ‘ GB’ END) AS [Veri Alani] ,(CASE WHEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Index Alani],LEN([Index Alani])-3))/1024) < 1024 THEN CONVERT(varchar(50),CONVERT(bigint,LEFT([Index Alani],LEN([Index Alani])-3))/1024) + ‘ MB’ ELSE CONVERT(varchar(50),CONVERT(decimal(10,2),CONVERT(decimal,LEFT([Index Alani],LEN([Index Alani])-3))/1024/1024)) + ‘ GB’ END) AS [Index Alani] FROM #TabloBilgileri tb /* Geçici tablolar silinir */ DROP TABLE #Tablo DROP TABLE #TabloBilgileri
sabri abiye yamuk olmaz 2 3 senedir t-sql yaziyor dagilin.
olumsuz yorum yazan kisiler: bu kod cok isime yaradi, yazan arkadasin eline ve emegine saglik. siz ne diye bidi bidi yapiyorsunuz???
tamm arkadasim bu kodu anladik ama onu ekranda gostermek iicn ne yapacagiz…onuda anlatirsan sewinirim
Acaba bu kodu yazan arkadas yaw geyik olsun ben bu kadar kod yazayimda bir tablodaki satir sayisini bulayim diyemi yazdi sizce.
Bir tablonun bilgileri nasil alinir mantigini anlatmak için mi yazmis.
Simdi düsünme zamani…
dediginiz mantikdala satir sayisini bulmak dogru sonucu getirmez. Anladigim kadariyla identity bir kolon kullanmakdan bahsediyorsunuz.
sql biliyorum diye bu kadar uzun bir deyim yazmanin tek sebebi hava atmaktir. peki bir soru select tablo adi,satir sayisi demissin . veri tabaninda bir satirsayisi diye bir sutun eklersen ,bu sutuna her kayit için ne yazicaksin .diyelimki her kayit için sutun sayisini bir artirdin ve en sondaki kayitta toplam sutun sayisi yaziyor . bu satir sayisini almak marifet degilki sadece en sondaki satiri okucaksin 🙂