Freigeben über


Vorteile von verwaltetem Code bei der Erstellung von Datenbankobjekten

Neben der Programmiersprache Transact-SQL können Sie .NET Framework-Sprachen zum Erstellen von Datenbankobjekten sowie zum Abrufen und Aktualisieren von Daten für SQL Server-Datenbanken verwenden. In Visual Basic- oder Visual C#-Projekten können Sie gespeicherte Prozeduren, Trigger, Aggregate, benutzerdefinierte Funktionen und benutzerdefinierte Typen erstellen. Datenbankobjekte, die in verwaltetem Code geschrieben werden, werden als SQL Server Common Language Runtime-Objekte oder SQL CLR-Objekte bezeichnet.

Tipp

Standardmäßig ist die CLR (Common Language Runtime)-Integrationsfunktion in SQL Server deaktiviert. Um SQL Server-Projektelemente verwenden zu können, müssen Sie die CLR-Integration aktivieren. Verwenden Sie dazu die Option clr enabled der gespeicherten sp_configure-Prozedur. Weitere Informationen finden Sie auf der Microsoft-Website unter dem Thema clr enabled (Option).

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

  • Verbessertes Programmiermodell   .NET Framework-Sprachen bieten Konstrukte und Verwendungsmöglichkeiten, die SQL Server-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. Wenn Sie Datenbankobjekte verwenden, die in Visual Basic oder Visual C# erstellt wurden, ist die Codezugriffssicherheit dieser Sprachen mit den benutzerbasierten Berechtigungen in SQL Server kombiniert.

  • Benutzerdefinierte Typen und Aggregate   Benutzerdefinierte Typen und Aggregate sind zwei 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- 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.

  • Sprache mit vielfältigen Möglichkeiten   Visual Basic und Visual C# bieten Funktionen, die in Transact-SQL nicht verfügbar sind, z. B. Arrays, effektive Ausnahmebehandlung und Wiederverwendbarkeit von Code.

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

  • Erweiterbarkeit Mit Visual Basic oder Visual C# können Sie zwei Datenbankobjekte erstellen, die nicht erstellt werden können, indem Transact-SQL verwendet: 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 mit Visual Basic 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 oder Visual C# erstellt wurden, werden Speicherverwaltung und Threading nicht von der gespeicherten Prozedur durchgeführt, wodurch Sie mehr Stabilität erreichen.

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 zu gespeicherten Prozeduren finden Sie in der SQL Server-Dokumentation.

Ein Trigger ist eine besondere Art von gespeicherter Prozedur, die aktiviert ist, wenn Sie Daten in einer angegebenen Tabelle mithilfe einer oder mehrerer der Datenänderungs Vorgänge ändern: UPDATE, INSERT oder DELETE. Sie können auch Trigger auf Datenbankebene erstellen, die infolge von Anweisungen der Datendefinitionssprache (Data Definition Language, DDL) ausgelöst werden. Mit diesen Triggern können Verwaltungsaufgaben in der Datenbank ausgeführt werden, z. B. das Überwachen und Regulieren von Datenbankvorgängen. Weitere Informationen zu Triggern finden Sie in der SQL Server-Dokumentation.

Die Entwicklung von gespeicherten Prozeduren und Triggern wird durch die vielfältigen Möglichkeiten von Visual Basic und Visual C# verbessert. Dies gilt 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 zu den 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 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 zu den Aggregatfunktionen der Programmiersprache Transact-SQL 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 zu den von SQL Server bereitgestellten Systemdatentypen finden Sie in der SQL Server-Dokumentation.

Mit Visual Basic und Visual C# können Sie neue Typen definieren, sodass Sie nicht auf die vordefinierten Typen beschränkt sind, die von SQL Server bereitgestellt werden. 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 unter SQL Server interpretiert und bearbeitet werden. Mithilfe von ADO.NET können Sie eine Assembly herunterladen, die eine Typdefinition von SQL Server enthält, und damit Daten auf dem SQL-Client überprüfen.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines Projekts für Datenbankobjekte, die Common Language Runtime-Integration von SQL Server verwenden

Gewusst wie: Erstellen und Ausführen einer gespeicherten SQL Server-Prozedur mithilfe von Common Language Runtime-Integration

Gewusst wie: Erstellen und Ausführen eines SQL Server-Triggers mithilfe von Common Language Runtime-Integration

Gewusst wie: Erstellen und Ausführen eines SQL Server-Aggregats mithilfe von Common Language Runtime-Integration

Gewusst wie: Erstellen und Ausführen einer benutzerdefinierten SQL Server-Funktion mithilfe von Common Language Runtime-Integration

Gewusst wie: Erstellen und Ausführen eines benutzerdefinierten SQL Server-Typs mithilfe von Common Language Runtime-Integration

Exemplarische Vorgehensweise: Erstellen einer gespeicherten Prozedur in verwaltetem Code

Gewusst wie: Debuggen einer gespeicherten Prozedur in SQL/CLR

Referenz

Attribute für SQL CLR-Datenbankprojekte und Datenbankobjekte

Konzepte

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

Vorteile von verwaltetem Code bei der Erstellung von Datenbankobjekten