gpt4 book ai didi

sql-server - 如何创建实用程序存储过程并像其他 sp_... 实用程序一样运行它

转载 作者:行者123 更新时间:2023-12-03 10:00:00 25 4
gpt4 key购买 nike

我需要在我的数据库服务器上只在一个地方创建一个存储过程,但能够从任何数据库运行它。 但是,我不想每次运行它时都必须键入 database.schema.procedure_name我希望能够像内置的一样使用它程序:sp_... 有什么办法可以做到这一点吗?

这是我要创建的程序:

--actual procedure is more complex
CREATE PROCEDURE TestProcedure
AS

select * from sys.dm_exec_requests

go

下面是我想如何从 SQL Server Management Studio 运行它:

EXEC TestProcedure
--or
TestProcedure

但是,你会得到这个错误:

Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'TestProcedure'.

如果我运行它,一切运行良好:

EXEC master.dbo.TestProcedure
--or
master.dbo.TestProcedure

您可以像这样运行系统过程而不会出现任何错误:

EXEC sp_help
--or
sp_help

最佳答案

只要在主数据库中创建它并给它sp_ 前缀就可以了。 SQL Server 总是首先检查 master 数据库以查找带有此前缀的存储过程(以及其他类型的对象)。

它将为您和下面处理数据库上下文。

USE master

create proc [dbo].[sp_test] as
select db_name()

GO

USE YourDB

EXEC master..sp_test /*Returns "master"*/
EXEC sp_test /*Returns "YourDB"*/

编辑:

只是跟进 Cade 的评论以将其标记为系统过程。这似乎很可能是必需的 in some circumstances .在 SQL 2005+ 中你会使用

EXEC sys.sp_MS_marksystemobject 'dbo.sp_test'

关于sql-server - 如何创建实用程序存储过程并像其他 sp_... 实用程序一样运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com