问题标签 [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 回答
631 浏览

c# - SQL CLR 确保 finally 块被执行

我有一个 SQL Server CLR 存储过程,用于检索大量行,然后执行一个过程并更新另一个表中的计数。

这是流程:

选择 -> 处理 -> 更新计数 -> 将所选行标记为已处理

该过程的本质是它不应将同一组数据计算两次。并且使用 GUID 作为参数调用 SP。

因此,我保留了当前正在处理的 GUID 列表(在 SP 中的静态列表中),并停止执行以相同参数对 SP 的后续调用,直到当前正在处理的调用完成。

当进程在 finally 块中完成时,我有删除 GUID 的代码,但它并非每次都有效。在某些情况下(例如用户取消 SP 的执行),SP 退出时没有调用 finally 块,也没有从列表中删除 GUID,因此后续调用会无限期地等待。

你们能给我一个解决方案,以确保无论如何都会调用我的 finally 块或任何其他解决方案,以确保在任何给定时间只有一个 ID 正在处理中。

这是删除了处理位的代码示例

0 投票
1 回答
869 浏览

sql - 将整行传递给 SQL CLR 函数/存储过程

我有一个过程,我需要对包含 Forename、Surname、Address1 等列的 SQL 表执行一些复杂的字符串操作

为了执行此数据操作,我设置了各种 SQL CLR C# 函数,但现在我想将整行传递给一个 CLR 函数或存储过程。

你最好的方法是什么?

我正在考虑创建一个表值参数,然后创建一个 SQL CLR SPROC 来接受数据,但数据是只读的还是我可以在 C# 中执行数据操作并返回一个新的数据集?

有任何想法吗?

0 投票
1 回答
4069 浏览

c# - 从 CLR 存储过程调用返回表变量

我有一个现有的 CLR,它使用 XST 来分解和验证传入的 XML。我想将数据点(不关心 XML 本身)捕获到可以直接插入到数据库表中的表中。所以我会调用我的 CLR 存储过程,它会返回 4 列数百或行,我可以简单地做一个

它不一定是 SP,它可以是 UDF……我真正的问题是如何让 CLR 返回一个表。我还需要能够传入表定义。因此,对于 CLR 返回的表......我希望将 4 个列名和类型作为变量作为 CLR 调用的一部分。

如果有人能帮我解决这个问题,我将不胜感激,也给我留下了深刻的印象,因为我问过一些经验丰富的人,当我到达 CLR 的动态表和/或 CLR 返回表时,他们都举起了手一点也不。

谢谢!

0 投票
3 回答
291 浏览

c# - Does a SQL CLR stored procedure prevent injection?

I have written a CLR stored procedure in C# like this

#xA;

Is it vulnerable to SQL injection? I am using SqlParameter. Any best practises?

0 投票
0 回答
174 浏览

c# - SQL CLR 与 .net 的集成

我正在使用 .net 2008 开发一个网站。我的项目是网站类型,我正在使用 SQL CLR 集成,我是 CLR 集成的新手,我的代码是这样的

现在我想知道这个“abc”存储过程是如何在 SQL 中调用的。我应该使用新项目然后使用 SQL Server 项目吗?但我想融入网站。请提供我一步一步的解决方案。

0 投票
1 回答
1878 浏览

sql-server-2008-r2 - 从 CLR 存储过程返回表

我过去曾使用这样的代码从 CLR 存储过程返回数据:

我现在必须使用 ODBC 来访问 Sybase ASE 数据库(因此,我将使用带有 OdbcConnection 的 OdbcCommand,而不是使用 SqlCommand)。我可以使用 OdbcDataReader 来获取结果集,但这不能输入到 SqlContext.Pipe 中。

是否有 SqlContext 的 Odbc 等效项,或者任何人都可以告诉我如何返回结果集。

0 投票
1 回答
434 浏览

sql-server-2008-r2 - 从 CLR 存储过程返回行数

如果我有这样的存储过程:

并使用executeUpdate(来自标准 java.sql 库)调用它,然后将更新的行数返回给 Java 程序(当然,假设更新语句更新了表中的一行)。

但是,如果我执行如下编码的 CLR 存储过程:

然后Java程序没有得到更新的行数(它似乎得到了一个返回值-1)。SET NOCOUNT ON如果我放入SQL 存储过程,也会发生这种情况。

因此,在我看来,CLR 存储过程就像SET NOCOUNT ON使用了一样。

有没有办法编写 CLR 存储过程,以便可以像 SQL 存储过程一样获取行数?不幸的是,无法将 Java 程序(它是第 3 方组件)更改为例如获取 OUTPUT 参数。我看过 SqlContext.Pipe 但那里没有什么明显的。此外,我不确定将行计数返回给 executeUpdate 过程的机制。

我可能会创建一个 hack 来解决这个问题(例如,Java 执行一个 SQL 存储过程,而后者又执行一个 CLR 存储过程),但如果可能的话,我不想在调用堆栈中引入另一层。

0 投票
1 回答
84 浏览

sql-server - 如何从安装在 SQL Server 数据库中的程序集中引用该数据库中的本地表?

假设我有一个程序集,其中包含does_stuff()已安装在 SQL Server 数据库中的方法。我希望此方法/存储过程引用数据库中的特定已知表。如何在不知道其托管位置does_stuff的情况下访问表的内容?

假设does_stuff应该访问 table info_config。如果它托管在数据库ALPHA中,它将访问ALPHA.info_config 如果它托管在数据库BETA中,它将访问BETA.info_config

我知道如何使用 ADO.NET 打开数据库连接等,但这些需要特定的服务器和数据库字符串。我需要灵活性,以便程序集无论在何处托管都可以执行相同的操作。

谷歌搜索没有给我任何东西。

提前致谢

0 投票
1 回答
982 浏览

sql-server-2008 - 在 SQL Server 2008 中执行过程时收到错误消息“未知用户名或错误密码”

我无法使用 sql server 2008 中的一个共享文件夹路径执行该过程。

下面是我正在使用的存储过程的一部分:

在执行上述过程时,我收到错误消息:“System.IO.IOException: Logon failure: unknown user name or bad password”

在这里,我正在尝试访问共享文件夹路径。

提前致谢。

0 投票
1 回答
1063 浏览

sql - 如何在 MS SQL Server 2008 的 CLR 存储过程中选择行?

根据我在 Internet 上找到的示例,我编写了以下 C# 代码,用于在 MS SQL Server 2008 中实现 CLR 存储过程:

此过程将字符串作为参数并输出字符串中的字符数。

我一直在编写一些从 SQL 中检索数据的代码;检索数据的方式没有什么特别之处:它与 SQL 服务器建立连接,选择数据,然后关闭连接。我想让这段代码在我的 SQL 服务器上的存储过程或触发器中运行。

我想我可以使代码运行与现有 SQL 代码完全相同:连接到 SQL 服务器,选择数据,然后关闭连接。但是,一旦代码在 SQL 服务器本身上运行,这就没有意义了!为什么我希望在 SQL 服务器上运行的代码使服务器连接到自身?!?!

我正在尝试做的事情有最佳实践吗?我可以使用用于执行存储过程的相同连接在我的代码中选择行吗?