5

我对配置 Visual Studio (2010) 感兴趣,以便在部署 C# CLR 数据库项目时,它会将内容放入 DBO 以外的模式中。我知道我可以更新函数/过程/等...它手动创建的包装器以实现这一点: CLR 存储过程:如何设置架构/所有者?

但是,我真的很想以某种方式自动化这个过程。如果有人知道,我真的很感激答案!

4

5 回答 5

4

您可以使用以下方式将存储过程从一种模式更改为另一种模式

ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
于 2013-01-25T10:46:00.833 回答
1

它似乎与安全相关并且是“按设计”完成的。http://support.microsoft.com/kb/918346

于 2011-01-03T10:38:52.583 回答
1

您可以将每个对象的脚本放在部署后脚本中,如下所示。下面的脚本使用模式 [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

Step2 - 如果 [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
于 2011-06-30T07:14:46.413 回答
1

应该提到的是,这个问题在 Visual Studio 2012 中已经过时,它为生成的 T-SQL 包装器对象提供了“默认架构”配置字段。在以下答案顶部的“更新”部分中也注意到了这一点;-)

CLR 存储过程:如何设置模式/所有者?

于 2015-08-28T14:47:44.007 回答
1

在 SSDT 项目的 SQLCLR 属性中,您可以关闭“生成 DDL”。然后,您可以创建自己的附加到 CLR 程序集的 SQL 对象。例如,添加一个新的存储过程为

CREATE PROCEDURE [schema].[StoredProcedure] @parameter BIGINT NULL AS EXTERNAL NAME [AssemblyNameFromProjectProperties].[ClassWithProcedure].[Method]; GO

这将允许您将不同的对象放在不同的模式中

于 2019-06-14T14:48:05.663 回答