Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server CLR:So rufen Sie den WCF-Dienst in der CLR-SQL-gespeicherten Prozedur im Datenbankprojekt auf

Ich habe dies nach langem Suchen gefunden und viel Zeit damit in VS 2014 verbracht

  1. Erstellen Sie ein Database Project Genannt "CLR_Test"
  2. Erstellen Sie eine Library Für den WCF-Client „CLR_Service_Client“
  3. Fügen Sie Serivce Refrence hinzu des WCF-Dienstes zu „CLR_Test“ und fügen Sie dann die Referenz von „CLR_Service_Client“ zu „CLR_Test“ hinzu
    4. Sie müssen die DB-Option ändern, um unsichere Assemblys mit dem folgenden Code ausführen zu können

    ALTER DATABASE SaleAutomation SET TRUSTWORTHY ON RECONFIGURE

  4. In den "CLR_Test" Project Properties im SQLCLR Registerkartensatz Permission level zu Unsafe (Eine andere Möglichkeit besteht darin, dass Sie nach dem Veröffentlichen des Projekts seine Ebene von der SQL-Serververwaltung ändern, und eine andere Möglichkeit besteht darin, dass Sie dem Skript der Veröffentlichung eine Berechtigungsebene hinzufügen, Sie können jede von ihnen verwenden,
    aber Sie müssen beachten, dass, wenn Sie von Project Properties Nur das Projekt "CLR_Test" erstellt automatisch Unsafe und Sie müssen andere Möglichkeiten verwenden, um "CLR_Service_Client" Unsafe festzulegen )

    6.Führen Sie dieses Skript aus, um Sqlserver hinzuzufügen, damit der WCF-Dienst ausgeführt werden kann

CREATE ASSEMBLY 
SMDiagnostics from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMDiagnostics.dll'
with permission_set = UNSAFE
GO

CREATE ASSEMBLY 
[System.Web] from
'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Web.dll'
with permission_set = UNSAFE
GO

CREATE ASSEMBLY 
[System.Messaging] from
'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll'
with permission_set = UNSAFE
 GO

CREATE ASSEMBLY  
[System.IdentityModel] from
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.dll'
with permission_set = UNSAFE
GO

CREATE ASSEMBLY  
[System.IdentityModel.Selectors] from
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.Selectors.dll'
with permission_set = UNSAFE
GO

CREATE ASSEMBLY -- this will add service modal
[Microsoft.Transactions.Bridge] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\Microsoft.Transactions.Bridge.dll'
with permission_set = UNSAFE
GO

CREATE ASSEMBLY -- this will add service modal
[System.Runtime.Serialization] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.Runtime.Serialization.dll'
with permission_set = UNSAFE
GO
CREATE ASSEMBLY -- this will add service modal
[System.ServiceModel] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.ServiceModel.dll'
with permission_set = UNSAFE
GO
  1. veröffentlichen Sie jetzt Ihr Projekt und führen Sie gespeicherte Prozeduren aus und genießen Sie es.