Vor kurzem durfte ich was mit der CLR-Integration auf dem
SQL Server 2005 machen. Dazu sind aber einige Vorbereitungen
auf dem Server nötig.
Zuerst prüft man ob die Unterstützung schon eingeschaltet ist.
Default ist das nämlich nicht.
--Prüfen ob die CLR Eingeschaltet ist
EXEC sp_configure
"run_value" muss "1" sein.
Wenn nicht, dann schaltet man die Unterstützung ein.
-- CLR Unterstützung einschalten
EXEC sp_configure 'clr enabled' ,1
GO
RECONFIGURE
GO
Jetzt sollte die Unterstützung dafür eingeschaltet sein.
Danach wird die Assembly eingelesen.
USE [DATENBANK]
GO
-- Assembly in der CLR installieren
CREATE ASSEMBLY SQL_INTEGRATION
AUTHORIZATION [dbo]
FROM 'D:\SQLIntegration.dll'
WITH PERMISSION_SET = UNSAFE --Ist default EXTERNAL_ACCESS / UNSAFE / SAFE
GO
Wichtig ist das man zuerst mit USE auf die richtige Datenbank wechselt.
Die Assembly muss auf dem SQL Server liegen.
PERMISSION_SET ist default auf SAFE gestellt. Je nach dem auf welche
Ressourcen man zugreifen muss ändert man die Permission.
Danach erstellt man die Prozedur.
--Porzedurname definieren
CREATE PROCEDURE sp_LoadPerson
(
@ServerIP nvarchar(15),
@Mandant nvarchar(255),
@ConnectString nvarchar(1024)
)
AS
EXTERNAL NAME SQL_INTEGRATION.Person.LoadPersons;
GO
Die Parameter entsprechen den Parametern im C# Code.
EXTERNAL NAME hat den Aufbau <Assemblyname>.<Klassenname>.<Methodenname>.
[Microsoft.SqlServer.Server.SqlProcedure]
public static void LoadPersons
(SqlString ServerIP, SqlString Mandat, SqlString ConnectString)
{
Jetzt kann man die Prozedur ausführen.
--Prozedur ausführen.
EXEC sp_LoadPerson
@ServerIP = N'192.100.1.6',
@Mandant = N'Meine AG',
@ConnectString = N'DRIVER={C/ODBC 32 bit};UID=test;PWD=********;sNam ...'
GO