Bereitstellen von CLR-Datenbankobjekten

Die Verteilung einer fertigen Anwendung oder eines Moduls zur Installation und Ausführung auf anderen Computern wird als Bereitstellung bezeichnet. Bei Verwendung von Microsoft Visual Studio können Sie CLR-Datenbankobjekte (Common Language Runtime) entwickeln und auf einem Testserver bereitstellen. Stattdessen können verwaltete Datenbankobjekte auch mit den Redistributionsdateien von Microsoft .NET Framework statt mit Visual Studio kompiliert werden. Die kompilierten Assemblys, die die CLR-Datenbankobjekte enthalten, können dann mit Visual Studio- oder Transact-SQL-Anweisungen auf einem Testserver bereitgestellt werden. Beachten Sie, dass Visual Studio .NET 2003 nicht zur CLR-Integrationsprogrammierung oder -bereitstellung verwendet werden kann. SQL Server umfasst eine vorinstallierte Version von .NET Framework, und Visual Studio .NET 2003 kann die Assemblys von .NET Framework 2.0 nicht verwenden.

Sobald die CLR-Methoden auf dem Testserver getestet und verifiziert wurden, können sie mit einem Bereitstellungsskript auf die Produktionsserver verteilt werden. Das Bereitstellungsskript kann manuell oder mithilfe von SQL Server Management Studio generiert werden (siehe das Verfahren weiter unten in diesem Thema).

Das CLR-Integrationsfeature ist in SQL Server in der Standardeinstellung deaktiviert und muss aktiviert werden, damit CLR-Assemblys verwendet werden können. Weitere Informationen finden Sie unter Aktivieren der CLR-Integration.

HinweisHinweis

Ab SQL Server 2005 können Sie in einer SQL Server-Datenbank mit dem Kompatibilitätsgrad "80" keine verwalteten benutzerdefinierten Typen, gespeicherte Prozeduren, Funktionen, Aggregate oder Trigger erstellen. Um diese CLR-Integrationsfeatures von SQL Server nutzen zu können, müssen Sie mit der gespeicherten Prozedur sp_dbcmptlevel (Transact-SQL) den Kompatibilitätsgrad der Datenbank auf "90" festlegen.

Bereitstellen der Assembly auf einem Testserver

Mithilfe von Visual Studio können Sie CLR-Funktionen, -Prozeduren, -Trigger, benutzerdefinierte Typen (UDTs) und benutzerdefinierte Aggregate entwickeln und diese auf einem Testserver bereitstellen. Diese verwalteten Datenbankobjekte können auch mit den Befehlszeilencompilern, z.  csc.exe und vbc.exe, die in den Redistributionsdateien von .NET Framework enthalten sind, kompiliert werden. Die integrierte Entwicklungsumgebung von Visual Studio ist nicht für die Entwicklung verwalteter Datenbankobjekte für SQL Server erforderlich.

Stellen Sie sicher, dass alle Compilerfehler und -warnungen aufgelöst werden. Die Assemblys, die die CLR-Routinen enthalten, können dann mit Visual Studio- oder Transact-SQL-Anweisungen in einer SQL Server-Datenbank registriert werden.

HinweisHinweis

Das TCP/IP-Netzwerkprotokoll muss in der SQL Server-Instanz aktiviert werden, damit Microsoft Visual Studio von einem Remotecomputer aus zum Entwickeln, Debuggen und Bereitstellen verwendet werden kann. Weitere Informationen zum Aktivieren des TCP/IP-Protokolls auf dem Server finden Sie unter Konfigurieren von Clientnetzwerkprotokollen.

So stellen Sie eine Assembly mit Visual Studio bereit

  1. Erstellen Sie das Projekt, indem Sie im Menü Erstellen die Option <Projektname> erstellen auswählen.

  2. Lösen Sie alle Erstellungsfehler und -warnungen vor dem Bereitstellen der Assembly auf dem Testserver auf.

  3. Wählen Sie im Menü Erstellen die Option Bereitstellen. Die Assembly wird dann in der SQL Server-Instanz und Datenbank registriert, die bei der Erstellung des SQL Server-Projekts in Visual Studio angegeben wurden.

So stellen Sie die Assembly mit Transact-SQL bereit

  1. Kompilieren Sie die Assembly mit den in .NET Framework enthaltenen Befehlszeilencompilern aus der Quelldatei.

  2. Für Microsoft Visual C#-Quelldateien gilt:

  3. csc /target:library C:\helloworld.cs

  4. Für Microsoft Visual Basic-Quelldateien gilt:

vbc /target:library C:\helloworld.vb

Mit diesen Befehlen wird der Visual C# - bzw. Visual Basic-Compiler unter Angabe der /target-Option aufgerufen, die festlegt, dass eine Bibliotheks-DLL erstellt werden soll.

  1. Lösen Sie alle Erstellungsfehler und -warnungen vor dem Bereitstellen der Assembly auf dem Testserver auf.

  2. Öffnen Sie SQL Server Management Studio auf dem Testserver. Erstellen Sie eine neue Abfrage, die mit einer geeigneten Testdatenbank (z. B. AdventureWorks) verbunden ist.

  3. Erstellen Sie die Assembly im Server, indem Sie der Abfrage den folgenden Transact-SQL-Code hinzufügen.

CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE

  1. Die Prozedur, die Funktion, das Aggregat, der benutzerdefinierte Typ oder der Trigger müssen dann in der Instanz von SQL Server erstellt werden. Wenn die HelloWorld-Assembly eine Methode namens HelloWorld in der Procedures-Klasse enthält, dann kann der folgende Transact-SQL-Code der Abfrage hinzugefügt werden, um in SQL Server eine Prozedur namens hello zu erstellen.

CREATE PROCEDURE hello

AS

EXTERNAL NAME HelloWorld.Procedures.HelloWorld

Weitere Information zum Erstellen der verschiedenen Typen verwalteter Datenbankobjekte in SQL Server finden Sie unter CLR-benutzerdefinierte Funktionen, Benutzerdefinierte CLR-Aggregate, Benutzerdefinierte CLR-Typen, CLR-gespeicherte Prozeduren und CLR-Trigger.

Bereitstellen der Assembly auf einem Produktionsserver

Sobald die CLR-Datenbankobjekte auf dem Testserver getestet und verifiziert wurden, können sie mit einem Bereitstellungsskript auf die Produktionsserver verteilt werden. Weitere Informationen zum Debuggen verwalteter Datenbankobjekte finden Sie unter Debuggen von CLR-Datenbankobjekten.

Die Bereitstellung verwalteter Datenbankobjekte ähnelt der Bereitstellung gewöhnlicher Datenbankobjekte (Tabellen, Transact-SQL-Routinen usw.). Die Assemblys, in denen die CLR-Datenbankobjekte enthalten sind, können mit einem Bereitstellungsskript auf anderen Servern bereitgestellt werden. Das Bereitstellungsskript kann mit der Funktion "Skripts generieren" von Management Studio erstellt werden. Das Bereitstellungsskript kann auch manuell erstellt oder mit "Skripts generieren" erzeugt und dann manuell abgeändert werden. Nachdem das Bereitstellungsskript erstellt wurde, kann es zur Bereitstellung der verwalteten Datenbankobjekte auf anderen Instanzen von SQL Server ausgeführt werden.

So generieren Sie ein Bereitstellungsskript mit 'Skript generieren'

  1. Öffnen Sie Management Studio, und stellen Sie eine Verbindung mit der SQL Server-Instanz her, in der die bereitzustellende verwaltete Assembly oder das bereitzustellende Datenbankobjekt registriert ist.

  2. Erweitern Sie im Objekt-Explorer die Strukturen <Servername> und Datenbanken. Klicken Sie mit der rechten Maustaste auf die Datenbank, in der das verwaltete Datenbankobjekt registriert ist, wählen Sie Tasks aus, und wählen Sie dann Skripts generieren aus. Der Skript-Assistent wird geöffnet.

  3. Wählen Sie die Datenbank im Listenfeld aus, und klicken Sie auf Weiter..

  4. Klicken Sie im Bereich Skriptoptionen auswählen auf Weiter, oder ändern Sie die Optionen, und klicken Sie dann auf Weiter.

  5. Wählen Sie im Bereich Objekttypen auswählen den Typ des Datenbankobjekts aus, das bereitgestellt werden soll. Klicken Sie auf Weiter.

  6. Für jeden im Bereich Objekttypen auswählen ausgewählten Objekttyp wird ein Bereich mit dem Titel <Typ> auswählen dargestellt. In diesem Bereich stehen alle Instanzen des betreffenden Datenbankobjekttyps zur Auswahl, die in der angegebenen Datenbank registriert sind. Wählen Sie ein oder mehrere Objekte aus, und klicken Sie auf Weiter.

  7. Der Bereich Ausgabeoptionen wird geöffnet, wenn alle gewünschten Datenbankobjekttypen ausgewählt wurden. Wählen Sie Skript in Datei schreiben aus, und geben Sie einen Dateipfad für das Skript an. Wählen Sie Weiter aus. Überprüfen Sie Ihre Auswahl, und klicken Sie auf Fertig stellen. Das Bereitstellungsskript wird im angegebenen Dateipfad gespeichert.

Skripts nach der Bereitstellung

Sie können ein Skript nach der Bereitstellung ausführen.

Fügen Sie eine Datei mit dem Namen postdeployscript.sql dem Visual Studio-Projektverzeichnis hinzu, um ein nach der Bereitstellung auszuführendes Skript hinzuzufügen. Klicken Sie beispielsweise im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie dann Vorhandenes Element hinzufügen aus. Fügen Sie die Datei in den Stammordner des Projekts und nicht in den Ordner Testskripts ein.

Wenn Sie das Projekt bereitstellen, führt Visual Studio nach der Bereitstellung des Projekts dieses Skript aus.