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
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