Last active
January 31, 2020 12:37
-
-
Save pimbrouwers/8b492da4257b696ac0c5b1ef21da3f32 to your computer and use it in GitHub Desktop.
Removes non-system referential constraints and tables from your master db
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USE [master]; | |
GO | |
DECLARE @sql NVARCHAR(MAX); | |
------ Views ------ | |
DECLARE @view_name NVARCHAR(1024); | |
SELECT TOP 1 | |
@view_name = N'[' + [s].[name] + N'].[' + [v].[name] + N']' | |
FROM [sys].[views] AS [v] | |
JOIN [sys].[schemas] AS [s] | |
ON [s].[schema_id] = [v].[schema_id]; | |
WHILE @view_name IS NOT NULL | |
BEGIN | |
SET @sql = N'DROP VIEW ' + @view_name + N';'; | |
EXEC [sys].[sp_executesql] @stmt = @sql; | |
SELECT TOP 1 | |
@view_name = N'[' + [s].[name] + N'].[' + [v].[name] + N']' | |
FROM [sys].[views] AS [v] | |
JOIN [sys].[schemas] AS [s] | |
ON [s].[schema_id] = [v].[schema_id]; | |
END; | |
-------- Constraints ------ | |
DECLARE @schema_name NVARCHAR(1024); | |
DECLARE @table_name NVARCHAR(1024); | |
DECLARE @constraint_name NVARCHAR(1024); | |
SELECT TOP 1 | |
@schema_name = [TABLE_SCHEMA] | |
, @table_name = [TABLE_NAME] | |
, @constraint_name = [CONSTRAINT_NAME] | |
FROM [INFORMATION_SCHEMA].[TABLE_CONSTRAINTS] | |
WHERE [TABLE_CATALOG] = 'master' | |
AND [CONSTRAINT_TYPE] = 'foreign key'; | |
WHILE @table_name IS NOT NULL | |
AND @constraint_name IS NOT NULL | |
BEGIN | |
SET @sql = N'ALTER TABLE [' + @schema_name + N'].[' + @table_name + N'] DROP CONSTRAINT [' + @constraint_name + N'];'; | |
EXECUTE [sys].[sp_executesql] @stmt = @sql; | |
PRINT @sql; | |
SELECT TOP 1 | |
@schema_name = [TABLE_SCHEMA] | |
, @table_name = [TABLE_NAME] | |
, @constraint_name = [CONSTRAINT_NAME] | |
FROM [INFORMATION_SCHEMA].[TABLE_CONSTRAINTS] | |
WHERE [TABLE_CATALOG] = 'master' | |
AND [CONSTRAINT_TYPE] = 'foreign key'; | |
END; | |
------ Tables ------ | |
SELECT TOP 1 | |
@schema_name = SCHEMA_NAME([t].[schema_id]) | |
, @table_name = [t].[name] | |
FROM [sys].[tables] AS [t] | |
WHERE [t].[type] = 'U' | |
AND [t].[is_ms_shipped] = 0; | |
WHILE @table_name IS NOT NULL | |
AND @schema_name IS NOT NULL | |
BEGIN | |
SET @sql = N'DROP TABLE [' + @schema_name + N'].[' + @table_name + N'];'; | |
EXECUTE [sys].[sp_executesql] @stmt = @sql; | |
SELECT TOP 1 | |
@schema_name = SCHEMA_NAME([t].[schema_id]) | |
, @table_name = [t].[name] | |
FROM [sys].[tables] AS [t] | |
WHERE [t].[type] = 'U' | |
AND [t].[is_ms_shipped] = 0; | |
END; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment