首页 > 解决方案 > 是否可以将此 SWITCH PARTITION 控制选项与 Azure SQL Server 一起使用?

问题描述

我正在做一些 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 选项。

进一步阅读证实这是适当的:(链接

BLOCKERS 终止当前阻止SWITCH或联机索引重建 DDL 操作的所有用户事务,以便操作可以继续。

需要ALTER ANY CONNECTION许可。

但是,当我尝试向GRANT相关用户授予该权限时,我得到一个错误:

GRANT ALTER ANY CONNECTION TO [myAdfUser]

此版本的 SQL Server 不支持安全类“服务器”。

我正在使用(AFAIK)一个普通的 Azure SQL Server 数据库。


有什么解决方法吗?还是我无法在此数据库上使用这些选项?

标签: sql-serverpermissionsazure-sql-databasegrant

解决方案


看起来问题已通过@Larnu 的评论解决,只需将其添加为关闭问题的答案即可。

如果你使用的是 Azure SQL 数据库,那么错误告诉你的是真的。Azure SQL 数据库是所谓的部分包含数据库;像他们的 USER 对象有自己的 Password 并且服务器上的 LOGIN 对象不用于连接。CONNECTION 权限是服务器级别的权限,因此在 Azure SQL 数据库中不受支持。


推荐阅读