Schema für CLR gespeicherte Prozedur während des Einsatzes
-
29-09-2019 - |
Frage
Ich interessiere mich für die Konfiguration von Visual Studio (2010), so dass, wenn C # CLR Datenbankprojekte bereitstellen, es Sachen in Schemata andere als DBO stellt. Ich verstehe, ich kann die Funktion / Prozedur aktualisieren / etc ... Wrapper es manuell, dies zu verwirklichen erstellt: CLR Stored Procedures: Wie das Schema / Eigentümer setzen
Aber ich möchte wirklich den Prozess irgendwie automatisieren. Wenn jemand weiß, würde ich wirklich die Antwort zu schätzen wissen!
Lösung
Es soll erwähnt werden, dass diese Frage von Visual Studio 2012 ist veraltet, die ein „Standard-Schema“ Konfigurationsfeld Wrapper-Objekte für den erzeugten T-SQL hat. Dies wird auch in der "Update" am Anfang der folgenden Antwort festgestellt worden ; -) :
Andere Tipps
Sie können die gespeicherte Prozedur von einem Schema ändern, um ein anderes mit
ALTER SCHEMA Org TRANSFER dbo.spUdpateCompany
Es scheint, „by design“ sicherheitsrelevante und getan werden. http://support.microsoft.com/kb/918346
Sie können Skripte stellen für jedes Objekt in der Postverteilungsskript wie unten. Im Folgenden Skript neu erstellt gespeicherte Prozedur mit Schema [Org]. Hoffe, das hilft.
Schritt 1 - Entfernen der gespeicherten Prozedur automatisch durch Projekt hinzugefügt, da es mit Standardschema erstellt wird [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
Schritt 2 -. Gespeicherte Prozedur entfernen, wenn bereits vorhanden in [Org] Schema und neu erstellen gespeicherte Prozedur in [Org] Schema
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
In den SQLCLR Eigenschaften für das SSDT-Projekt können Sie deaktivieren „DDL generieren“. Dann können Sie Ihr eigenes SQL-Objekt, das wird an dem CLR-Assembly erstellen. Fügen Sie zum Beispiel eine neue gespeicherte Prozedur als
CREATE PROCEDURE [schema].[StoredProcedure]
@parameter BIGINT NULL
AS EXTERNAL NAME [AssemblyNameFromProjectProperties].[ClassWithProcedure].[Method];
GO
Auf diese Weise können Sie verschiedene Objekte in verschiedenen Schemata setzen