我需要删除所有用户定义的类型,用户定义的数据类型和用户定义的表(所有类型文件夹中)。是否可以使用T-SQL脚本执行此操作,还是必须使用SSMS?
答案 0 :(得分:3)
select 'drop type ' + quotename(schema_name(schema_id)) + '.' + quotename(name)
from sys.types
where is_user_defined = 1
您可以尝试获取所有用户定义的类型对象,并使用此查询创建脚本或在数据库下生成脚本单击任务。
http://blog.falafel.com/t-sql-drop-all-objects-in-a-sql-server-database/
答案 1 :(得分:1)
对于上面发布的链接 T-SQL: Drop All Objects in a SQL Server Database
我添加了以下代码来替换从Drop Constraint by Stefan Steiger到Drop All Constraints的检查约束。我选择下面的代码,因为它使用相同的方法
DECLARE @sql nvarchar(MAX)
SET @sql = ''
SELECT @sql = @sql + 'ALTER TABLE ' + QUOTENAME(RC.CONSTRAINT_SCHEMA)
+ '.' + QUOTENAME(KCU1.TABLE_NAME)
+ ' DROP CONSTRAINT ' + QUOTENAME(rc.CONSTRAINT_NAME) + '; '
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
答案 2 :(得分:0)
Declare @sql NVARCHAR(MAX) = N'';
SELECT @sql = @sql + N' DROP type '
+ QUOTENAME(SCHEMA_NAME(schema_id))
+ N'.' + QUOTENAME(name)
FROM sys.types
WHERE is_user_defined = 1
Exec sp_executesql @sql