问题标签 [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 投票
1 回答
43 浏览

sql - 对所有组织单位的系统用户的 SQL 查询都有一个 datevalue < ... 之间的数据透视表

我有3张桌子,

  • SystemUsers
  • OrganisationalUnits
  • UserOrganisationUnits- 使用 UserId/OrganisationUnitId 外键进行透视

所有表都有一个Active位列,OrganisationalUnit表有一个CoveredTill datetime列。

我想要一个列表,列出所有UserOrganisationUnitsOrganisationalUnitCoveredTill”< x(值无关紧要,因为将在 clr 中设置)日期并且所有表记录都处于活动状态。

到目前为止,我只设法从我的查询中获得独特的用户,所以任何建议都将不胜感激。

我随机将日期设置为上述日期,因为我在所有 OrganisationalUnits“CoveredTill”列上手动将涵盖的截止日期设置为“2015-03-31 00:00:00.000”。

我的目标是有一个单一的 sql 查询字符串,我可以在我的 clr 存储过程中使用它来创建需要通过电子邮件发送的所有用户的列表,因为不再涵盖组织单位,并且所述电子邮件包含哪个组织单位,因此为什么仅拥有唯一的用户列表是不够的。

我已经有了电子邮件代码,所以这只是我遇到问题的查询。

编辑:-

我第一次接近这个需要3个单独的查询,我想经过更多测试后我将不得不重新访问,除非有人能发现我在上面的查询中做错了什么?

编辑2: -

在解决了 sarin 的问题并准备向他提供 sql db/query 副本后,我发现一些连接指向错误的 ID 字段(从不同的窗格自动创建,因此请始终警惕它们创建的任何内容)所以下面我'已经包括了最终的解决方案。(其中包括我认为可能有用的几个额外字段)。

0 投票
1 回答
353 浏览

c# - 用 CLR 存储过程替换 TSQL 存储过程

场景: 我有一个使用 C# 调用普通 SQL Server 存储过程的现有应用程序。我正在考虑删除一些现有的存​​储过程并用 CLR 存储过程替换它们。我从未编写过 CLR 存储过程。

问题:

前提是 CLR 存储过程与它们要替换的存储过程具有相同的名称和参数。我是否必须对调用存储过程的 C# 代码进行任何更改?

0 投票
0 回答
362 浏览

sql - 读取 SQL Server 存储过程中单个字段的多个值

有人可以让我知道如何处理这种情况吗?

我有一个场景,我需要通过调用一次 SQL 存储过程来读取单个列的多个值。

例如:在数据中,我有 name1、name2、name3、name4,我需要调用一次 SQL 存储过程来读取所有这些名称并将它们存储在表中。

0 投票
1 回答
214 浏览

c# - 从 C# CLR 反序列化 DateTime

我的 CLR 类中有一个 json 字符串,如下所示:

CLR 类调用 REST api 并将参数传递给它。在我的 REST api 中,我像这样反序列化参数:

当我到达这条线时:

发生异常并且不会将其转换为 DateTime。我怎样才能让它工作?

0 投票
1 回答
727 浏览

c# - System.InvalidCastException 在调用 CLR 存储过程

我正在尝试在 Visual Studio 2012 中调试 CLR 存储过程。当我调用它时,会发生此错误并且不会调用 CLR 存储过程:

这是 CLR 存储过程定义:

这就是我试图称呼它的方式:

请问有什么帮助吗?谢谢詹姆

0 投票
0 回答
1474 浏览

c# - System.InvalidOperationException:无法在安全透明方法中执行 CAS 断言

我有一个用 C# 4.0 编写并部署在 SQL Server 2014 上的 SQL CLR 触发器。每当在 SQL Server 的表中发生插入时,此 CLR 触发器的工作就是将该行导入 Oracle 数据库中。所以基本上我必须在 SQL Server 2014 中的表上触发插入查询时将数据导入 Oracle 数据库。这是我的第一个 CLR SQL 触发器项目,下面是我正在做的事情:

这是我创建组装/部署触发器的代码:

现在的问题是,每当我在 SQL Server 中运行插入查询以插入数据时,都会在 SQL Server 中出现以下错误:

消息 6522,级别 16,状态 1,过程tri_InsertSurvey_clr,第 18
行在执行用户定义的例程或聚合“tri_InsertSurvey_clr”期间发生 .NET Framework 错误:

tri_InsertSurvey_clr是每当我运行插入语句时负责执行程序集的触发器。

请告诉我我缺少什么以便我收到此错误,此外,如果有更优雅的方式来实现 CLR SQL 触发器,那么也请提出建议。

注意:当我尝试使用 SQL Server 中的触发器保存数据时,我成功了,但是现在当我尝试将其保存在 Oracle 数据库中时,我收到了这个错误。Oracle 数据库也安装在另一台机器上。

0 投票
1 回答
296 浏览

sql - SQL Server 2012 CLR 集成 PInvoke PolicyException

我编写了一些 CLR 集成的用户定义函数,其中一个需要在绝对路径中调用 PInvoke 方法到 C++ dll。

[DllImport(@"C:\FullPath\CppCode.dll"...

我已将其部署在 SQL Server 2008 R2(无服务包)上,并且能够成功调用此 UDF 并接收查询结果。(我启用了 CLR,使用权限集 UNSAFE 加载了 CLR 程序集,并将 trustworthy 设置为 true。我还拥有机器和 SQL 服务器实例的完整管理员权限)

但是,当我在另一台安装了 SQL Server 2012 的机器上执行完全相同的操作时(操作系统和这台机器上的几乎所有配置都与另一台相同),我可以调用除 PInvoke 函数之外的所有 CLR 函数,它得到以下内容错误信息

Msg 6522, Level 16, State 1, Line 2 A .NET Framework error occurred during execution of user-defined routine or aggregate "MyUserDefinedFunction": System.ArgumentException: System.Security.Policy.PolicyException Execution permission cannot be acquired. at UserDefinedFunctions.MyMethodWithPInvoke() ...(more stack trace) ---> System.Security.Policy.PolicyException: Execution permission cannot be acquired. System.Security.Policy.PolicyException: ... (more stack trace) System.ArgumentException: at UserDefinedFunctions.MyUserDefinedFunction( ...

我曾与我们的数据库人员一起工作,我们尝试向我们能想到的所有帐户授予管理员权限(甚至是 SQL Server 配置管理器中所有 SQL Server 服务的服务帐户),但我们正在努力弄清楚是什么SQL Server 2008 和 2012 之间进行了某种策略更改。

有谁知道需要做什么才能允许 SQL CLR 函数调用 PInvoke 到 SQL Server 2012 中磁盘上的 DLL?它在 2008 R2 中运行良好

编辑:我在 PInvoke 调用周围投入了一个 try/catch,并且能够发现 PolicyException 具有以下属性 Message: "Execution permission cannot be acquired." Source: "mscorlib"

0 投票
3 回答
7258 浏览

c# - SQL Server CLR:如何在数据库项目中的 CLR SQL 存储过程中调用 WCF 服务

我有 Visual Studio 2013。

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

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

谁能帮我?

我希望能够在不更改程序集的情况下更改服务地址,类似于我可以在WCF 客户端配置部分中web.config执行的操作。endpoint

0 投票
1 回答
62 浏览

mysql - 使用 Select Dateadd() sqlserver 减去年份

我有 2 个文本框:expiredfrom 和 expiredto。这些文本框允许用户找到正在使用许可证并且将在付款后一年内过期的人,范围从“过期时间”到“过期时间”。在我的数据库中,它只显示购买日期,所以我尝试使用 SELECT DATEADD() 函数将用户输入减去 1 年,这样过期日期将与购买日期相同。但是,当我尝试实现时,它表明其中存在语法错误。问题是什么?谢谢

0 投票
3 回答
54 浏览

.net - 存储过程,在返回客户端之前将结果存储在另一个表中

存储过程使用以下查询来获取结果并将结果返回给客户端。

您能否指导我如何将这些结果存储在花药表中以供进一步使用,然后再将它们返回给客户。只是不想两次获取数据或使用表变量。我创建了另一个表' Temp_CurrentProductSet'。

编辑:

我尝试使用into以下代码尝试使用子句,但出现此错误:

缺少对象或列名称或为空。对于 SELECT INTO 语句,验证每一列都有一个名称。对于其他语句,请查找空别名。不允许使用定义为 "" 或 [] 的别名。将别名更改为有效名称。

代码: