数据库项目中的 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 构建错误?

Apache ignit:SQL 语句创建表中的语法错误

宏中的 Access 2010 SQL 错误

SQL Server 生成 Visual Studio 声称是错误的代码?

laravel 的 sql 查询中的语法错误

测试中的 Ecto 2.0 SQL 沙盒错误