sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server CLR:cómo llamar al servicio WCF en el procedimiento almacenado CLR SQL en el proyecto de la base de datos

Encontré esto después de mucha búsqueda y pasé mucho tiempo en esto en VS 2014

  1. Crear Database Project Llamado "CLR_Test"
  2. Crear Library Para el cliente WCF "CLR_Service_Client"
  3. Añadir Serivce Refrence del servicio wcf a "CLR_Test" y luego agregue la referencia de "CLR_Service_Client" a "CLR_Test"
    4. Debe cambiar la opción DB para poder ejecutar ensamblados inseguros con el siguiente código

    ALTER DATABASE SaleAutomation SET TRUSTWORTHY ON RECONFIGURE

  4. En "CLR_Test" Project Properties en el SQLCLR conjunto de pestañas Permission level a Unsafe (Otra forma es que después de publicar el proyecto cambie su nivel desde la administración del servidor sql y otra forma es agregar el nivel de permiso al script de publicación, puede usar cada uno de ellos,
    pero debe notar que si usa desde project properties solo el proyecto "CLR_Test" crea automáticamente Unsafe y debe usar otras formas de configurar "CLR_Service_Client" Unsafe )

    6. Ejecute estos scripts para agregar Sqlserver y poder ejecutar el servicio 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. ahora publicas tu proyecto y ejecutas el procedimiento almacenado y disfrutas.