Beranda > Microsoft SQL Server > Mengetahui Space yang digunakan oleh table SQL Server

Mengetahui Space yang digunakan oleh table SQL Server

518V8B7GY1L._SL500_AA280_Kejadian :

Pada suatu hari, seperti biasa Budi melakukan pengecekan terhadap server-server SQL SERVER 2000 yang digunakan, hal ini dilakukan guna menjaga kinerja komputer server. Budi sempat terkejut melihat space hardisk yang tinggal sedikit. Yang pertama terlintas di pikiran Budi adalah kenapa bisa begitu? padahal Harddisk tersebut khusus diisi dengan database saja, dan harusnya dari segi penggunaan, database tersebut tidak mungkin bisa membengkak sampai sedemikian besar.

Dengan muka penasaran Budi menerusui tiap-tiap database dan mendapatkan Log file yang besar, dengan perasaan lega Budi melakukan pengosongan Log file dan shrink database, tetapi perasaan lega tersebut hanya sebentar, karena file .MDF tetapi tidak mau menyusut. dari kenyataan ini Budi menyimpulkan bahwa terjadi pembengkakan data didalam salah satu atau beberapa tabel yang ada di database tersebut.

Tetapi bagaimana si Budi bisa mengetahui Tabel yang bermasalah tersebut? akhirnya dengan bantuan Mr. Google (teman setia Budi), Budi bisa mengetahui space yang digunakan tiap-tiap tabel dalam database tersebut sehingga bisa ditelusuri lebih spesifik, dan akhirnya masalah tersebut dapat diselesaikan.

Nah, apakah anda juga pernah mengalami masalah diatas?, coba bayangkan seorang database administrator yang memiliki beberapa database dan masing-masing database memiliki ratusan table. wah.. akan sangat sulit sekali dalam melakukan pengontrolan space tersebut.

Untuk itu penulis mencoba memberikan sebuah solusi (script) yang bisa digunakan untuk mengetahui table-table apa yang menyebabkan database kita menjadi sedemikian besar.

CREATE PROCEDURE CEK_USAGE AS
DECLARE @table_name VARCHAR(500)
DECLARE @schema_name VARCHAR(500)
DECLARE @tab1 TABLE(
        tablename VARCHAR (500) collate database_default
       ,schemaname VARCHAR(500) collate database_default
)

CREATE TABLE #temp_Table (
        tablename sysname
       ,row_count INT
       ,reserved VARCHAR(50) collate database_default
       ,data VARCHAR(50) collate database_default
       ,index_size VARCHAR(50) collate database_default
       ,unused VARCHAR(50) collate database_default
)

INSERT INTO @tab1
SELECT Table_Name, Table_Schema
FROM information_schema.tables
WHERE TABLE_TYPE = 'BASE TABLE'

DECLARE c1 CURSOR FOR
SELECT Table_Schema + '.' + Table_Name
FROM information_schema.tables t1
WHERE TABLE_TYPE = 'BASE TABLE'

OPEN c1
FETCH NEXT FROM c1 INTO @table_name
WHILE @@FETCH_STATUS = 0
BEGIN
        SET @table_name = REPLACE(@table_name, '[','');
        SET @table_name = REPLACE(@table_name, ']','');

        -- make sure the object exists before calling sp_spacedused
        IF EXISTS(SELECT id FROM sysobjects WHERE id = OBJECT_ID(@table_name))
        BEGIN
               INSERT INTO #temp_Table EXEC sp_spaceused @table_name, false;
        END

        FETCH NEXT FROM c1 INTO @table_name
END
CLOSE c1
DEALLOCATE c1

SELECT  t1.*
       ,t2.schemaname
FROM #temp_Table t1
INNER JOIN @tab1 t2 ON (t1.tablename = t2.tablename )
ORDER BY schemaname,t1.tablename;

DROP TABLE #temp_Table
GO

anda tinggal melakukan copy – paste ke dalam store procedure anda dan jalankan seperti biasanya maka anda akan melihat usage space setiap tabel.

selamat mencoba

salam

  1. Belum ada komentar.
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: