含域名与点的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




