SQL Server未指定数据库创建的存储过程如何查找?
找不到未指定数据库的存储过程?看这里!
嘿,这个问题我太熟悉了,别慌,咱们一步步来找到它:
核心原理
当你在SSMS里执行CREATE PROCEDURE语句却没指定数据库时,存储过程会被自动创建在你执行代码时当前连接的默认数据库里。
常见的查找路径
情况1:你手动选过数据库
如果当时你在查询窗口顶部的数据库下拉菜单里选了某个特定数据库(比如你的业务库),那直接展开这个数据库,找到可编程性 > 存储过程,就能看到你创建的存储过程了。情况2:没手动选过数据库
SSMS默认打开新查询窗口时,会连接到master数据库(除非你修改了默认连接设置),所以大概率你的存储过程在master库的可编程性 > 存储过程下面。
快速定位的SQL语句
如果手动找太麻烦,可以用SQL语句精准定位:
- 先试试查询当前数据库的存储过程:
SELECT name AS [存储过程名称], create_date AS [创建时间] FROM sys.procedures WHERE name = '你的存储过程名称' -- 替换成你创建的存储过程名
- 要是不确定是哪个库,就遍历所有数据库查找:
EXEC sp_MSforeachdb ' USE [?] SELECT ''?'' AS [所属数据库], name AS [存储过程名称], create_date AS [创建时间] FROM sys.procedures WHERE name = ''你的存储过程名称'' -- 替换成实际名称 '
小建议
以后创建存储过程时,最好显式指定数据库和架构,比如:
CREATE PROCEDURE [你的数据库名].[dbo].[你的存储过程名] AS -- 存储过程逻辑 BEGIN SELECT * FROM [你的表] END
这样就再也不会出现找不到存储过程的情况啦!
内容的提问来源于stack exchange,提问作者ya ya




