Mir sind zwei prinzipielle Lösungen bekannt.
(1) Über OleDb, die per 'T-Sql RegEx' auffindbaren Artikel liefern Beispiele.
(2) Per CLR-Prozedur auf dem Sql2005, das ist der Link von @Webi.
Problem bei ersterem: Man muß den Zugriff auf die OLE-Prozeduren gestatten, je nach Situation kann das zu Sicherheitsproblemen führen. Man kann ja dann auf so ziemlich alles zugreifen.
Problem bei zweiterem: Die Integration von .NET in den Sql2005 ist zwar eine wunderbare Idee, hat aber im praktischen Betrieb immer wieder zu ekeligen Problemen geführt. Wenn man das Assembly ändert, dann reicht es bei einer Webanwendung, das einfach reinzukopieren. Die Laufzeitumgebung bemerkt die Änderung, kompiliert das neu, läßt die noch laufenden Threads auf der alten DLL zu Ende laufen und startet die neuen Anfragen über den neuen Code - wunderbar.
Der Sql2005 lädt das irgendwie so direkt, daß das nicht geht. Man muß alle auf dieser Assembly basierenden erweiterten Prozeduren löschen, das Assembly löschen, neu installieren, die Prozeduren (einschließlich Berechtigung) neu erstellen. Das alles ginge ja noch. Aber ich wollte das u.a. zum Mailversand nutzen, damit wurden diverse andere Assemblies nachgeladen, die durchweg als UNSAFE reinkommen. Und wenn man dann hinreichend häufig das Assembly aktualisiert hat - läßt sich das plötzlich nicht mehr laden. Technisch hilft dann nur ein Neustart des SqlServer-Dienstes. Bei laufendem Betrieb nicht denkbar, glücklicherweise bin ich über das Problem mal abends gestolpert, als es einigermaßen ruhig war.
Resultat: Bei server-daten läuft inzwischen ein eigener Dienst, der Remote-Objekte zur Verfügung stellt. Der Sql2005 lädt nur noch eine winzige abstrakte Klasse mit Schnittstellendefinitionen, anstatt daß er tonnenweise UNSAFE Assemblies laden muß - und ruft die Funktionen remote auf. Für meine Zwecke reicht das - aber das ist natürlich sehr viel langsamer als ein In-Process-Aufruf.
Und es ist eine 'nicht ganz unaufwendige' Architektur, auch da will ich ja das Assembly aktualisieren, ohne den Dienst neu starten zu müssen. Geht - ist aber nicht ganz simpel, läuft analog in zwei Varianten auf dem Webserver.