Schema per stored procedure CLR durante la distribuzione
-
29-09-2019 - |
Domanda
Mi interessa la configurazione di Visual Studio (2010) in modo tale che durante la distribuzione di progetti di database C # CLR, mette roba in schemi diversi da DBO. Capisco posso aggiornare la funzione / procedura / etc ... wrapper che crea manualmente per rendere questo accada: CLR stored procedure:? come impostare lo schema del proprietario /
Tuttavia, mi piacerebbe molto per automatizzare il processo in qualche modo. Se qualcuno sa, mi piacerebbe davvero apprezzare la risposta!
Soluzione
Va ricordato che questa domanda è obsoleta come di Visual Studio 2012, che ha un campo di configurazione "schema predefinito" per il T-SQL generato involucro oggetti. Questo è stato anche indicato nella sezione "Aggiorna" nella parte superiore della seguente risposta ; -) :
CLR stored procedure: come impostare lo schema / proprietario?
Altri suggerimenti
È possibile modificare stored procedure da uno schema all'altro utilizzando
ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
Sembra essere connessi e fatto di sicurezza "by design". http://support.microsoft.com/kb/918346
È possibile inserire gli script per ogni oggetto in script di post implementazione come qui di seguito. Qui di seguito lo script ricrea stored procedure con lo schema [Org]. Spero che questo aiuti.
Step1 - Rimuovere stored procedure aggiunto automaticamente dal progetto in quanto è creato con schema predefinito [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 -. Rimuovere stored procedure, se già esiste in [Org] schema e ri-creare stored procedure nello schema [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
Nelle proprietà SQLCLR per il progetto SSDT, è possibile disattivare "Generate DDL". Quindi è possibile creare il proprio oggetto SQL che si collega al CLR di montaggio. Ad esempio, aggiungere una nuova stored procedure come
CREATE PROCEDURE [schema].[StoredProcedure]
@parameter BIGINT NULL
AS EXTERNAL NAME [AssemblyNameFromProjectProperties].[ClassWithProcedure].[Method];
GO
Questo vi permetterà di mettere oggetti diversi in diversi schemi