问题标签 [clrstoredprocedure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
274 浏览

c# - 如何使用 CLR proc C# 替换存储过程中的 while 循环

我想在 C# 中使用 CLR Proc 替换 SP 中的两个 While 循环 有人可以帮忙吗 我们想优化应用程序的性能 一些更好的想法非常受欢迎,提前谢谢这是我的代码片段。

0 投票
3 回答
567 浏览

.net - 更新实体框架后,我的 CLR StoredProcedure 停止工作,直到我再次编译它

我在sql server clr-how to call wcf service in clr sql storage procedure in visual studio之前问了这个问题 并创建了一个stored procedure调用wcf service,但是当我在我的服务器存储过程上将实体框架 4.5 更新到 4.5.1 时不起作用并且它的错误是System.ServiceModel组装
我被迫做所有步骤来回答我的旧问题并再次发布存储过程以工作。

但我很困惑,因为我的 sql server 是 2008 r2 并且它与实体框架 3.5 一起使用,为什么我必须重新发布我的存储过程和所有步骤有人可以帮助我吗?

0 投票
2 回答
2118 浏览

.net - Error creating CLR Assembly for SQL Server 2012

I have a CLR Package made using VB.NET in Visual Studio 2012 that I'm trying to deploy to a SQL Server 2012 database. The solution has two projects, one that will be the CLR and another that is referencing a Web Service. Anytime I try to deploy to SQL, I get the following error

(47,1): SQL72014: .Net SqlClient Data Provider:
Msg 6211, Level 16, State 1, Line 1
CREATE ASSEMBLY failed because type 'SSRSService.ReportExecutionService.ReportExecutionService' in safe assembly 'SSRSService' has a static field '__ENCList'. Attributes of static fields in safe assemblies must be marked readonly in Visual C#, ReadOnly in Visual Basic, or initonly in Visual C++ and intermediate language.
An error occurred while the batch was being executed.

I've already ensured that the project has the Permission level UNSAFE and that TRUSTWORTHY is ON for the SQL Server.

The weird thing is that the field it's claiming to be the problem doesn't even exist! The project that it's complaining about only contains a Web Service reference and nothing more.

0 投票
1 回答
128 浏览

sql-server - clr 存储过程调用 wcf 服务缺少参数值

我面临一个由 CLR 存储过程调用的 WCF 服务的非常奇怪的问题。

基本上我的服务需要一个元素数组,如下所示:

//SQL/CLR

在我的服务中设置一个断点,我可以检查是否只有 C 和 E 参数具有值。

有什么线索吗?

0 投票
2 回答
336 浏览

sql-server - 通过电子邮件发送 CLR 存储过程结果

我需要通过电子邮件将 CLR 存储过程的结果(我无法更改 sproc / clr 程序集)作为 HTML 发送。是否有可能在不使用临时表或其他类型的持久化的情况下捕获和格式化存储过程的结果集(通过电子邮件发送)?

0 投票
1 回答
254 浏览

sql - 将所有列值合并为一列作为 CSV

如何将行的所有值合并到MS SQL Server中的一个字段中,

假设我的表格格式是::

输出

如何将 area_name、city、state、postal_code 和 country 的值合并为一个 CSV 格式的地址。

我的代码

0 投票
2 回答
5689 浏览

c# - 消息 6522,执行 clr 存储过程期间的 16 级警告

我想创建 SQL Server CLR 存储过程,用于在 SQL Server 2012 的表中插入一些行。

这是我的 C# 代码:

我可以在 SQL Server 中成功构建、部署和发布我的代码,但是如果我在 SQL Server 中运行此 CLR 存储过程,我会看到以下消息:

消息 6522,级别 16,状态 1,过程 InsertingRows,第 0
行在执行用户定义的例程或聚合“InsertingRows”期间发生 .NET Framework 错误:
System.Security.SecurityException:对“System.Data”类型权限的错误请求。 SqlClient.SqlClientPermission,System.Data,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089"。
System.Security.SecurityException:
北 System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
北 System.Security.PermissionSet.Demand()
北 System.Data.Common.DbConnectionOptions.DemandPermission()
北 System.Data .SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
bei System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry) bei System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) bei System.Data.SqlClient.SqlConnection.Open() bei StoredProcedures.InsertingRows() 1 retry, DbConnectionOptions userOptions)
bei System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource



我怎么解决这个问题?

0 投票
0 回答
354 浏览

c# - 从 SQL CLR 例程调用的 PrincipalContext 上出现错误 6522

我正在尝试将我的第一个 CLR 例程添加到 SQLServer 2008(将很快升级到 2014)。目标是向 Active Directory 添加一个用户对象,传入十几个属性值,以根据来自 ERP 接口的数据创建用户(接口工作正常,数据良好)。一位同事创建了一个包装 PrincipalContext 的紧凑 C# 类,实际上从另一个工作应用程序中获取了代码并对其进行了一些简化(见下文)。

我们能够打开 CLR,将 DB 设置为 TRUSTWORTHLY,等等,然后使用 UNSAFE 选项为他的代码及其所需资源执行 CREATE ASSEMBLY,因为该代码不是 Microsoft 审查的 .NET 类子集的一部分在 SQLServer 中运行:

(所有创建和后续的 ALTER 都运行良好,每当我们更改我在这里模糊的自定义类库 XXXXXXX_CLR 时,我们都会更改最后一个...... CLR 存储过程创建良好,并执行 OK,直到它尝试保存用户通过 PrincipalContext 对象。我们得到以下代码和错误消息。

我已经阅读了 50 个网页来寻找这个错误的答案;我们暂时让 SQLserver 以域管理员身份运行的用户(开发系统——我敢肯定这是糟糕的做法),从具有域管理员权限的登录 SQL 用户调用它,给定代码能够使用的域服务帐户传入显式 .NET AD 连接域管理员,将用户和密码选项从对 PrincipalContext 的调用中移除,以查看 SQLServer 的用户或调用用户的 privs 是否会控制它,在 PrincipalContext 构造函数调用中尝试不同的选项组合等.

.... 等剩余属性....我们已经使用 FIM 和其他 C# 中间件库调用多年,忽略细节...我们肯定有正确的 AD 属性覆盖在我们传入的参数中但我不想在这里暴露所有这些。

所以这是总是出现的错误消息(我知道它正在执行 C# CLR 代码,因为我在类库 CLR 中有其他属性验证问题要处理,它最终到了调用 PrincipalContext 并失败的地步那里):

我阅读了一些有关 Windows 身份“模拟”的内容,但我不明白为什么在所有涉及的服务都作为域管理员权限运行时,我什至无法让 AD 运行 PrincipalContext 调用。我知道我不能真正使用这种方法(安全非入门者),但想知道为什么它不起作用以及在这里尝试什么替代方法,这样我就可以找到一个可以用于生产实施的解决方案。在将运行它的服务帐户放入域管理员组 BTW 后,我确实退回了 SQLServer。

非常感谢您对这个冗长的问题的友好审查。

0 投票
1 回答
95 浏览

c# - SQL Server CLR 和 T-SQL 存储过程是否与调用者相同?

为了编写一些虚拟存储过程,我想知道是否可以用 C# 编写它们,因为我不太了解 T-SQL。

同一过程的 C# 和 T-SQL 版本是否与使用标准数据库库类调用代码(例如 C++/C#/Java 代码)没有区别?

0 投票
1 回答
395 浏览

c# - 使用 CLR 存储过程在事务内记录 TSQL

我正在尝试将日志写入事务中的另一个数据库,以便即使事务回滚,日志也将继续存在。我读过这个答案,上面写着:

一种可能性是使用 CLR 存储过程进行日志记录。这可以在事务之外打开自己与数据库的连接,并输入和提交日志数据。

所以我使用这篇文章创建了 CLR 存储过程:

但是,我在 SQL Server 中执行和回滚存储过程后,并没有保存数据:

我们有三个环境:

  • dev. 服务器名称是Q-SQL001
  • test. 服务器名称是Q-SQL002
  • prod. 服务器名称是Q-SQL003

所以这个 CLR 存储过程应该适用于所有环境。

你能说我做错了什么吗?任何帮助将不胜感激!

更新:

所以工作版本看起来像这样。非常感谢@米尔尼