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!

War es hilfreich?

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 ; -) :

CLR Stored Procedures: wie Satz das Schema / Eigentümer?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top