【发布时间】:2021-08-28 07:20:28
【问题描述】:
我正在做一些 ETL,使用标准的“预加载”分区模式:将数据加载到 loading 表的过时分区中,然后将该分区切换到 live 表中。
我找到了 SWITCH 命令的这些选项:
ALTER TABLE [myLoadingTable] SWITCH PARTITION @partNum TO [myLiveTable] PARTITION @partNum -- Move the New Data in.
WITH ( WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = BLOCKERS ))
这些选项似乎是需要定义的有价值的东西(即使在正常操作期间不需要它们)。
不幸的是,当我尝试运行它时,我得到:
Sql 错误号:11423.
错误消息:用户无权使用 ABORT_AFTER_WAIT = BLOCKERS 选项。
进一步阅读确认这是合适的:(link)
BLOCKERS杀死当前阻止SWITCH或在线索引重建 DDL 操作的所有用户事务,以便操作可以继续。需要
ALTER ANY CONNECTION权限。
但是当我尝试GRANT相关用户获得该权限时,我得到一个错误:
GRANT ALTER ANY CONNECTION TO [myAdfUser]
此版本的 SQL Server 不支持安全类“服务器”。
我正在使用 (AFAIK) 一个普通的 Azure SQL Server 数据库。
是否有任何解决方法?或者我无法在此数据库上使用这些选项?
【问题讨论】:
-
如果您正在使用 Azure SQL 数据库,那么错误告诉您的是真的。 Azure SQL 数据库是所谓的部分包含数据库;诸如
USER对象之类的东西有自己的密码,并且服务器上的LOGIN对象不用于连接。CONNECTION权限是服务器级权限,因此在 Azure SQL 数据库中不受支持。 -
@Larnu 我很乐意将其作为实际答案:)
标签: sql-server permissions azure-sql-database grant