【发布时间】:2015-06-02 09:19:19
【问题描述】:
我正在 VS2013 中开发一个包含 C# SQL CLR 存储过程的数据库项目。
程序集所有者是 [servername\User123]
数据库所有者也是 [servername\User123] (作为数据库所有者,该用户显然已经存在于服务器上。我通过注释掉我的 SQL CLR 过程中的代码并发布来管理数据库的成功发布,之后发生以下情况我取消注释掉该代码。)
如果我尝试在 VS 中构建项目,我会收到错误消息:
Error 1 SQL71501: Assembly: [DatabaseProject] has an unresolved reference to object [servername\User123].
...引起:
CREATE ASSEMBLY [DatabaseProject] AUTHORIZATION [servername\User123]
FROM 0x4D5A90000300000004000000FFFF0000B8000etcetcetcetc
WITH PERMISSION_SET = EXTERNAL_ACCESS
GO
所以,如果在 VS 中我在 \Security 文件夹中添加一个创建用户脚本:
CREATE USER [servername\User123] FOR LOGIN [servername\User123] WITH DEFAULT_SCHEMA = dbo
GO
GRANT CONNECT TO [servername\User123]
然后我可以构建项目。
但是,如果我随后尝试发布数据库,则会收到错误消息:
Creating [servername\User123]...
(47,1): SQL72014: .Net SqlClient Data Provider: Msg 15063, Level 16, State 1, Line 1 The login already has an account under a different user name.
(47,0): SQL72045: Script execution error. The executed script:
CREATE USER [servername\User123] FOR LOGIN [servername\User123];
An error occurred while the batch was being executed.
有没有“正确”的方法来做到这一点?
【问题讨论】:
标签: sql-server visual-studio sqlclr