database - 找出存储过程在哪个数据库中

标签 database sql-server-2008 stored-procedures

我有一个存储过程 ID 和名称的列表,我需要找出它们位于服务器中的哪个数据库。是否有捷径可寻?像存储这些信息的系统表?

谢谢

最佳答案

通常对于这种类型的查询,您需要遍历数据库列表(可能使用 sp_MSforeachdb)并查询每个数据库中的各个系统表。

以下可能对您有用,但可以避免这种情况。第一种方法检查 object_idname 但不验证对象实际上是存储过程。

第二个只是使用评论中要求的名称,也验证对象类型,但只检查默认模式。

WITH objects(name, id)
     AS (SELECT 'uspGetBillOfMaterials', 23671132 UNION ALL
         SELECT 'uspPrintError', 37575172) SELECT 'Using Id and Name',
       sys.databases.name,
       objects.name
FROM   sys.databases,
       objects
WHERE  OBJECT_NAME(id, database_id) = objects.name
UNION ALL
SELECT 'Using Name (assumes default schema)',
       sys.databases.name,
       objects.name
FROM   sys.databases,
       objects
WHERE  OBJECT_ID(databases.name + '..uspGetBillOfMaterials', 'P') IS NOT NULL 

关于database - 找出存储过程在哪个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741213/

相关文章:

java - 如何使用 hibernate 4.0 调用 ms sql 存储过程

mysql - 数据库中特定字段(列)的数据量

java - 有效登录后如何通过jsp代码更新或更改sql server中的数据?处理更新数据时发生异常

php - 如何从 mysql 工作台查看表和数据库条目

mysql - 对于在 AWS 上运行的小型电子商务站点,MySQL 是否 catch 了 SQL Server Express(特别是存储过程)?

java - 从java连接到多个sql server数据库

postgresql - 如何检查PostgreSQL上是否存在存储过程?

MySQL 存储过程 - 输出值时出现问题

java - 玩!框架 - 无法连接到数据库

sql - 获取指定日期的上一个星期二(或一周中的任何给定日期)