Bereitstellen von CLR-Datenbankobjekten
Gilt für: SQL Server
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 Neuverteilungsdateien von Microsoft .NET Framework 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 beinhaltet ein vorinstalliertes .NET Framework, und Visual Studio .NET 2003 kann nicht die .NET Framework 2.0-Assemblys 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).
Das CLR-Integrationsfeature 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 in der SQL Server-Instanz aktiviert sein, um Microsoft Visual Studio für die Remoteentwicklung, das Debuggen und die Entwicklung zu verwenden. 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" den Projektnamen "Projekt 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-Instanz 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
Diese Befehle starten den Visual C#- oder Visual Basic-Compiler mit der Option "/target ", um das Erstellen einer Bibliotheks-DLL anzugeben.
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-Anweisung hinzufügen.
CREATE ASSEMBLY HelloWorld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE;
- Die Prozedur, Funktion, Aggregat, benutzerdefinierter Typ oder Trigger muss dann in der SQL Server-Instanz erstellt werden. Wenn die HelloWorld-Assembly eine Methode namens "HelloWorld" in der Procedures-Klasse enthält, kann der Abfrage die folgende Transact-SQL-Anweisung hinzugefügt werden, um eine Prozedur namens Hello in SQL Server 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, CLR Stored Procedures 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 von verwalteten Datenbankobjekten finden Sie unter Debuggen von CLR-Datenbankobjekten.
Die Bereitstellung von verwalteten Datenbankobjekten ähnelt der bereitstellung 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 Funktionalität "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 der SQL Server-Instanz her, in der die verwaltete Assembly oder das datenbankobjekt registriert ist.
Erweitern Sie im Objekt-Explorer den Servernamen> und die <Datenbankstrukturen. Klicken Sie mit der rechten Maustaste auf die Datenbank, in der das verwaltete Datenbankobjekt registriert ist, wählen Sie "Aufgaben" aus, und wählen Sie dann "Skripts generieren" aus. Der Skript-Assistent wird geöffnet.
Wählen Sie die Datenbank aus dem Listenfeld 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 objekttyp, der im Bereich "Objekttypen auswählen" ausgewählt ist, 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 ein oder mehrere Objekte 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