[英]Drop All User-Defined Types from SQL Server
I need to drop all User-Defined Types, User-Defined Data Types and User-Defined Tables (all in Types folder). 我需要删除所有用户定义的类型,用户定义的数据类型和用户定义的表(都在“类型”文件夹中)。 Is it possible to do this using a T-SQL script, or must I use SSMS?
是否可以使用T-SQL脚本执行此操作,还是必须使用SSMS?
select 'drop type ' + quotename(schema_name(schema_id)) + '.' + quotename(name)
from sys.types
where is_user_defined = 1
You can try getting all you user defined type objects and create a script using this query or Generate Script Clicking Task under your database. 您可以尝试获取所有用户定义的类型对象,并使用此查询或数据库下的“生成脚本单击任务”来创建脚本。
http://blog.falafel.com/t-sql-drop-all-objects-in-a-sql-server-database/ http://blog.falafel.com/t-sql-drop-all-objects-in-a-sql-server-database/
For the above link posted T-SQL: Drop All Objects in a SQL Server Database 对于上面发布的T-SQL链接:删除SQL Server数据库中的所有对象
I added following code to replace check Constraint from Drop Constraint by Stefan Steiger to Drop All Constraints. 我添加了以下代码,以替换Stefan Steiger的Drop Drop Constraint中的 Check Constraint来丢弃所有约束。 I chose below code because it uses same approach
我选择以下代码,因为它使用相同的方法
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
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.