4


0

展開中のCLRストアドプロシージャのスキーマ

Visual Studio(2010)を構成して、C#CLRデータベースプロジェクトを展開するときに、DBO以外のスキーマにデータを配置することに興味があります。 関数/手順などを更新できることを理解しています…​ これを実現するために手動で作成するラッパー:https://stackoverflow.com/questions/857272/clr-stored-procedures-how-to-set-the-schema-owner[CLRストアドプロシージャ:スキーマ/所有者を設定する方法?]

ただし、どうにかしてプロセスを自動化したいと思います。 誰かが知っていれば、私は本当に答えを感謝します!

4 Answer


4


ストアドプロシージャをあるスキーマから別のスキーマに変更するには、次を使用します。

ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany


1


セキュリティ関連であり、「設計どおり」に行われているようです。 http://support.microsoft.com/kb/918346


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

手順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


0


この質問は、生成されたT-SQLラッパーオブジェクトの「既定のスキーマ」構成フィールドを持つVisual Studio 2012の時点で廃止されていることに注意してください。 これは、次の回答の上部にある「更新」セクションにも記載されています*;-)*: