【问题标题】:Identifying all stored procedures and tables using a User-Defined Data Type in T-Sql在 T-Sql 中使用用户定义的数据类型识别所有存储过程和表
【发布时间】:2019-04-17 23:32:55
【问题描述】:

我正在使用 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 在下面链接了一个更好的方法来完成此操作。

【问题讨论】:

  • INFORMATION_SCHEMA.ROUTINES 不一定是最佳解决方案,因为 ROUTINE_DEFINITION 限制为 4000 个字符。
  • 啊,我不知道。谢谢。我们的数据库中肯定有一些大型存储过程。我可能不能依赖它。
  • 尝试封装。长期存储的过程不是一件好事。我看到过长得离谱的作品,这是一场噩梦。

标签: sql tsql user-defined-data-types


【解决方案1】:

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

Search text in stored procedure in SQL Server

正如我在上面的评论中发布的,ROUTINE_DEFINITION 是 NVARCHAR(4000),更长的存储过程的定义会被截断。

您的第二种方法还不错,可以完成,但是您的第一种方法更正确。

【讨论】:

  • 谢谢。这正是我所需要的。
猜你喜欢
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多