You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

含域名与点的SQL Server登录名重命名报错求助

解决带域名/点的Windows登录名重命名问题

我之前也踩过这个坑!带反斜杠的Windows域登录名属于特殊标识符,直接写会被SQL Server误解析成语法错误,必须用分隔标识符把原登录名包裹起来才行,这里有两种靠谱的解决方法:

  • 方法一:用方括号[]包裹原登录名
    这是最通用的方式,不需要额外配置,直接执行即可:

    ALTER LOGIN [mydomain\fname.lstname] WITH NAME = shortername;
    
  • 方法二:启用QUOTED_IDENTIFIER后用双引号包裹
    如果你的会话默认开启了QUOTED_IDENTIFIER(SQL Server默认是开启状态),也可以用双引号来包裹:

    ALTER LOGIN "mydomain\fname.lstname" WITH NAME = shortername;
    

为什么单引号没用?

单引号在SQL Server里是用来包裹字符串常量的,而登录名是服务器级的对象标识符,必须用方括号或双引号这类分隔标识符,才能让SQL Server识别这是一个完整的登录名,而非语法符号或普通字符串。

另外要注意:重命名后原登录名将被替换,新名称要保证在服务器上唯一,且你需要拥有ALTER ANY LOGIN权限才能执行这个操作。

内容的提问来源于stack exchange,提问作者FrenkyB

火山引擎 最新活动