简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM