从SQL Server中删除所有用户定义的类型

时间:2015-03-10 21:59:07

标签: sql sql-server-2008

我需要删除所有用户定义的类型,用户定义的数据类型和用户定义的表(所有类型文件夹中)。是否可以使用T-SQL脚本执行此操作,还是必须使用SSMS?

3 个答案:

答案 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