Result Set-Beispiel

Aktualisiert: 17. Juli 2006

Manchmal kann es nützlich sein, Befehle beim Durchsehen der Ergebnisse einer Abfrage ausführen zu können, ohne eine neue Verbindung öffnen und ohne alle Ergebnisse in den Speicher laden zu müssen. Dies kann mit der Technologie des MARS-Features (Multiple Active Result Set) in ADO .NET 2.0 verwirklicht werden. Derzeit ist MARS nicht für den Anbieter im Prozess, der für die serverseitige Programmierung verwendet wird, implementiert. Diese Einschränkung können Sie mithilfe eines serverseitigen Cursors umgehen. Dieses Beispiel zeigt, wie Sie serverseitige Cursor verwenden, um die fehlende MARS-Unterstützung für die serverseitige Progammierung zu umgehen.

ms160831.note(de-de,SQL.90).gifHinweis:
Das Verwenden serverseitiger Cursor ist, was die Serverressourcen betrifft, ein aufwendiges Verfahren und kann den Abfrageoptimierer in Microsoft SQL Server daran hindern, die Leistung Ihrer Abfragen zu verbessern. Deshalb sollten Sie ggf. den Code so umschreiben, dass er nach Möglichkeit immer JOINs verwendet.

Die APIs für diese Klasse ähneln einem Datenleser, wobei Sie jedoch vorwärts oder rückwärts im Resultset navigieren und andere Befehle auf der Verbindung ausgeben können, wenn das Resultset geöffnet ist.

Diese Implementierung ist stark vereinfacht, damit Sie das Beispiel leichter nachvollziehen können. Eine effizientere Implementierung würde das Abrufen mehrerer Zeilen gleichzeitig unterstützen, um eine Verarbeitung der gesamten Datenbank pro abgerufener Zeile zu verhindern.

Durch das Verwenden dieser Klasse ist der Speicherbedarf möglicherweise weitaus geringer als beim Auffüllen eines Datasets mit allen Ergebnissen einer Abfrage. Dies ist für die serverseitige Programmierung ein wichtiger Faktor.

In diesem Beispiel wird veranschaulicht, wie mithilfe des Attributs "Allow partially trusted callers" angegeben wird, dass es sich bei der Resultset-Assembly um eine Bibliothek handelt, die von anderen Assemblys auf sichere Weise aufgerufen werden kann. Diese Vorgehensweise ist etwas komplexer, jedoch sicherer als das Registrieren der aufrufenden Assembly mithilfe der Berechtigung unsafe. Sie ist sicherer, weil durch das Registrieren der aufrufenden Assembly als safe die aufrufende Assembly lediglich auf für den Server externe Ressourcen zugreift und Beschädigungen der Integrität des Servers verhindert werden.

Installationsverzeichnis:

drive:\Programme\Microsoft SQL Server\90\Samples\

Engine\Programmability\CLR\ResultSet\

Szenario

Jane ist eine Entwicklerin für Adventure Works Cycles. Ihre Aufgabe ist es, Software zu schreiben, die Daten liest und andere Aktionen ausführt, bevor die Daten von ihrer serverseitigen Abfrage zurückgegeben werden.

Sprachen

Transact-SQL, Visual C# und Visual Basic.

Features

Das ResultSet-Beispiel verwendet die folgenden Features von SQL Server.

Anwendungsbereich Features

Gesamt

CLR, serverseitige Cursor, Transact-SQL

Voraussetzungen

Stellen Sie vor dem Ausführen dieses Beispiels sicher, dass die folgende Software installiert ist:

  • SQL Server 2005 oder SQL Server 2005 Express Edition (SQL Server Express). SQL Server Express erhalten Sie kostenlos auf der SQL Server 2005 Express Edition Dokumentation und Beispiele-Website.
  • Die AdventureWorks-Datenbank, die im Lieferumfang von SQL Server 2005 enthalten und auch auf der SQL Server Developer-Website verfügbar ist.
  • Die Beispiele zu SQL Server 2005-Datenbankmodul. Diese Beispiele sind in SQL Server 2005 enthalten. Sie können die aktuelle Version der Beispiele von der SQL Server Developer-Website downloaden.
  • .NET Framework SDK 2.0 oder Microsoft Visual Studio 2005. Das .NET Framework SDK ist kostenlos erhältlich. Weitere Informationen finden Sie unter Installieren des .NET Framework SDK.

Erstellen des Beispiels

Generieren Sie die Schlüsseldatei mithilfe der folgenden Anweisungen, falls Sie noch keine Schlüsseldatei mit starkem Namen erstellt haben.

So generieren Sie eine Schlüsseldatei mit starkem Namen

  1. Öffnen Sie eine Microsoft Visual Studio 2005-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und danach auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

    – oder –

    Öffnen Sie eine Microsoft .NET Framework-Eingabeaufforderung. Klicken Sie auf Start, zeigen Sie auf Alle Programme und dann auf Microsoft .NET Framework SDK 2.0, und klicken Sie anschließend auf SDK-Eingabeaufforderung.

  2. Wechseln Sie an der Eingabeaufforderung mit dem Befehl CD (Verzeichnis wechseln) im Eingabeaufforderungsfenster vom aktuellen Verzeichnis zu dem Ordner, in dem die Beispiele installiert sind.

    ms160831.note(de-de,SQL.90).gifHinweis:
    Klicken Sie auf Start, zeigen Sie auf Alle Programme, Microsoft SQL Server und auf Dokumentation und Lernprogramme, und klicken Sie dann auf Beispielordner, um den Ordner zu ermitteln, in dem sich die Beispiele befinden. Wenn das Standardverzeichnis verwendet wurde, befinden sich die Beispiele im Verzeichnis <Systemlaufwerk>:\Programme\Microsoft SQL Server\100\Samples.
  3. Führen Sie an der Eingabeaufforderung den folgenden Befehl zum Generieren der Schlüsseldatei aus:

    sn -k SampleKey.snk

    ms160831.note(de-de,SQL.90).gifWichtig:
    Weitere Informationen zum Schlüsselpaar mit starkem Namen finden Sie unter "Security Briefs: Starke Namen und Sicherheit im .NET Framework" unter ".NET-Entwicklung" auf der MSDN-Website.

So erstellen Sie das ResultSet-Beispiel

  1. Kompilieren Sie das Beispiel mithilfe von Visual Studio 2005 und der bereitgestellten Visual Studio-Projektmappe oder mithilfe von Microsoft MSBuild, das im .NET Framework SDK 2.0 enthalten ist. Hierzu führen Sie an der Eingabeaufforderung Befehle aus, die dem folgenden Befehl ähnlich sind:

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\ ResultSet.sln

  2. Stellen Sie sicher, dass die AdventureWorks-Datenbank installiert ist.

  3. Wenn Sie die Beispiele für SQL Server-Datenbankmodul nicht im Standardspeicherort installiert haben, ändern Sie den Pfad im CREATE ASSEMBLY-Abschnitt des Skripts in Scripts\InstallCS.sql, um auf den Speicherort zu verweisen, in dem die Beispiele installiert wurden.

  4. Wenn Sie keine Administratorrechte für die von Ihnen verwendete SQL Server-Instanz besitzen, müssen Sie sich von einem Administrator die CreateAssembly-Berechtigung erteilen lassen, um die Installation ausführen zu können.

  5. Öffnen Sie die Datei scripts\installCS.sql bzw. scripts\installVB.sql (je nachdem, ob Sie das Visual C#-Projekt oder das Visual Basic-Projekt kompiliert haben) in SQL Server Management Studio. Führen Sie das in der Datei enthaltene Skript aus, oder führen Sie einen ähnlichen Befehl wie den folgenden in einem Eingabeaufforderungsfenster aus:

    sqlcmd -E -I -i Scripts\InstallCS.sql

Ausführen des Beispiels

So führen Sie das ResultSet-Beispiel aus

  1. Öffnen Sie die Datei scripts\test.sql in Management Studio, und führen Sie das in der Datei enthaltene Skript aus, oder führen Sie den folgenden Befehl in einem Eingabeaufforderungsfenster aus:

    sqlcmd -E -I -i Scripts\test.sql

Entfernen des Beispiels

So entfernen Sie das ResultSet-Beispiel

  1. Öffnen Sie die Datei scripts\cleanup.sql in SQL Server Management Studio, und führen Sie das in der Datei enthaltene Skript aus. Führen Sie alternativ den folgenden Befehl in einem Eingabeaufforderungsfenster aus:

    sqlcmd -E -I -i Scripts\cleanup.sql

Kommentar

CLR für SQL Server 2005 oder SQL Server Express muss aktiviert sein, damit dieses Beispiel ordnungsgemäß ausgeführt wird.

Die Beispiele dienen nur zu Lernzwecken. Sie sind nicht für den Einsatz in einer Produktionsumgebung gedacht und wurden auch nicht in einer Produktionsumgebung getestet. Microsoft leistet keinen technischen Support für diese Beispiele. Beispielanwendungen und Assemblys sollten nicht ohne die Zustimmung des Systemadministrators mit der SQL Server-Datenbank oder dem Berichtsserver verbunden sein oder verwendet werden.

Siehe auch

Andere Ressourcen

Allowing Partially Trusted Callers

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

05. Dezember 2005

Geänderter Inhalt:
  • Die Anweisungen zum Generieren einer Schlüsseldatei wurden geändert, einschließlich des Namens und Speicherortes der Schlüsseldatei.

17. Juli 2006

Hinzugefügter Inhalt:
  • Inhalt zu Sicherheitsaspekten wurde hinzugefügt.