我对配置Visual Studio(2010)感兴趣,这样在部署C#CLR数据库项目时,它会将内容放在DBO以外的模式中。我知道我可以更新函数/ procedure / etc ...它手动创建的包装器来实现这一点: CLR Stored Procedures: how to set the schema/owner?
但是,我真的想以某种方式自动化这个过程。如果有人知道,我真的很感激答案!
答案 0 :(得分:4)
您可以使用
将存储过程从一个模式更改为另一个模式ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
答案 1 :(得分:1)
它似乎与安全相关,并且“按设计”完成。 http://support.microsoft.com/kb/918346
答案 2 :(得分:1)
您可以在后部署脚本中为每个对象放置脚本,如下所示。下面的脚本使用schema [Org]重新创建存储过程。希望这会有所帮助。
步骤1 - 删除项目自动添加的存储过程,因为它是使用默认架构[dbo]创建的。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[spUpdateCompany]
GO
步骤2 - 删除[Org]模式中已存在的存储过程,并在[Org]模式中重新创建存储过程。
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Org].[spUpdateCompany]') AND type in (N'P', N'PC'))
DROP PROCEDURE [Org].[spUpdateCompany]
GO
CREATE PROCEDURE [Org].[spUpdateCompany]
@Id int,
@Name [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [SQLServerProject.CLR].[StoredProcedures].[spUpdateCompany]
GO
答案 3 :(得分:1)
在SSDT项目的SQLCLR属性中,可以关闭“生成DDL”。然后,您可以创建附加到CLR程序集的自己的SQL对象。例如,添加一个新的存储过程为
/v1/method
这将允许您将不同的对象放在不同的模式中
答案 4 :(得分:0)
应该提到的是,从Visual Studio 2012开始,这个问题已经过时,它为生成的T-SQL包装器对象提供了“默认架构”配置字段。以下答案; - )顶部的“更新”部分也注明了这一点: