我正在尝试创建一个存储过程,为非特权用户创建一个 dB 快照。这个想法是为普通用户提供一种创建 dB 快照的方法,以便对其运行查询并在完成后删除快照。
我认为可以在过程声明中使用“with execute as owner”。但是,我总是收到以下错误:
CREATE DATABASE permission denied in database 'master'.
这是我的代码:
-- The user that create the sp has sysadmin right
CREATE OR ALTER PROCEDURE [dbo].[makeSnapshot] WITH EXECUTE AS OWNER
AS
-- just an extract of the code (should test if exist...)
DECLARE @exec NVARCHAR(2000)
set @exec = 'CREATE DATABASE test_dbss1900 ON ( NAME = test, FILENAME =
''C:\\Program Files\\Microsoft SQL Server\\MSSQL14.SQLSERVER2017\\MSSQL\\Data\\test_1900.ss'' ) AS SNAPSHOT OF test';
EXEC (@exec)
GO
-- try to execute it (with any user)
EXEC dbo.[makeSnapshot]
有谁知道我如何想出一个允许普通用户创建数据库快照的存储过程?
感谢您的帮助!
何塞