【问题标题】:Is it possible to use this SWITCH PARTITION control option with Azure SQL Server?是否可以将此 SWITCH PARTITION 控制选项与 Azure SQL Server 一起使用?
【发布时间】: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


【解决方案1】:

看来@Larnu 的评论解决了这个问题,只需将其添加为关闭问题的答案即可。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多