Udostępnij za pośrednictwem


Wprowadzenie do środowiska CLR integracji

This topic provides an overview of the namespaces and libraries required to compile database objects using the Microsoft SQL Server integration with the .NET Framework common language runtime (CLR).Temat zawiera także instrukcje zapisu, skompilować i uruchomić prosty procedura składowana CLR w Microsoft Visual C#.

Wymagane obszary nazw

Począwszy od SQL Server 2005, składniki wymagane do opracowania podstawowych CLR obiektów bazy danych są instalowane razem z SQL Server.Funkcja integracja CLR jest narażony w wirtualny plik dziennika o nazwie system.data.dll, która stanowi część.NET Framework.Tego wirtualny plik dziennika można znaleźć w Global wirtualny plik dziennika Cache (GAC) jak również w.NET Framework katalog.Odwołanie do tego wirtualny plik dziennika jest zazwyczaj dodawane automatycznie przez oba narzędzia wiersza polecenia i Microsoft programu Visual Studio, więc nie trzeba ręcznie dodać.

wirtualny plik dziennika system.data.dll zawiera następujące obszary nazw, które są wymagane do kompilowania CLR obiektów bazy danych:

System.Data

System.Data.Sql

Microsoft.SqlServer.Server

System.Data.SqlTypes

Pisania prostych "Hello World" Procedura przechowywana

Skopiuj i wklej następujące Visual C# lub Microsoft kodu języka Visual Basic do edytora tekstu i zapisz go w pliku o nazwie "helloworld.cs" lub "helloworld.vb".

using System;
using System.Data;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;

public class HelloWorldProc
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void HelloWorld(out string text)
    {
        SqlContext.Pipe.Send("Hello world!" + Environment.NewLine);
        text = "Hello world!";
    }
}
Imports System
Imports System.Data
Imports Microsoft.SqlServer.Server
Imports System.Data.SqlTypes
Imports System.Runtime.InteropServices
 
Public Class HelloWorldProc
    <Microsoft.SqlServer.Server.SqlProcedure> _ 
    Public Shared  Sub HelloWorld(<Out()> ByRef text as String)
        SqlContext.Pipe.Send("Hello world!" & Environment.NewLine)
        text = "Hello world!"
    End Sub
End Class

Ten prosty program zawiera jedną metoda statycznych w klasie publicznych.Metoda ta wykorzystuje dwa nowe klasy SqlContext i SqlPipe, dla tworzenia zarządzanych obiektów do wyprowadzenia prosty tekst wiadomości. bazy danychMetoda przypisuje ciąg "Hello world!" jako wartość parametru wyjściowego.Ta metoda może być zadeklarowana jako procedura składowana w SQL Server, a następnie uruchom w taki sam sposób jak Transact-SQL przechowywane procedury.

Firma Microsoft będzie teraz skompilować ten program jako biblioteki, załaduj go do SQL Server, i uruchom go jako procedura składowana.

Kompilowanie "Hello World" Procedura przechowywana

SQL ServerInstaluje Microsoft .NET Framework redystrybucji pliki domyślniePliki te zawierają csc.exe i vbc.exe, wiersza polecenia kompilatory Visual C# i Visual Basic programów.Aby skompilować naszych próbki, należy zmodyfikować zmienna ścieżka wskaż katalog zawierający csc.exe lub vbc.exe.Poniżej znajduje się domyślna ścieżka instalacji.NET Framework.

C:\Windows\Microsoft.NET\Framework\(version)

Wersja zawiera numer wersji zainstalowanej.NET Framework do dystrybucji.Na przykład:

C:\Windows\Microsoft.NET\Framework\v2.0.31113

Po dodaniu.NET Framework katalogu do ścieżka, można kompilować procedura składowana próbki do wirtualny plik dziennika za pomocą następującego polecenia./target Umożliwia Skompiluj go do wirtualny plik dziennika.

Dla Visual C# źródło plików:

csc /target:library helloworld.cs 

Dla języka Visual Basic źródło plików:

vbc /target:library helloworld.vb

Te polecenia Uruchom kompilatora Visual C# i Visual Basic przy użyciu opcji/miejsce docelowe do określenia budowanie biblioteki DLL.

Ładowanie i uruchamianie "Hello World" Procedura przechowywana w programie SQL Server

Gdy procedura próbki został pomyślnie skompilowany, można przetestować go w SQL Server.Aby to zrobić, otwórz SQL Server Management Studio i Utwórz nową kwerendę, łączenie z bazą danych odpowiednie badania (na przykład AdventureWorks2008R2 przykładowej bazy danych).

Zdolność do wykonywania wspólnej language runtime (CLR) kod jest zestaw do wyłączone domyślnie w SQL Server.Kod CLR można włączyć za pomocą sp_configure systemowa procedura składowana.Aby uzyskać więcej informacji, zobacz Włączanie CLR integracji.

Potrzebujemy do utworzenia wirtualny plik dziennika, aby firma Microsoft może uzyskać dostęp do procedura składowana.Na przykład przyjmiemy, że utworzono wirtualny plik dziennika helloworld.dll w katalogu C:\.Dodaj następujący Transact-SQL instrukcja do kwerendy.

CREATE ASSEMBLY helloworld from 'c:\helloworld.dll' WITH PERMISSION_SET = SAFE

Po utworzeniu wirtualny plik dziennika możemy teraz dostęp Nasza metoda HelloWorld za pomocą instrukcja create procedury.Firma Microsoft będzie wywoływać "hello" nasze procedura składowana:

CREATE PROCEDURE hello
@i nchar(25) OUTPUT
AS
EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld

Po utworzeniu procedury mogą być uruchamiane podobnie jak normalnej procedura składowana, napisane w Transact-SQL.Wydaj następujące polecenie:

DECLARE @J nchar(25)
EXEC hello @J out
PRINT @J

Powinno to spowodować następujące dane wyjściowe w SQL Server Management Studio okno wiadomości.

Hello world!
Hello world!

Usuwanie "Hello World" Przykładowe procedury przechowywanej

Po zakończeniu uruchamiania próbki procedura składowana, procedura i wirtualny plik dziennika można usunąć z testowej bazy danych.

Najpierw usuń procedurę, za pomocą polecenia procedury upuszczania.

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'hello')
   drop procedure hello

Gdy procedura został odrzucony, można usunąć wirtualny plik dziennika zawierającego kod przykładowy.

IF EXISTS (SELECT name FROM sys.assemblies WHERE name = 'helloworld')
   drop assembly helloworld