我有一个基于现有数据库创建的数据库项目。它还添加了用于创建用户的脚本。其中一个脚本是=>
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]
)
我错过了什么?
答案 0 :(得分:0)
回答那些将来展望的人。
在数据库项目中,如果' \'字符包含在用户名中,登录名应与用户名匹配。
因此,这不起作用:
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];
我不确定这是预期的行为还是错误。
答案 1 :(得分:0)
这是设计的。核心问题是在" CREATE USER FOR LOGIN"基于Windows用户登录,如果您使用的是用户的域名,则必须与登录的域名+登录名相匹配。在MSDN上查看此post