【问题标题】:Can't add user to db_datareader via script无法通过脚本将用户添加到 db_datareader
【发布时间】:2013-02-11 06:47:27
【问题描述】:

我有以下脚本:

ALTER ROLE [db_datareader] ADD MEMBER [DomainGroup123]

当我对 SQL Server 2008 R2 运行此程序时,我收到此错误:

消息 156,第 15 级,状态 1,第 1 行
关键字“ADD”附近的语法不正确。

我在网上查了一下,发现 examples 使用了这个确切的语句(但使用了不同的用户。)

我已经仔细检查了登录名是否存在并且是我正在使用的数据库上的有效用户。我还拥有服务器上的 SA 权限。

我在发什么消息?

【问题讨论】:

  • 虽然您已经找到了解决方案,但请注意ALTER ROLE 的文档显示您尝试的语法仅在SQL Server 2012 中有效,在SQL Server 2008 R2 中无效。
  • @Pondlife 是对的。注意:您应该在 SS2012 以后的任何未来开发中使用“ALTER ROLE”。证明:微软在sp_addrolemember 上的“重要”说明明确表示要使用“ALTER ROLE”。

标签: sql sql-server tsql sql-server-2008-r2


【解决方案1】:

使用 sp_addrolemember。

EXECUTE sp_addrolemember db_datareader, 'UserName'

【讨论】:

    【解决方案2】:

    找到这个答案:https://stackoverflow.com/a/456365/16241

    这表明我可以这样运行它:

    exec sp_addrolemember db_datareader, [DomainGroup123]
    

    我做到了,它奏效了。

    【讨论】:

      【解决方案3】:

      我注意到根据服务器的版本,我需要执行以下操作之一。

      alter role RoleName add member UserName
      

      execute sp_addrolemember RoleName, UserName
      

      我正在考虑将我的方法从试错法改为某种有条件的方法,但是 (a) 在我的情况下很少执行此操作,并且 (b) 我现在有点懒惰。

      【讨论】:

        猜你喜欢
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2022-11-23
        • 2022-01-20
        • 2023-03-03
        • 1970-01-01
        • 2023-04-08
        相关资源
        最近更新 更多