MSDN建议CREATE DATABASE
权限是创建快照所必需的。
任何可以创建数据库的用户都可以创建数据库快照;但是,要创建镜像数据库的快照,您必须是 sysadmin 固定服务器角色的成员。
情况似乎并非如此。当尝试通过具有此建议的最低权限要求的用户创建快照时,出现以下错误:
Msg 1817, Level 14, State 1, Line 4
Only the owner of database "example" or the system administrator can create a database snapshot on it.
由于我想设置一个自动流程来按计划创建快照,因此我显然想避免授予它db_owner
或sysadmin
权利。
是否可以按照 MSDN 的建议进行设置,或者他们的文档有误?
非常感谢您的任何建议。
/*as sysadmin*/
USE [master];
CREATE DATABASE example;
CREATE LOGIN testuser WITH PASSWORD='xxx';
CREATE USER testuser FOR LOGIN testuser WITH DEFAULT_SCHEMA=dbo;
go
USE [example];
CREATE USER testuser FOR LOGIN testuser WITH DEFAULT_SCHEMA=dbo;
go
USE [master];
GRANT CREATE DATABASE to testuser;
go
/*as testuser*/
USE [master];
create database example_snapshot_01
on (
name = example,
filename = 'C:\...\example_snapshot_01.ss'
)
as snapshot of example;
go
/*
Error:
Msg 1817, Level 14, State 1, Line 4
Only the owner of database "example" or the system administrator can create a database snapshot on it.
*/
为了能够创建数据库快照,您将需要
CREATE DATABASE
权限以及db_owner
对要快照的数据库的权限。我已经测试过了,它工作得很好。另一种解决方案是将
dbcreator
服务器角色授予需要此权限的登录名。这也行。似乎使用
'Any user who can create a database can create a database snapshot'
此 BOL 意味着登录具有dbcreator
服务器角色。