Sql-Server

如何有效地進行 ALTER TABLE TYPE

  • March 4, 2022

與表不同,表類型不能通過簡單的命令進行更改。我需要執行以下操作:

  1. 重命名現有表類型
  2. 創建新的表類型
  3. 打開每個受影響的對象(即 ALTER SP)並再次執行它,以便更新對錶類型的引用。

但這是一項繁瑣的任務,因為可能有很多 SP 需要更新。是否有任何簡單的方法/預先生成的腳本可以自動化這個過程?

代替

打開每個受影響的對象(即 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';

要刷新所有這些對象,您可以簡單地生成如下命令:

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';

將輸出變為文本而不是網格並將生成的行複制+粘貼到 SSMS 並執行它們。

引用自:https://dba.stackexchange.com/questions/196482