SQL Server’da Veritabanının İçeriğini Boşaltmak

Herkese merhaba,

Bu yazıda SQL Server’da veritabanının içeriğini boşaltmak hakkında bilgi vereceğim.

SQL Server’da bazı durumlarda veritabanının içeriğinin komple, yani her şeyiyle silinmesini isteyebiliriz.

Aşağıdaki kodu kullanarak bu işlemi rahatlıkla yapabilirsiniz.

Uyarı : Bu kodu canlı çalışan sistem üzerinde ya da herhangi bir deneme veritabanı üzerinde test etmeden kesinlikle denemeyin! Aksi durumda tüm sorumluluk size aittir.

--Tüm prosedürleri veritabanından kaldırmak 

DECLARE @name VARCHAR(128);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           [name]
    FROM sysobjects
    WHERE [type] = 'P'
          AND category = 0
    ORDER BY [name]
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) + ']';
    EXEC (@SQL);
    PRINT 'Kaldırılan Prosedür: ' + @name;
    SELECT @name =
    (
        SELECT TOP 1
               [name]
        FROM sysobjects
        WHERE [type] = 'P'
              AND category = 0
              AND [name] > @name
        ORDER BY [name]
    );
END;

--Tüm viewları veritabanından kaldırmak

DECLARE @name VARCHAR(128);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           [name]
    FROM sysobjects
    WHERE [type] = 'V'
          AND category = 0
    ORDER BY [name]
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) + ']';
    EXEC (@SQL);
    PRINT 'Kaldırılan View: ' + @name;
    SELECT @name =
    (
        SELECT TOP 1
               [name]
        FROM sysobjects
        WHERE [type] = 'V'
              AND category = 0
              AND [name] > @name
        ORDER BY [name]
    );
END;

--Tüm fonksiyonları veritabanından kaldırmak

DECLARE @name VARCHAR(128);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           [name]
    FROM sysobjects
    WHERE [type] IN ( N'FN', N'IF', N'TF', N'FS', N'FT' )
          AND category = 0
    ORDER BY [name]
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) + ']';
    EXEC (@SQL);
    PRINT 'Kaldırılan Fonksiyon : ' + @name;
    SELECT @name =
    (
        SELECT TOP 1
               [name]
        FROM sysobjects
        WHERE [type] IN ( N'FN', N'IF', N'TF', N'FS', N'FT' )
              AND category = 0
              AND [name] > @name
        ORDER BY [name]
    );
END;


--Tüm foreign keyleri veritabanından kaldırmak

DECLARE @name VARCHAR(128);
DECLARE @constraint VARCHAR(254);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_CATALOG = DB_NAME()
          AND CONSTRAINT_TYPE = 'FOREIGN KEY'
    ORDER BY TABLE_NAME
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint =
    (
        SELECT TOP 1
               CONSTRAINT_NAME
        FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
        WHERE CONSTRAINT_CATALOG = DB_NAME()
              AND CONSTRAINT_TYPE = 'FOREIGN KEY'
              AND TABLE_NAME = @name
        ORDER BY CONSTRAINT_NAME
    );
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) + '] DROP CONSTRAINT [' + RTRIM(@constraint) + ']';
        EXEC (@SQL);
        PRINT 'Kaldırılan FK Constraint: ' + @constraint + ' on ' + @name;
        SELECT @constraint =
        (
            SELECT TOP 1
                   CONSTRAINT_NAME
            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
            WHERE CONSTRAINT_CATALOG = DB_NAME()
                  AND CONSTRAINT_TYPE = 'FOREIGN KEY'
                  AND CONSTRAINT_NAME <> @constraint
                  AND TABLE_NAME = @name
            ORDER BY CONSTRAINT_NAME
        );
    END;
    SELECT @name =
    (
        SELECT TOP 1
               TABLE_NAME
        FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
        WHERE CONSTRAINT_CATALOG = DB_NAME()
              AND CONSTRAINT_TYPE = 'FOREIGN KEY'
        ORDER BY TABLE_NAME
    );
END;

--Tüm primary keyleri veritabanından kaldırmak

DECLARE @name VARCHAR(128);
DECLARE @constraint VARCHAR(254);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE CONSTRAINT_CATALOG = DB_NAME()
          AND CONSTRAINT_TYPE = 'PRIMARY KEY'
    ORDER BY TABLE_NAME
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @constraint =
    (
        SELECT TOP 1
               CONSTRAINT_NAME
        FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
        WHERE CONSTRAINT_CATALOG = DB_NAME()
              AND CONSTRAINT_TYPE = 'PRIMARY KEY'
              AND TABLE_NAME = @name
        ORDER BY CONSTRAINT_NAME
    );
    WHILE @constraint IS NOT NULL
    BEGIN
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) + '] DROP CONSTRAINT [' + RTRIM(@constraint) + ']';
        EXEC (@SQL);
        PRINT 'Kaldırılan PK Constraint: ' + @constraint + ' on ' + @name;
        SELECT @constraint =
        (
            SELECT TOP 1
                   CONSTRAINT_NAME
            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
            WHERE CONSTRAINT_CATALOG = DB_NAME()
                  AND CONSTRAINT_TYPE = 'PRIMARY KEY'
                  AND CONSTRAINT_NAME <> @constraint
                  AND TABLE_NAME = @name
            ORDER BY CONSTRAINT_NAME
        );
    END;
    SELECT @name =
    (
        SELECT TOP 1
               TABLE_NAME
        FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
        WHERE CONSTRAINT_CATALOG = DB_NAME()
              AND CONSTRAINT_TYPE = 'PRIMARY KEY'
        ORDER BY TABLE_NAME
    );
END;

--Tüm tabloları veritabanından kaldırmak

DECLARE @name VARCHAR(128);
DECLARE @SQL VARCHAR(254);
SELECT @name =
(
    SELECT TOP 1
           [name]
    FROM sysobjects
    WHERE [type] = 'U'
          AND category = 0
    ORDER BY [name]
);
WHILE @name IS NOT NULL
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) + ']';
    EXEC (@SQL);
    PRINT 'Kaldırılan Table: ' + @name;
    SELECT @name =
    (
        SELECT TOP 1
               [name]
        FROM sysobjects
        WHERE [type] = 'U'
              AND category = 0
              AND [name] > @name
        ORDER BY [name]
    );
END;

Yukarıdaki kod bloğunu Northwind veritabanı üzerinde test edeceğim. Northwind veritabanı seçili iken kodumu çalıştırıyorum.

SQL Server’da Veritabanının İçeriğini Boşaltmak

İşlem başarı ile gerçekleşti ve kaldırılan objeler de listelenmiş oldu.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

318 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!