使用 T-Sql 中的用户定义数据类型识别所有存储过程和表

Identifying all stored procedures and tables using a User-Defined Data Type in T-Sql

我正在使用 SSMS,我有一个用户定义的数据类型,它是在 2000 年初创建的,并附加了一个规则对象。

许多表和存储过程使用此用户定义的数据类型作为类型。我想更改这些表和存储过程以删除此 UDT,以便我可以用检查约束替换它们,但我无法识别将此 UDT 用作类型的所有表和存储过程。

我一直在查看旧脚本并使用 sp_help table_name 来寻找这些实例,但我想知道是否有办法找到所有使用特定用户定义数据类型的 tables/columns 和存储过程。

谢谢。

编辑: 我想出了如何在表中找到用户定义数据类型的所有用途

SELECT TABLE_NAME, COLUMN_NAME, DOMAIN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DOMAIN_NAME = 'UDT_name'

对于存储过程,我删除了我发现的方法,因为 NicVerAZ 在下面链接了一个更好的方法来完成这个。

请参阅下面有关如何在存储过程定义中正确搜索字符串的文章:

Search text in stored procedure in SQL Server

正如我在上面的评论中发布的那样,ROUTINE_DEFINITION 是一个 NVARCHAR(4000) 并且更长的存储过程的定义被截断了。

你的第二种方法不错,它完成了,但是是的,你的第一种方法更正确。