日期:2014-05-17  浏览次数:20471 次

sql2005 无法删除自定义类型,因为正在使用
RT。。求高手指点解决方案。。
if exists(select 1 from systypes where name='ITEM_STR_255')
   drop type ITEM_STR_255
go

执行报错无法删除。。。

------解决方案--------------------
参考http://msdn.microsoft.com/zh-cn/library/ms174407.aspx

在满足以下任何条件的情况下,将不执行 DROP TYPE 语句:
1、数据库中存在包含别名数据类型列或用户定义的类型列的表。 通过查询 sys.columns 或 sys.column_type_usages 目录视图可获得有关别名类型列或用户定义的类型列的信息。

2、存在定义中引用了别名类型和用户定义类型的计算列、CHECK 约束、架构绑定视图和绑定到架构的函数。 通过查询 sys.sql_expression_dependencies 目录视图可获得有关这些引用的信息。

3、存在在数据库中创建的函数、存储过程或触发器,且这些例程使用别名类型或用户定义的类型的变量和参数。 通过查询 sys.parameters 或 sys.parameter_type_usages 目录视图,可获取有关别名参数或用户定义类型参数的信息。
------解决方案--------------------
我也试过好多次,的确删不了,我的方法是新建一个新的,把需要改动的指向这个新的类型。或者你数据库小的话考虑手工改代码