如何有效地执行 ALTER TABLE TYPE

rcs*_*rcs 5 sql-server user-defined-table-type

与表格不同,表格类型不能通过简单的命令进行更改。我需要执行以下操作:

  1. 重命名现有表类型
  2. 创建新的表类型
  3. 打开每个受影响的对象(即 ALTER SP)并再次执行它,以便更新对表类型的引用。

但这是一项繁琐的任务,因为可能有很多 SP 需要更新。是否有任何简单的方法/预先生成的脚本可以自动执行此过程?

sep*_*pic 8

代替

打开每个受影响的对象(即 ALTER SP)并再次执行,以便更新对表类型的引用

您可以找到所有受影响的对象并使用sp_refreshsqlmodule.

这是查找模块的代码:

select object_name(referencing_id)
from sys.sql_expression_dependencies
where referenced_class_desc = 'TYPE' and referenced_entity_name =  'your_table_type_name';
Run Code Online (Sandbox Code Playgroud)

要刷新所有这些对象,您只需生成如下命令:

select 'sp_refreshsqlmodule ' + quotename( object_name(referencing_id), '''')
from sys.sql_expression_dependencies
where referenced_class_desc = 'TYPE' and referenced_entity_name =  'your_table_type_name';
Run Code Online (Sandbox Code Playgroud)

使输出为文本而不是网格,并将生成的行复制并粘贴到 SSMS 并执行它们。