c# - SQL 服务器 CLR : how to call WCF Service In CLR SQL stored procedure in database project

标签 c# sql-server wcf sql-server-2012 clrstoredprocedure

我有 Visual Studio 2013。

我创建了一个数据库项目。

我向该项目添加了一个 CLR 存储过程,我想从中调用 WCF 服务。

谁能帮帮我?

我希望能够在不更改程序集的情况下更改服务地址,类似于我在 web.config 中使用我的 WCF 客户端配置的 endpoint 部分所做的事情。

最佳答案

经过大量搜索后我发现了这个,并在 VS 2014 中花了很多时间

  1. 创建名为“CLR_Test”的数据库项目
  2. 为 WCF 客户端“CLR_Service_Client”创建
  3. 将wcf服务的Service Refrence添加到“CLR_Test”,然后将“CLR_Service_Client”的refrence添加到“CLR_Test”
    4.您必须更改数据库选项以能够使用以下代码运行不安全的程序集

    ALTER DATABASE SaleAutomation SET TRUSTWORTHY ON 重新配置

  4. SQLCLR 选项卡的“CLR_Test”Project Properties 中,将 Permission level 设置为 Unsafe (另一种方法是在发布项目后从 sql server 管理更改其级别,另一种方法是将权限级别添加到发布脚本,您可以使用它们中的每一个,
    但你必须注意到,如果你使用 project properties 只有“CLR_Test”项目自动创建 Unsafe 并且你必须使用其他方式设置“CLR_Service_Client” Unsafe )
    enter image description here
    6.运行这个脚本来添加Sqlserver可以运行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. 现在您可以发布您的项目并运行存储过程并尽情享受。

关于c# - SQL 服务器 CLR : how to call WCF Service In CLR SQL stored procedure in database project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316738/

相关文章:

sql - 如何找到运行乘法

.net - 有人有一个例子说明为什么我要自行托管 WCF 服务吗

wcf - 是否可以使用实体作为数据契约?

SQL Server 存储过程 if 语句注入(inject)字符串

sql - 为什么在使用 CASE 表达式时会出现语法错误 Msg 156?

windows - Log4Net 与 WCF 作为服务运行

c# - 如何在字符串末尾插入退格

c# - 通过动态图像处理程序渲染图像的布局修复

c# - 在 EF 4.x 中处理将 0/1 转换为 False/True 的最简单方法是什么?

c# - 是否可以在程序集中的所有测试之前和之后执行一个方法?