Bereitstellen von CLR-Datenbankobjekten
Die Verteilung einer fertigen Anwendung oder eines Moduls zur Installation und Ausführung auf anderen Computern wird als Bereitstellung bezeichnet. Mit Microsoft Visual Studio können Sie CLR-Datenbankobjekte (Common Language Runtime) entwickeln und auf einem Testserver bereitstellen. Alternativ können die verwalteten Datenbankobjekte auch mit den Microsoft .NET Framework-Neuverteilungsdateien anstelle von Visual Studio kompiliert werden. Nach der Kompilierung können die Assemblys, die die CLR-Datenbankobjekte enthalten, mithilfe von Visual Studio oder Transact-SQL-Anweisungen auf einem Testserver bereitgestellt werden. Beachten Sie, dass Visual Studio .NET 2003 nicht für CLR-Integrationsprogrammierung oder Bereitstellung verwendet werden kann. SQL Server enthält die vorinstallierte .NET Framework, und Visual Studio .NET 2003 kann die assemblys .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 Verfahren weiter unten in diesem Thema).
Die CLR-Integrationsfunktion ist in SQL Server standardmäßig deaktiviert und muss aktiviert sein, um CLR-Assemblys verwenden zu können. Weitere Informationen finden Sie unter Enabling CLR Integration.
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 erforderlich, um verwaltete Datenbankobjekte für SQL Server zu entwickeln.
Stellen Sie sicher, dass alle Compilerfehler und -warnungen aufgelöst werden. Die Assemblys, die die CLR-Routinen enthalten, können dann mithilfe von Visual Studio- oder Transact-SQL-Anweisungen in einer SQL Server Datenbank registriert werden.
Hinweis
Das TCP/IP-Netzwerkprotokoll muss auf dem SQL Server instance aktiviert sein, um Microsoft Visual Studio für die Remoteentwicklung, das Debuggen und die Entwicklung verwenden zu können. Weitere Informationen zum Aktivieren des TCP/IP-Protokolls auf dem Server finden Sie unter Konfigurieren von Clientprotokollen.
So stellen Sie eine Assembly mit Visual Studio bereit
Erstellen Sie das Projekt, indem Sie im Menü Erstellen die Option Projektname<> erstellen auswählen.
Lösen Sie alle Erstellungsfehler und -warnungen vor dem Bereitstellen der Assembly auf dem Testserver auf.
Wählen Sie im Menü Erstellen die Option Bereitstellen aus. Die Assembly wird dann in der SQL Server instance und Datenbank registriert, die beim ersten Erstellen des SQL Server Projekts in Visual Studio angegeben wurde.
So stellen Sie die Assembly mit Transact-SQL bereit
Kompilieren Sie die Assembly mit den in .NET Framework enthaltenen Befehlszeilencompilern aus der Quelldatei.
Für Microsoft Visual C#-Quelldateien:
csc /target:library C:\helloworld.cs
Für Microsoft Visual Basic-Quelldateien:
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.
Lösen Sie alle Erstellungsfehler und -warnungen vor dem Bereitstellen der Assembly auf dem Testserver auf.
Öffnen Sie SQL Server Management Studio auf dem Testserver. Erstellen Sie eine neue Abfrage, die mit einer geeigneten Testdatenbank (z. B. AdventureWorks) verbunden ist.
Erstellen Sie die Assembly auf dem Server, indem Sie der Abfrage die folgende Transact-SQL-Instanz hinzufügen.
CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;
- Die Prozedur, Funktion, Aggregat, benutzerdefinierter Typ oder Trigger muss dann im instance von SQL Server erstellt werden. Wenn die
HelloWorld
Assembly eine Methode mit dem NamenHelloWorld
in derProcedures
-Klasse enthält, kann der Abfrage die folgende Transact-SQL-Methode hinzugefügt werden, um eine in SQL Server aufgerufenehello
Prozedur zu erstellen.
CREATE PROCEDURE hello
AS
EXTERNAL NAME HelloWorld.Procedures.HelloWorld
Weitere Informationen zum Erstellen der verschiedenen Typen von verwalteten Datenbankobjekten in SQL Server finden Sie unter CLR User-Defined Functions, CLR User-Defined Aggregates, CLR User-Defined Types, GESPEICHERTE CLR-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 von regulären Datenbankobjekten (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 mithilfe 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 auf anderen Instanzen von SQL Server ausgeführt werden, um die verwalteten Datenbankobjekte bereitzustellen.
So generieren Sie ein Bereitstellungsskript mit 'Skript generieren'
Öffnen Sie Management Studio, und stellen Sie eine Verbindung mit dem SQL Server instance her, in dem die verwaltete Assembly oder das Datenbankobjekt registriert ist, das bereitgestellt werden soll.
Erweitern Sie im Objekt-Explorer die <Struktur Servername> und Datenbanken. Klicken Sie mit der rechten Maustaste auf die Datenbank, in der das verwaltete Datenbankobjekt registriert ist, wählen Sie Aufgaben und dann Skripts generieren aus. Der Skript-Assistent wird geöffnet.
Wählen Sie im Listenfeld die Datenbank aus, und klicken Sie auf Weiter.
Klicken Sie im Bereich Skriptoptionen auswählen auf Weiter, oder ändern Sie die Optionen, und klicken Sie dann auf Weiter.
Wählen Sie im Bereich Objekttypen auswählen den Typ des Datenbankobjekts aus, das bereitgestellt werden soll. Klicken Sie auf Weiter.
Für jeden im Bereich Objekttypen auswählen ausgewählten Objekttyp wird ein Bereich Typ> auswählen < angezeigt. In diesem Bereich stehen alle Instanzen des betreffenden Datenbankobjekttyps zur Auswahl, die in der angegebenen Datenbank registriert sind. Wählen Sie mindestens ein Objekt aus, und klicken Sie auf Weiter.
Der Bereich Ausgabeoptionen wird angezeigt, wenn alle gewünschten Datenbankobjekttypen ausgewählt wurden. Wählen Sie skript to file 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 mit der rechten Maustaste auf Ihr Projekt in Projektmappen-Explorer, und wählen Sie 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.
Weitere Informationen
Programmierkonzepte für die Common Language Runtime (CLR)-Integration