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

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


پرسش امنیتی

مقدار 7 به علاوه 2 چقدر میشود؟

دیدگاه شما پس از تایید نمایش داده خواهد شد.

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

به عنوان مثال در کدهای زیر اسکمای 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