我正在尝试创建一个存储过程,该过程为非特权用户创建了dB快照。 这个想法是向普通用户提供一种创建dB快照的方法,以便对其执行查询并在完成快照后删除快照。
我认为可以在过程声明中使用“与所有者一起执行”,但是,我总是遇到以下错误:
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]
有人知道我如何提出一个存储过程,该过程将允许普通用户创建数据库快照吗?
感谢您的帮助!
何塞
答案 0 :(得分:0)
我实际上通过查看-http://www.sommarskog.se/grantperm.html#serverlevel(第5.3章)找到了解决方案
方法是使用证书