Erstellen, Bereitstellen und Debuggen von benutzerdefinierten Objekten
Nachdem Sie den Code für ein benutzerdefiniertes Objekt für Integration Services geschrieben haben, müssen Sie die Assembly erstellen, bereitstellen und in SSIS Designer integrieren, um sie für die Nutzung in Paketen verfügbar zu machen, sie zu testen und zu debuggen.
Schritte zum Erstellen, Bereitstellen und Debuggen eines benutzerdefinierten Objekts für Integration Services
Sie haben bereits die benutzerdefinierte Funktionalität für das Objekt geschrieben. Jetzt müssen Sie es testen und Benutzern zur Verfügung stellen. Die Schritte sind für alle Typen benutzerdefinierter Objekte, die Sie für Integration Services erstellen können, ähnlich.
Nachfolgend finden Sie die Schritte zum Erstellen, Bereitstellen und Debuggen:
Signieren Sie die zu erstellende Assembly mit einem starken Namen.
Erstellen Sie die Assembly.
Stellen Sie die Assembly bereit, indem Sie sie verschieben oder in den entsprechenden Integration Services-Ordner kopieren.
Installieren Sie die Assembly im globalen Assemblycache (Global Assembly Cache oder GAC).
Fügen Sie das Objekt der Toolbox hinzu, wenn das Objekt ein Task oder eine Datenflusskomponente ist.
Beheben Sie ggf. Probleme bei der Bereitstellung.
Testen und debuggen Sie den Code.
Signieren der Assembly
Wenn eine Assembly freigegeben werden soll, muss sie im GAC installiert sein. Nachdem die Assembly dem globalen Assemblycache hinzugefügt wurden, kann die Assembly von Anwendungen wie Business Intelligence Development Studio genutzt werden. Für den globalen Assemblycache muss die Assembly mit einem starken Namen signiert werden, um sicherzustellen, dass eine Assembly global eindeutig ist. Eine Assembly mit starkem Namen verfügt über einen vollqualifizierten Namen, der den Namen, öffentlichen Schlüssel und die Versionsnummer der Assembly umfasst. Anhand dieser Informationen wird die Assembly von der Laufzeit gefunden und von anderen Assemblys mit demselben Namen unterschieden.
Um eine Assembly mit einem starken Namen zu signieren, müssen Sie zuerst über ein Schlüsselpaar verfügen oder eines erstellen, das aus einem öffentlichen und einem privaten Schlüssel besteht. Dieses kryptografische Schlüsselpaar wird während der Erstellung zum Generieren einer Assembly mit starkem Namen verwendet.
Weitere Informationen zu starken Namen und zu den Schritten zum Signieren einer Assembly finden Sie in den folgenden Themen in der .NET Framework SDK-Dokumentation:
Assemblys mit starkem Namen
Erstellen eines Schlüsselpaars
Signieren einer Assembly mit einem starken Namen
Sie können die Assembly mühelos in Visual Studio beim Erstellen mit einem starken Namen signieren. Wählen Sie im Dialogfeld Projekteigenschaften die Registerkarte Signierung. Aktivieren Sie die Option Assembly signieren, und geben Sie dann den Pfad der Schlüsseldatei (.snk) an.
Erstellen der Assembly
Nach der Signierung des Projekts müssen Sie das Projekt oder die Lösung erstellen oder neu erstellen, indem Sie die in BI Development Studio im Menü Erstellen verfügbaren Befehle verwenden. Die Lösung enthält möglicherweise ein separates Projekt für eine benutzerdefinierte Benutzeroberfläche, die ebenfalls mit einem starken Namen signiert sein muss und zur gleichen Zeit erstellt werden kann.
Der einfachste Weg, um die nächsten zwei Schritte (Bereitstellen der Assembly und Installieren im globalen Assemblycache) auszuführen, besteht darin, für diese Schritte als Postbuildereignis in Visual Studio ein Skript zu erstellen. Buildereignisse stehen unter Projekteigenschaften auf der Seite Kompilieren für ein Visual Basic-Projekt und auf der Seite Buildereignisse für ein C#-Projekt zur Verfügung. Der vollständige Pfad ist für Eingabeaufforderungs-Hilfsprogramme z. B. gacutil.exe erforderlich. Pfade mit Leerzeichen und Makros wie $(TargetPath), mit denen Pfade mit Leerzeichen erweitert werden, müssen von Anführungszeichen umschlossen werden.
Nachfolgend finden Sie ein Beispiel einer Postbuildereignis-Befehlszeile für einen benutzerdefinierten Protokollanbieter:
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\100\DTS\LogProviders "
Bereitstellen der Assembly
Der SSIS Designer sucht die benutzerdefinierten Objekte, die in Paketen verwendet werden können, indem die Dateien in einer Reihe von Ordnern aufgezählt werden, die bei der Installation von SQL Server Integration Services erstellt werden. Wenn die Standardeinstellungen für die SQL Server-Installation verwendet werden, befinden sich die Ordner im Verzeichnis C:\Programme\Microsoft SQL Server\100\DTS. Wenn Sie jedoch für Ihr benutzerdefiniertes Objekt ein Setupprogramm erstellen, sollten Sie den Wert des HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath-Registrierungsschlüssels überprüfen, um den Speicherort des Ordners zu überprüfen.
Sie können die Assembly auf zwei Arten im Ordner platzieren:
Verschieben oder kopieren Sie die kompilierte Assembly nach der Erstellung in den entsprechenden Ordner. (Sie können auch einfach den Kopierbefehl in ein Postbuildereignis einschließen.)
Erstellen Sie die Assembly direkt im entsprechenden Ordner.
Die folgenden Bereitstellungsordner unter C:\Programme\Microsoft SQL Server\100\DTS werden für die unterschiedlichen Typen benutzerdefinierter Objekte verwendet:
Benutzerdefiniertes Objekt |
Bereitstellungsordner |
---|---|
Task |
Tasks |
Verbindungs-Manager |
Connections |
Protokollanbieter |
LogProviders |
Datenflusskomponente |
PipelineComponents |
Hinweis |
---|
Assemblys werden in diese Ordner kopiert, um die Aufzählung der verfügbaren Tasks, Verbindungs-Manager usw. zu unterstützen. Sie müssen daher keine Assemblys, die nur die benutzerdefinierte Benutzeroberfläche für benutzerdefinierte Objekte enthalten, in diesen Ordnern bereitstellen. |
Installieren der Assembly im globalen Assemblycache
Verwenden Sie das Befehlszeilentool gacutil.exe, oder ziehen Sie die Assemblys in das %system%\assembly-Verzeichnis, um die Taskassembly im globalen Assemblycache (GAC) zu installieren. Sie können auch einfach den Aufruf von gacutil.exe in ein Postbuildereignis einschließen.
Der folgende Befehl installiert eine Komponente namens MyTask.dll in den GAC mithilfe von gacutil.exe.
gacutil /iF MyTask.dll
Sie müssen SSIS Designer nach der Installation einer neuer Version des benutzerdefinierten Objekts schließen und erneut öffnen. Wenn Sie frühere Versionen des benutzerdefinierten Objekts im globalen Assemblycache installiert haben, müssen Sie sie vor der Installation der neuen Version entfernen. Führen Sie gacutil.exe aus, und geben Sie den Assemblynamen mit der /u-Option an, um eine Assembly zu deinstallieren.
Weitere Informationen zum globalen Assemblycache finden Sie unter Globales Assemblycache-Tool (Gactutil.exe) in den .NET Framework-Tools.
Hinzufügen eines Tasks oder einer Datenflusskomponente zur Toolbox
Nachdem Sie das benutzerdefinierte Objekt bereitgestellt und im globalen Assemblycache installiert haben, kann es in Business Intelligence Development Studio wie jedes in SQL Server Integration Services verfügbare Objekt verwendet werden. Es muss jedoch explizit der Toolbox hinzugefügt werden.
So fügen Sie eine benutzerdefinierte Komponente zur Toolbox hinzu
Klicken Sie mit der rechten Maustaste auf die Toolbox, und klicken Sie dann auf Elemente auswählen.
Klicken Sie im Dialogfeld Toolboxelemente auswählen auf die Registerkarte SSIS-Ablaufsteuerungselemente für einen Task oder auf die Registerkarte SSIS-Datenflusselemente für eine Datenflusskomponente.
Klicken Sie auf das Kontrollkästchen neben Ihrer Komponente, und klicken Sie dann auf OK.
Hinweis |
---|
Wenn die Komponente nicht in der Liste angezeigt wird, können Sie auf Durchsuchen klicken, um die Komponente selbst zu suchen. In diesem Fall ist sie jedoch möglicherweise nicht ordnungsgemäß installiert. |
Behandeln von Problemen bei der Bereitstellung
Wenn das benutzerdefinierte Objekt in der Toolbox oder der Liste verfügbarer Objekte angezeigt wird, Sie es jedoch keinem Paket hinzufügen können, versuchen Sie Folgendes:
Suchen Sie im globalen Assemblycache nach mehreren Versionen der Komponente. Wenn im globalen Assemblycache mehrere Versionen der Komponente vorliegen, kann der Designer u. U. die Komponente nicht laden. Löschen Sie alle Instanzen der Assembly aus dem globalen Assemblycache, und fügen Sie die Assembly wieder hinzu.
Stellen Sie sicher, dass nur eine einzelne Instanz der Assembly im Bereitstellungsordner existiert.
Setzen Sie die Toolbox zurück.
Fügen Sie Visual Studio an devenv.exe an, und legen Sie einen Haltepunkt fest, um den Initialisierungscode zu durchlaufen und sicherzustellen, dass keine Ausnahmen auftreten.
Testen und Debuggen des Codes
Am einfachsten können Sie die Laufzeitmethoden eines benutzerdefinierten Objekts debuggen, indem Sie nach dem Erstellen des benutzerdefinierten Objekts dtexec.exe von Visual Studio aus starten und ein Paket, das diese Komponente verwendet, ausführen.
Wenn Sie die Entwurfszeitmethoden der Komponente, z. B. die Validate-Methode, debuggen möchten, öffnen Sie ein Paket, das die Komponente in einer zweiten Instanz von Visual Studio verwendet, und hängen Sie es an den devenv.exe-Prozess an.
Wenn Sie auch die Laufzeitmethoden der Komponente debuggen möchten, wenn ein Paket offen ist und in SSIS Designer ausgeführt wird, müssen Sie die Ausführung des Pakets anhalten, damit Sie auch für den DtsDebugHost.exe-Prozess einen Anfügevorgang durchführen können.
So debuggen Sie die Laufzeitmethoden eines Objekts durch das Anfügen an dtexec.exe
Signieren und erstellen Sie Ihr Projekt in der Debug-Konfiguration, stellen Sie es bereit, und installieren Sie es im globalen Assemblycache wie in diesem Thema beschrieben.
Wählen Sie unter Projekteigenschaften auf der Registerkarte Debuggen die Option Externes Programm starten als Startaktion, und gehen Sie zu dtexec.exe, das standardmäßig unter C:\Programme\Microsoft SQL Server\100\DTS\Binn installiert wird.
Geben Sie im Textfeld Befehlszeilenoptionen unter Startoptionen die Befehlszeilenargumente ein, die zum Ausführen eines Pakets, das die Komponente verwendet, erforderlich sind. Oftmals besteht das Befehlszeilenargument aus dem /F[ILE]-Schalter gefolgt vom Pfad und dem Namen der .dtsx-Datei. Weitere Informationen finden Sie unter dtexec-Hilfsprogramm (SSIS-Tool).
Legen Sie sofern erforderlich im Quellcode Haltepunkte in den Laufzeitmethoden der Komponente fest.
Führen Sie das Projekt aus.
So debuggen Sie die Entwurfszeitmethoden eines benutzerdefinierten Objekts durch Anfügen an Business Intelligence Development Studio
Signieren und erstellen Sie Ihr Projekt in der Debug-Konfiguration, stellen Sie es bereit, und installieren Sie es im globalen Assemblycache wie in diesem Thema beschrieben.
Legen Sie sofern erforderlich im Quellcode Haltepunkte in den Entwurfszeitmethoden des benutzerdefinierten Objekts fest.
Öffnen Sie eine zweite Instanz von Visual Studio, und laden Sie ein Integration Services-Projekt, das ein Paket enthält, das das benutzerdefinierte Objekt verwendet.
Führen Sie von der ersten Instanz von Visual Studio einen Anfügevorgang für die zweite Instanz von devenv.exe durch, in der das Paket geladen wird, indem Sie aus dem Menü Debuggen der ersten Instanz die Option An den Prozess anhängen auswählen.
Führen Sie das Paket aus der zweiten Instanz von Visual Studio aus.
So debuggen Sie die Laufzeitmethoden eines benutzerdefinierten Objekts durch Anfügen an Business Intelligence Development Studio
Wenn Sie die in der vorherigen Prozedur aufgeführten Schritte ausgeführt haben, halten Sie die Ausführung des Pakets an, sodass Sie einen Anfügevorgang für DtsDebugHost.exe durchführen können. Sie können diese Pause erzwingen, indem Sie dem OnPreExecute-Ereignis einen Haltepunkt hinzufügen oder indem Sie dem Projekt einen Skripttask hinzufügen und ein Skript eingeben, das ein modales Meldungsfeld anzeigt.
Führen Sie das Paket aus. Wechseln Sie nach dem Anhalten des Vorgangs zur Instanz von Visual Studio, in der das Codeprojekt geöffnet ist, und wählen Sie aus dem Menü Debuggen die Option An den Prozess anhängen. Stellen Sie sicher, dass Sie an die Instanz von DtsDebugHost.exe anfügen, die in der Spalte Typ als Verwaltet, x86 aufgeführt wird, und nicht an die nur als x86 aufgeführte Instanz.
Kehren Sie zum angehaltenen Paket zurück, und setzen Sie den Vorgang über den Haltepunkt hinaus fort, oder klicken Sie auf OK, um das Meldungsfeld, das vom Skripttask aufgerufen wird, zu verwenden, und setzen Sie die Paketausführung und den Debugvorgang fort.
|