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