有没有人有一个脚本可以从数据库中删除所有非系统表/进程/ View ?

我创建了一些需要清理的 View ,过程和表,并且单独进行处理非常麻烦。

最佳答案

您始终可以查询系统目录 View ,并使其生成必要的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窗口中并执行它们即可。

关于sql - 删除SQL Server 2008中所有非系统对象的脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4499155/

10-13 04:36