在T-Sql中使用用户定义的数据类型识别所有存储过程和表。
在T-Sql中使用用户定义的数据类型识别所有存储过程和表。
我正在使用SSMS,有一个在2000年早期创建的带有规则对象附加的自定义数据类型。
许多表和存储过程以此用户定义数据类型作为类型。我想要更改这些表和存储过程,将这个UDT移除,以便我可以用检查约束替换它们,但我无法确定使用此UDT作为类型的所有表和存储过程。
我一直在查看旧脚本,使用 sp_help table_name 查找这些实例,但我想知道是否有一种方法可以找到使用特定用户定义数据类型的所有表/列和存储过程。
谢谢。
编辑:我找到了找到表上使用用户定义数据类型的所有用途的方法。
SELECT TABLE_NAME, COLUMN_NAME, DOMAIN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE DOMAIN_NAME = 'UDT_name'
对于存储过程,我删除了我的方法,因为NicVerAZ在下面链接了一个更好的方法来完成此操作。
admin 更改状态以发布 2023年5月22日
请参考下面的文章,学习如何正确在存储过程定义中搜索字符串:
如我在上面的评论中所述,ROUTINE_DEFINITION是一个NVARCHAR(4000),较长的存储过程会被定义截断。
你的第二种方法还行,它可以完成任务,但是第一种方法更为正确。