数据库项目中的 SQL70527 错误
Posted
技术标签:
【中文标题】数据库项目中的 SQL70527 错误【英文标题】:SQL70527 error in database project 【发布时间】:2013-12-06 13:22:46 【问题描述】:我有一个基于现有数据库创建的数据库项目。它还添加了用于创建用户的脚本。其中一个脚本是 =>
CREATE USER [JOOS_NT\Indigo.Development] FOR LOGIN [JOOS_NT\Indigo.Dev.svc];
这个脚本在我的数据库上运行良好。但是在我的数据库项目中,这个脚本在我构建它时会引发错误。错误是:
"SQL70527: 'JOOS_NT\Indigo.Development' is not a valid name because it contains characters that are not valid."
[JOOS_NT\Indigo.Development]
中的“\”似乎是不允许的。但是在数据库本身上,我可以运行查询并且它工作正常。如果我将其更改为 [JOOS_NT/Indigo.Development]
我不会收到错误消息,但是当将项目中的脚本与现有数据库进行比较时,它会删除用户 ([JOOS_NT\Indigo.Development]
) 并将其替换为 ([JOOS_NT/Indigo.Development]
)
我错过了什么?
【问题讨论】:
好的,当我将脚本更改为 CREATE USER [JOOS_NT\Indigo.Dev.svc] FOR LOGIN [JOOS_NT\Indigo.Dev.svc];它工作正常。但为什么它不适用于原始脚本? 【参考方案1】:为未来的人回答。
在数据库项目中,如果用户名中包含“\”字符,则登录名应与用户名匹配。
因为这样,这不起作用:
CREATE USER [JOOS_NT\Indigo.Development] FOR LOGIN [JOOS_NT\Indigo.Dev.svc];
但这会:
CREATE USER [JOOS_NT\Indigo.Development] FOR LOGIN [JOOS_NT\Indigo.Development];
或者
CREATE USER [JOOS_NT\Indigo.Dev.svc] FOR LOGIN [JOOS_NT\Indigo.Dev.svc];
我不确定这是预期的行为还是错误。
【讨论】:
【参考方案2】:这是设计使然。核心问题是在基于windows用户登录的“CREATE USER FOR LOGIN”中,如果你为用户使用域名,那么这必须匹配登录的域名+登录名。请参阅 MSDN 上的 post
【讨论】:
以上是关于数据库项目中的 SQL70527 错误的主要内容,如果未能解决你的问题,请参考以下文章
修复或避免在 SSDT 引用 Azure 托管实例中的主数据库时出现 SQL71501 和 SQL71561 构建错误?