یادداشت های یک برنامه نویس

نکات برنامه نویسی ، معرفی نرم افزار و علایق شخصی

حذف همه ی جداول یک Schema در SQL Server

حذف همه جداول، ویو ها ، فانکشن ها و استورپروسیجرهای یک اسکمای خاص

به عنوان مثال در کدهای زیر اسکمای MHV در نظر گرفته شده است. با اجرای این کد چیزی پاک نمی شود بلکه کد های Drop کردن ساخته می شوند، آن ها را کپی و اجرا نمایید.

DECLARE @SchemaName NVARCHAR(MAX)
set @SchemaName = 'MHV'


--------Drop All Table in @SchemaName--------
DECLARE @SqlStatementTable NVARCHAR(MAX)
SELECT @SqlStatementTable = 
    COALESCE(@SqlStatementTable, N'') + N'DROP TABLE ['+@SchemaName+'].' +
    QUOTENAME(TABLE_NAME) + N';' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = @SchemaName and TABLE_TYPE = 'BASE TABLE'

PRINT @SqlStatementTable


--------Drop All View in MHV @SchemaName--------
DECLARE @SqlStatementView NVARCHAR(MAX)
SELECT @SqlStatementView = 
    COALESCE(@SqlStatementView, N'') + N'DROP VIEW ['+@SchemaName+'].' + 
    QUOTENAME(TABLE_NAME) + N';' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = @SchemaName  and TABLE_TYPE = 'VIEW'

PRINT @SqlStatementView


--------Drop All Procedure in @SchemaName--------
DECLARE @SqlStatementProcedure NVARCHAR(MAX)
SELECT @SqlStatementProcedure = 
    COALESCE(@SqlStatementProcedure, N'') + N'DROP PROCEDURE ['+@SchemaName+'].' + 
    QUOTENAME(ROUTINE_NAME) + N';' + CHAR(13)
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = @SchemaName and ROUTINE_TYPE = 'PROCEDURE'

PRINT @SqlStatementProcedure


--------Drop All Function in @SchemaName--------
DECLARE @SqlStatementFunction NVARCHAR(MAX)
SELECT @SqlStatementFunction = 
    COALESCE(@SqlStatementFunction, N'') + N'DROP FUNCTION ['+@SchemaName+'].' + 
    QUOTENAME(ROUTINE_NAME) + N';' + CHAR(13)
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = @SchemaName and ROUTINE_TYPE = 'FUNCTION'

PRINT @SqlStatementFunction

 

دیدگاه ها: ارسال دیدگاه