问题标签 [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.
c# - SQL CLR 确保 finally 块被执行
我有一个 SQL Server CLR 存储过程,用于检索大量行,然后执行一个过程并更新另一个表中的计数。
这是流程:
选择 -> 处理 -> 更新计数 -> 将所选行标记为已处理
该过程的本质是它不应将同一组数据计算两次。并且使用 GUID 作为参数调用 SP。
因此,我保留了当前正在处理的 GUID 列表(在 SP 中的静态列表中),并停止执行以相同参数对 SP 的后续调用,直到当前正在处理的调用完成。
当进程在 finally 块中完成时,我有删除 GUID 的代码,但它并非每次都有效。在某些情况下(例如用户取消 SP 的执行),SP 退出时没有调用 finally 块,也没有从列表中删除 GUID,因此后续调用会无限期地等待。
你们能给我一个解决方案,以确保无论如何都会调用我的 finally 块或任何其他解决方案,以确保在任何给定时间只有一个 ID 正在处理中。
这是删除了处理位的代码示例
sql - 将整行传递给 SQL CLR 函数/存储过程
我有一个过程,我需要对包含 Forename、Surname、Address1 等列的 SQL 表执行一些复杂的字符串操作
为了执行此数据操作,我设置了各种 SQL CLR C# 函数,但现在我想将整行传递给一个 CLR 函数或存储过程。
你最好的方法是什么?
我正在考虑创建一个表值参数,然后创建一个 SQL CLR SPROC 来接受数据,但数据是只读的还是我可以在 C# 中执行数据操作并返回一个新的数据集?
有任何想法吗?
c# - 从 CLR 存储过程调用返回表变量
我有一个现有的 CLR,它使用 XST 来分解和验证传入的 XML。我想将数据点(不关心 XML 本身)捕获到可以直接插入到数据库表中的表中。所以我会调用我的 CLR 存储过程,它会返回 4 列数百或行,我可以简单地做一个
它不一定是 SP,它可以是 UDF……我真正的问题是如何让 CLR 返回一个表。我还需要能够传入表定义。因此,对于 CLR 返回的表......我希望将 4 个列名和类型作为变量作为 CLR 调用的一部分。
如果有人能帮我解决这个问题,我将不胜感激,也给我留下了深刻的印象,因为我问过一些经验丰富的人,当我到达 CLR 的动态表和/或 CLR 返回表时,他们都举起了手一点也不。
谢谢!
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?
c# - SQL CLR 与 .net 的集成
我正在使用 .net 2008 开发一个网站。我的项目是网站类型,我正在使用 SQL CLR 集成,我是 CLR 集成的新手,我的代码是这样的
现在我想知道这个“abc”存储过程是如何在 SQL 中调用的。我应该使用新项目然后使用 SQL Server 项目吗?但我想融入网站。请提供我一步一步的解决方案。
sql-server-2008-r2 - 从 CLR 存储过程返回表
我过去曾使用这样的代码从 CLR 存储过程返回数据:
我现在必须使用 ODBC 来访问 Sybase ASE 数据库(因此,我将使用带有 OdbcConnection 的 OdbcCommand,而不是使用 SqlCommand)。我可以使用 OdbcDataReader 来获取结果集,但这不能输入到 SqlContext.Pipe 中。
是否有 SqlContext 的 Odbc 等效项,或者任何人都可以告诉我如何返回结果集。
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 存储过程),但如果可能的话,我不想在调用堆栈中引入另一层。
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 打开数据库连接等,但这些需要特定的服务器和数据库字符串。我需要灵活性,以便程序集无论在何处托管都可以执行相同的操作。
谷歌搜索没有给我任何东西。
提前致谢
sql-server-2008 - 在 SQL Server 2008 中执行过程时收到错误消息“未知用户名或错误密码”
我无法使用 sql server 2008 中的一个共享文件夹路径执行该过程。
下面是我正在使用的存储过程的一部分:
在执行上述过程时,我收到错误消息:“System.IO.IOException: Logon failure: unknown user name or bad password”
在这里,我正在尝试访问共享文件夹路径。
提前致谢。
sql - 如何在 MS SQL Server 2008 的 CLR 存储过程中选择行?
根据我在 Internet 上找到的示例,我编写了以下 C# 代码,用于在 MS SQL Server 2008 中实现 CLR 存储过程:
此过程将字符串作为参数并输出字符串中的字符数。
我一直在编写一些从 SQL 中检索数据的代码;检索数据的方式没有什么特别之处:它与 SQL 服务器建立连接,选择数据,然后关闭连接。我想让这段代码在我的 SQL 服务器上的存储过程或触发器中运行。
我想我可以使代码运行与现有 SQL 代码完全相同:连接到 SQL 服务器,选择数据,然后关闭连接。但是,一旦代码在 SQL 服务器本身上运行,这就没有意义了!为什么我希望在 SQL 服务器上运行的代码使服务器连接到自身?!?!
我正在尝试做的事情有最佳实践吗?我可以使用用于执行存储过程的相同连接在我的代码中选择行吗?