Es gibt ein paar Tutorials im Web, die beschreiben, wie ein Web-Service mit der CLR-Integration von SQL Server 2005 konsumiert wird. Am meisten scheint der Prozess ziemlich kompliziert zu sein. Ich habe verschiedene Probleme festgestellt, darunter die Notwendigkeit, die Vertrauensstufe meiner Datenbank zu ändern, und das sgen-Tool zum Erstellen einer statischen XmlSerializer-Assembly verwenden. und ich habe es immer noch nicht richtig funktioniert ... (Ich bin mir sicher, ich muss nur ein wenig mehr Zeit und Energie hineinbringen)
Welche Auswirkungen haben Sicherheit, Leistung und Wartung auf diese Art von Architektur? Dies wäre wahrscheinlich ein ziemlich stark genutzter Prozess, und die Wartungsfreundlichkeit ist relativ wichtig.
Ich kann frei entscheiden, ob ich dies als UDF in SQL Server integrieren möchte, oder ob es eine eigenständige .NET-Bibliothek für Konsolen- / Webanwendungen sein soll. Ist die SQL CLR-Integration mit externen Assemblies die Mühe wert?
Die kurze Antwort ist, nein, SQL CLR Integration ist wahrscheinlich nicht die Mühe wert.
Die längere Antwort hat mehrere Punkte, beginnend mit der Programmierung von CLR in der Datenbank. Es ist ein gutes Werkzeug, wenn es richtig verwendet wird, aber es erhöht den Speicherverbrauch und kann zu Leistungsproblemen führen, wenn es nicht korrekt ausgeführt wird. Ich benutze es in meiner Datenbank für sehr spezielle Funktionen, wie das Hinzufügen der RegEx-Fähigkeit, aber es wird sparsam verwendet, mit gut getestetem Code, um so viele Probleme wie möglich zu vermeiden.
Zweitens müssen Sie, wie Sie bereits sagten, die Sicherheit ändern und potenzielle Risiken aufdecken.
Verwenden Sie eine eigenständige Anwendung, um die Daten auf Ihren Server zu laden. Sie haben mehr Kontrolle, weniger Risiko und viel leichter Zeit.
Ich denke, Sie haben Ihre eigene Frage beantwortet. Ich persönlich finde, dass alles, was einen WebService anruft, mehr als nur für Outsides von SQL Server besser geeignet ist. Die Komplikationen, das erhöhte Vertrauen und die Tatsache, dass Sie den gesamten verschachtelten Prozess erwähnt haben, machen es zu einer schwer zu dokumentierenden und schwer zu wartenden Lösung.
Ich habe clr-Prozeduren gemacht, die Webservices sowohl auf Exchange als auch auf AD aufrufen, und ich stimme den obigen Posts zu. Es funktioniert, aber wir haben schnell wegen der besonderen Art und Weise, wie der Speicher in CLR innerhalb von SQL Server gehandhabt wird, Probleme mit zu wenig Arbeitsspeicher bekommen. Wie Sie sich vorstellen können, ist die Leistung für kleine Abfragen in Ordnung, skaliert aber überhaupt nicht.
Im Allgemeinen bestimmt die Leistung Ihrer Datenbank die Leistung Ihrer Anwendung, und ich denke, diese Logik in Ihre Datenbank zu übertragen, ist ein Nein, wenn Sie nicht die vollständige Kontrolle darüber haben, was Sie tun.
Verwenden Sie CLR für einfache Textmanipulationen und andere Berechnungen, die nicht von externen Ressourcen abhängig sind.
Tags und Links sql-server clr web-services