Мне нужно собрать все базы данных из хранимой процедуры.
Когда я выполняю этот код в 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
роли сервера.