gpt4 book ai didi

sql-server - 为什么MSSQL中的某些存储过程必须在前面加上 `master..`来调用,而其他存储过程则可以不加前缀来调用?

转载 作者:行者123 更新时间:2023-12-03 02:43:13 26 4
gpt4 key购买 nike

相关的 MS SQL Server 版本是 8。

在除 master 之外的数据库上下文中,如果我从 master 数据库调用存储过程,对于其中一些存储过程,我必须附加 master.. 前缀(否则我会得到 Could not find Stored procedure 'procname' 错误),对于其中一些我不知道。例如,我可以调用 --

EXEC sp_addlogin 'user' 'pass';

-- 它可以工作,但是--

EXEC xp_cmdshell 'command'; 

-- 没有。我必须在前面添加 master.. 才能使其正常工作 -

EXEC master..xp_cmdshell 'command';

我在这里可能是错的,但我观察到必须将 master.. 添加到仅以 xp_ 开头的存储过程(而不是 sp_ )。

为什么我必须在前面加上 master.. 来调用其中一些,而有些则可以不带 master.. 来调用?

最佳答案

master 数据库中名称以 sp_ 开头的过程可以在任何其他用户数据库中调用,而无需添加 master.. 前缀。由于以 xp_ 开头的过程不遵循该规则,因此在调用它们时仍需要添加 master.. 前缀。

See this link for more information.

关于sql-server - 为什么MSSQL中的某些存储过程必须在前面加上 `master..`来调用,而其他存储过程则可以不加前缀来调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30386460/

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