我对配置Visual Studio(2010)感兴趣,因此在部署C#CLR数据库项目时,它将东西放入DBO以外的架构中。我知道我可以更新它手动创建的函数/过程/ etc ... wrappers以实现此目的: CLR Stored Procedures: how to set the schema/owner?部署期间CLR存储过程的架构
但是,我真的很想自动化该过程。如果有人知道,我真的很感激答案!
我对配置Visual Studio(2010)感兴趣,因此在部署C#CLR数据库项目时,它将东西放入DBO以外的架构中。我知道我可以更新它手动创建的函数/过程/ etc ... wrappers以实现此目的: CLR Stored Procedures: how to set the schema/owner?部署期间CLR存储过程的架构
但是,我真的很想自动化该过程。如果有人知道,我真的很感激答案!
您可以从一个架构使用更改存储过程到另一个
ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
它似乎是安全相关的,并通过设计完成。 http://support.microsoft.com/kb/918346
您可以像下面那样为后置部署脚本中的每个对象放置脚本。下面的脚本使用模式[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
这整个事情可以简化为一行:ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany。任何与该DLL关联的对象在部署之前都必须放弃,因为它们依赖于该DLL。 – Griffin 2012-03-14 00:36:47
我原本希望在Visuatl Studio中会有一个配置Schema的地方,但我从未找到过。这是我们采取的方法...前后部署脚本。 – 2012-06-27 18:42:28
应该提到的是,这个问题是过时,因为它有一个“默认模式”配置字段中的Visual Studio 2012的生成的T-SQL包装器对象。这也被“更新”一节中指出,在下面的答案顶部;-):
我说的是,当你用鼠标右键单击在Visual一个SQL CLR项目发生了什么Studio并点击“部署”。它将您的程序集放入SQL Server中,然后生成调用装配方法的T-SQL包装函数和存储过程。据我所知,这些包装总是进入dbo模式。为了组织的目的,我想将它们放在一个单独的模式中。到目前为止,我所管理的最好的方法是手动编辑项目中的部署前和部署后的SQL脚本,以删除并重新创建我希望它们的Schema中的项目,但这是每个项目的手动过程。 – 2011-01-04 18:45:49