Скрипт для удаления всех несистемных объектов в SQL Server 2008 - PullRequest
9 голосов
/ 21 декабря 2010

Есть ли у кого-нибудь скрипт, который удалит все не системные таблицы / procs / views из базы данных?

Я создал несколько представлений, процедур и таблиц, которые мне нужно очистить, и выполнять их по отдельности слишком громоздко.

Ответы [ 2 ]

17 голосов
/ 21 декабря 2010

Вы всегда можете запросить представления вашего системного каталога и сгенерировать необходимые операторы DROP:

SELECT 'DROP PROCEDURE [' + SCHEMA_NAME(schema_id) + '].[' + pr.NAME +']'
FROM sys.procedures pr
WHERE pr.is_ms_shipped = 0

UNION

SELECT 'DROP VIEW [' + SCHEMA_NAME(schema_id) + '].[' + v.NAME + ']'
FROM sys.views v
WHERE v.is_ms_shipped = 0

UNION

SELECT 'ALTER TABLE [' + SCHEMA_NAME(schema_id) + '].[' + OBJECT_NAME(fk.parent_object_ID) + '] DROP CONSTRAINT ' + fk.name 
FROM sys.foreign_keys fk
WHERE is_ms_shipped = 0

UNION

SELECT 'DROP TABLE [' + SCHEMA_NAME(schema_id) + '].[' + t.NAME + ']'
FROM sys.tables t
WHERE t.is_ms_shipped = 0

Это создаст длинный список DROP ..... операторов, просто скопируйте и вставьте их в новую SSMSокно и выполните их.

11 голосов
/ 21 декабря 2010

Разве не было бы проще удалить / восстановить базу данных?

DROP DATABASE yourdbname
CREATE DATABASE yourdbname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...