在没有约束检查的情况下更改表类型

时间:2012-10-14 06:21:48

标签: sql-server sql-server-2008-r2 user-defined-types

我声明了一个表类型,并在许多存储过程中引用它。

现在我想为该表类型添加一列。

由于sql server不允许改变表类型。我需要删除并重新创建它。但是在删除它时会抛出错误,说它在其他存储过程中被引用。因此不能下降。

如何在不删除存储过程的情况下继续操作?

1 个答案:

答案 0 :(得分:0)

编写所有使用表类型的SP。

select o.name, o.type, m.definition
from sys.sql_modules m
join sys.objects o on o.object_id=m.object_id
where m.definition like '%tbl_type%'

最好不要使用显示的定义,只使用名称并使用对象浏览器中的SSMS编写脚本。

  • 放弃它们。
  • 删除表格类型。
  • 创建它,包括新列。
  • 重新创建存储过程。
  • 测试。