我需要从存储过程中收集所有数据库。
当我在SSMS中执行此代码时,我将获得所有可用数据库:
SELECT * FROM sys.databases;
但是,如果将其包装到存储过程中,则只会得到master
,tempdb
和当前数据库:
CREATE PROCEDURE dbo.ListDatabases
WITH EXECUTE AS OWNER
AS
SELECT * FROM sys.databases;
GO
EXEC dbo.ListDatabases;
GO
从SQL 2017开始,这种情况开始发生,但在MS SQL Server的早期版本上运行良好。
当在与单个语句相同的用户帐户下执行该过程时,我希望得到相同的结果。执行这两个查询的帐户是sysadmin
服务器角色的成员。