Vorteile von verwaltetem Code bei der Erstellung von Datenbankobjekten

Aktualisiert: November 2007

Neben der Programmiersprache Transact-SQL können Sie .NET Framework-Sprachen zum Erstellen von Datenbankobjekten sowie zum Abrufen und Aktualisieren von Daten für Microsoft SQL Server 2005-Datenbanken verwenden. In Visual Basic-, Visual C#- oder Visual C++-Projekten können Sie gespeicherte Prozeduren, Trigger, Aggregate, benutzerdefinierte Funktionen und benutzerdefinierte Typen erstellen.

Hinweis:

Standardmäßig ist in Microsoft SQL Server das CLR-Integrationsfeature (Common Language Runtime) deaktiviert. Für die Verwendung von SQL Server-Projektelementen muss es jedoch aktiviert werden. Die CLR-Integration kann mithilfe der clr enabled-Option der gespeicherten sp_configure-Prozedur aktiviert werden. Weitere Informationen finden Sie unter Aktivieren der CLR-Integration.

In der folgenden Liste werden die Vorteile einer .NET Framework-Sprache gegenüber Transact-SQL zusammengefasst:

  • Verbessertes Programmiermodell   .NET Framework-Sprachen bieten Konstrukte und Verwendungsmöglichkeiten, die SQL-Entwicklern bisher nicht zur Verfügung standen.

  • Verbesserte Sicherheit   Verwalteter Code wird in einer Common Language Runtime-Umgebung des Datenbankmoduls ausgeführt. Daher sind die .NET Framework-Datenbankobjekte sicherer als die erweiterten gespeicherten Prozeduren, die in früheren SQL Server-Versionen verwendet wurden.

  • Benutzerdefinierte Typen und Aggregate   Benutzerdefinierte Typen und Aggregate sind zwei neue verwaltete Datenbankobjekte, die die Speicher- und Abfragefunktionen von SQL Server erweitern.

  • Globale Entwicklungsumgebung   Die Datenbankentwicklung ist in der Microsoft Visual Studio-Entwicklungsumgebung integriert. Entwickler verwenden für das Entwickeln und Debuggen von Datenbankobjekten und Skripts dieselben Tools wie für das Schreiben von .NET Framework-Komponenten und -Diensten auf mittlerer und Clientebene.

  • Bessere Leistung   Manche Funktionen, z. B. solche, die mathematische Operationen für jede Zeile in einer Datenbank ausführen, sind u. U. effektiver, wenn es sich um kompilierte Assemblys handelt, die mit einem Visual Basic-, Visual C#- oder Visual C++#-Projekt erstellt und nicht in Transact-SQL, also interpretiertem Code, geschrieben wurden. Insbesondere bei Funktionen, die Ganzzahlenoperationen ausführen, können Leistungsverbesserungen erzielt werden. Gespeicherte Prozeduren, die nur auf Daten zugreifen, können jedoch nicht optimiert werden.

  • Vielfältige Möglichkeiten   Visual Basic, Visual C# und Visual C++ bieten Verwendungsmöglichkeiten, die in Transact-SQL nicht zur Verfügung stehen, z. B. Arrays, eine effektive Ausnahmebehandlung und Wiederverwendbarkeit von Code.

  • Wiederverwendbarkeit von Code   Eine Bibliothek mit verwalteten Assemblies kann einfacher erstellt und verteilt werden als ein Transact-SQL-Skript verteilt werden kann.

  • Erweiterung   Mit Visual Basic, Visual C# oder Visual C++ können Sie zwei Datenbankobjekte erstellen, die mit Transact-SQL nicht erstellt werden können: Aggregate und benutzerdefinierte Typen.

  • Vorhandene Kenntnisse nutzen   Wenn Sie bereits Kenntnisse in den Programmiersprachen und der Entwicklungsumgebung erworben haben, können Sie diese bei der Erstellung von Datenbankobjekten weiterhin nutzen und vertiefen.

  • Verbesserter Entwicklungsprozess   Wenn Sie Datenbankobjekte mit der SQL Server-Projektvorlage entwickeln, erreichen Sie eine vollständige Integration in das Projektsystem. Dies schließt Erstellung, Debuggen und Bereitstellung auf mehreren Servern ein.

  • Stabilität und Zuverlässigkeit   Die Datenbankobjekte, die Sie in Visual Basic, Visual C# oder Visual C++ erstellen, sind sicherer, stabiler und zuverlässiger als erweiterte gespeicherte Prozeduren, die zu Speicherverlusten oder anderen Problemen führen können, die sich auf die Leistung und Zuverlässigkeit des Servers auswirken. Wenn Sie gespeicherte Prozeduren ausführen, die in Visual Basic, Visual C# oder Visual C++ erstellt wurden, werden Speicherverwaltung und Threading nicht von der gespeicherten Prozedur durchgeführt, wodurch Sie mehr Stabilität erreichen.

  • Sicherheit   Wenn Sie Datenbankobjekte verwenden, die in Visual Basic, Visual C# oder Visual C++ erstellt wurden, wird die Codezugriffssicherheit dieser Sprachen mit den benutzerbasierten Berechtigungen in SQL Server kombiniert.

Gespeicherte Prozeduren und Trigger

Gespeicherte Prozeduren sind eine vorkompilierte Auflistung von Programmieranweisungen, die Operationen in der Datenbank ausführen, unter einem Namen gespeichert und als eine Einheit verarbeitet werden. Weitere Informationen über gespeicherte Prozeduren finden Sie in der SQL Server-Dokumentation.

Bei einem Trigger handelt es sich um eine besondere Art von gespeicherter Prozedur, die beim Ändern von Daten in einer angegebenen Tabelle mithilfe einer oder mehrerer der nachfolgenden Datenänderungsvorgänge aktiviert wird: UPDATE, INSERT oder DELETE. Weitere Informationen über Trigger finden Sie in der SQL Server-Dokumentation.

Die Entwicklung von gespeicherten Prozeduren und Triggern wird durch die vielfältigen Möglichkeiten von Visual Basic, Visual C# und Visual C++ verbessert, besonders wenn Sie die komplexe prozedurale Logik implementieren, die zur Durchsetzung von Geschäftsregeln erforderlich ist. Darüber hinaus enthält .NET Framework viele Bibliotheken. Von besonderem Interesse sind die Bibliotheken, mit denen zahlreiche kryptografische Aspekte verwaltet werden können, die umfangreichen mathematischen Bibliotheken und der externe Zugriff auf Webdienste, Dateien und Business-to-Business-Kommunikationssysteme.

Funktionen

Funktionen werden auf einen oder mehrere Werte angewendet und geben entweder einen Skalarwert oder eine Tabelle zurück. Weitere Informationen über die verschiedenen Arten von Funktionen, die in der Programmiersprache Transact-SQL verfügbar sind, finden Sie in der SQL Server-Dokumentation.

Wie bei gespeicherten Prozeduren und Triggern wird auch die Entwicklung von Funktionen durch die vielfältigen Möglichkeiten von Visual Basic, Visual C# und Visual C++ und den Zugriff auf die Vielzahl von Bibliotheken in .NET Framework optimiert.

Aggregate

Mit Aggregatfunktionen werden alle Daten in einer Tabelle zusammengefasst. Sie führen eine Berechnung für eine Gruppe von Werten durch und geben einen einzelnen Skalarwert zurück. Weitere Informationen über die Aggregatfunktionen, die in der Programmiersprache Transact-SQL verfügbar sind, finden Sie in der SQL Server-Dokumentation.

Sie haben die Möglichkeit, neue Aggregate zu definieren, die komplexere arithmetische Funktionen ausführen. So können Sie z. B. eine Berechnung für Daten in mehreren Zeilen vornehmen und einen Wert zurückgeben oder eine verkettete Zeichenfolge erstellen.

Benutzerdefinierte Typen

Typen bestimmen die Art der Daten. Informationen über die in SQL Server verfügbaren Datentypen finden Sie in der SQL Server-Dokumentation.

Mithilfe von Visual Basic, Visual C# und Visual C++ können Sie neue Typen definieren und sind nicht mehr auf die in SQL Server vordefinierten Typen beschränkt. Sie können einfache Typen, wie Postleitzahlen, oder komplexe Typen erstellen und z. B. die von einer Kreditkartentransaktion zurückgegebenen Informationen analysieren. Wenn Sie benutzerdefinierte Typen verwenden, können Daten sowohl auf dem SQL-Client als auch auf dem SQL-Server interpretiert und bearbeitet werden. Mithilfe von ADO.NET können Sie eine Assembly herunterladen, die eine Typdefinition vom SQL-Server enthält, und damit Daten auf dem SQL-Client überprüfen.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines SQL Server-Projekts

Gewusst wie: Erstellen und Ausführen einer gespeicherten CLR SQL Server-Prozedur

Gewusst wie: Erstellen und Ausführen eines CLR SQL Server-Triggers

Gewusst wie: Erstellen und Ausführen eines CLR SQL Server-Aggregats

Gewusst wie: Erstellen und Ausführen einer benutzerdefinierten CLR SQL Server-Funktion

Gewusst wie: Erstellen und Ausführen eines benutzerdefinierten CLR-SQL Server-Typs

Exemplarische Vorgehensweise: Erstellen einer gespeicherten Prozedur in verwaltetem Code

Gewusst wie: Debuggen einer gespeicherten Prozedur in SQL/CLR

Konzepte

Einführung in CLR-Integration für SQL Server (ADO.NET)

Vorteile von verwaltetem Code bei der Erstellung von Datenbankobjekten

Elementvorlagen für SQL Server-Projekte

Referenz

Attribute für SQL Server-Projekte und Datenbankobjekte

Weitere Ressourcen

Debuggen von SQL CLR-Datenbanken