Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server CLR :comment appeler le service WCF dans la procédure stockée CLR SQL dans le projet de base de données

J'ai trouvé cela après de nombreuses recherches et passé beaucoup de temps dessus dans VS 2014

  1. Créer un Database Project Appelé "CLR_Test"
  2. Créer Library Pour le client WCF "CLR_Service_Client"
  3. Ajouter Serivce Refrence du service wcf à "CLR_Test" puis ajoutez la référence de "CLR_Service_Client" dans "CLR_Test"
    4. Vous devez modifier l'option DB pour pouvoir exécuter des assemblages non sécurisés avec le code ci-dessous

    ALTER DATABASE SaleAutomation SET TRUSTWORTHY ON RECONFIGURE

  4. Dans les Project Properties "CLR_Test" dans le SQLCLR ensemble d'onglets Permission level à Unsafe (une autre façon existe qu'après la publication du projet, vous modifiez son niveau à partir de la gestion du serveur sql et une autre façon consiste à ajouter un niveau d'autorisation au script de publication, vous pouvez utiliser chacun d'eux,
    mais vous devez remarquer que si vous utilisez from project properties seul le projet "CLR_Test" crée automatiquement Unsafe et vous devez utiliser d'autres moyens pour définir "CLR_Service_Client" Unsafe )

    6.Exécutez ces scripts pour ajouter Sqlserver et pouvoir exécuter le service wcf

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. vous publiez maintenant votre projet, exécutez la procédure stockée et profitez-en.