从存储过程中查询时,sys.databases返回不同的结果

时间:2019-06-14 09:13:24

标签: sql-server sql-server-2017

我需要从存储过程中收集所有数据库。

当我在SSMS中执行此代码时,我将获得所有可用数据库:

SELECT * FROM sys.databases;

但是,如果将其包装到存储过程中,则只会得到mastertempdb和当前数据库:

CREATE PROCEDURE dbo.ListDatabases
WITH EXECUTE AS OWNER
AS
SELECT * FROM sys.databases;
GO

EXEC dbo.ListDatabases;
GO

从SQL 2017开始,这种情况开始发生,但在MS SQL Server的早期版本上运行良好。

当在与单个语句相同的用户帐户下执行该过程时,我希望得到相同的结果。执行这两个查询的帐户是sysadmin服务器角色的成员。

0 个答案:

没有答案