问题标签 [sqlclr]
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连接问题
我需要使用连接从两个表中选择数据。这相当简单,在这里没有问题。当我加入的字段被用作两个单独的外键(我没有设计这个)时,就会出现问题。所以我加入的 ID 字段是正数或负数。
如果是正数,则与 table_2 表上的 ID_1 相关,如果为负数,则与 table_2 表上的 ID_2 相关。但是 ID_2 将是一个正数(即使它在外键中存储为负数)。显然没有强制执行这些限制 - 所以本质上不是真正的外键:/
我使用的 SQL 是这样的,适用于正数:
如何将其消极方面纳入联接。这甚至可能吗?理想情况下,我想根据需要更改表格,但显然这不是一个有效的选择。我很好,真的被困住了。
我唯一的另一个想法是单独的 sql 语句来处理这些奇怪的语句。这一切都是由 C# 中的 clr sql 运行的。在代码中添加一个单独的 SqlCommand 很可能会减慢速度,因此我更愿意将它全部保存在一个命令中。
欢迎您的意见,谢谢:)
sqlclr - 使用 SQL CLR 存储过程进行表记录插入的任何最佳实践?
最近我们将一组基于 C# 的复杂调度逻辑转换为 SQL CLR 存储过程(在 SQL Server 2005 中运行)。我们相信我们的代码是一个很好的 SQL CLR 候选,因为:
- 该逻辑涉及大量来自 SQL Server 的数据。
- 逻辑复杂,使用 TSQL 难以完成
- 没有线程或同步或从沙箱外部访问资源。
到目前为止,我们的 sp 的结果非常好。但是,由于我们的逻辑输出是多张数据表的形式,我们不能只返回单个行集作为 sp 的结果。相反,在我们的代码中,我们在 foreach 循环中有很多“INSERT INTO ....”语句,以便将 C# 通用集合中的每条记录保存到 SQL 表中。在代码审查期间,有人担心 SQL CLR 中的内联 SQL INSERT 方法是否会导致性能问题,并想知道是否有其他更好的方法来转储数据(来自我们的 C# 通用集合)。
那么,有什么建议吗?
sql-server - 无法从 select ... from table 语句调用标量值 CLR UDF
我创建了一个标量值 CLR UDF(用户定义函数)。它需要一个时区 id 和一个日期时间,并返回转换为该时区的日期时间。
我可以毫无问题地从简单的选择中调用它:“select dbo.udfConvert('Romance Standard Time', @datetime)”(@datetime 当然是一个有效的日期时间变量)
但是,如果我称它为从表中传入日期时间,它会失败:“从某个表中选择 dbo.udfConvert('Romance Standard Time', StartTime)”(StartTime 列当然是日期时间类型的列)
错误消息是:“找不到列“dbo”或用户定义的函数或聚合“dbo.udfConvert”,或者名称不明确。”
此消息实际上是针对拼写错误的初学者,但由于它在一种情况下有效,而在另一种情况下无效,我不认为我有任何拼写错误。
有任何想法吗?
sql-server-2008 - 无论如何能够引用 SQL Server 2008 (CLR) 触发器中“插入”和“删除”表中的 xml/文本列?
当我在 SQL Server 2008 的 clr 触发器中“从已删除中选择 *”时出现异常。是否能够从触发器中的已删除和插入的表中访问 xml/text 列?
.net - 使用 .Net 3.5 程序集 SQL 2005 CLR?
我有一个 CLR 存储过程,它引用在 VS 2008 中创建的使用 Linq 的程序集。让我们将此程序集称为“MyLib”。
我似乎无法将“MyLib”放入我的 SQL 2005 数据库。我执行以下操作:
但我得到了错误:
有没有一种更简单的方法可以将所有 .Net 3.5 程序集放入 SQL 2005 CLR,除了我为每个程序写一个“CREATE ASSEMBLY”命令?是否有一些“最佳实践”的方式来做到这一点?
powershell - SQLCLR中的Powershell?
在过去,我已经能够在 SQLCLR 中嵌入一个 sripting 语言(如 JScript),因此脚本可以作为函数的参数传递,以执行某些计算。这是一个简单的示例(函数 ssScriptExecute 返回脚本中所有打印的串联):
我希望能够以同样的方式嵌入 Powershell 运行时。但是我遇到了各种各样的问题,因为运行时尝试按路径查找程序集,而 SQlCLR 内部没有路径。我很高兴提供有关我得到的错误的更多信息,但我想知道是否有人尝试过这个!
谢谢!
c# - 同步访问sql server SQLCLR中的静态变量
我编写了一个集成在 sql server 中的程序集,提供了一些用 C# 编写的存储过程。该程序集有一个只读静态变量,其中包含一些配置数据。该数据通过存储过程进行操作,这些存储过程也由程序集提供。显然我必须同步访问这个静态变量。我试着用
在我的配置类里面。但后来我得到一个 HostProtectionException,告诉我,程序集必须以完全信任的方式运行才能做到这一点。有没有更好的方法来做到这一点?
sql-server-2005 - HttpWebRequest 第一次在 SQLCLR 中运行缓慢
在 CLR 存储过程中发出 HttpWebRequest 时(根据下面的代码),Sql Server (重新)启动后或给定(但不确定)时间段后的第一次调用会在GetResponse() 方法调用。
有什么方法可以解决这个不涉及“黑客”的问题,例如每隔几分钟运行一次 Sql Server 代理作业以尝试确保代理发出第一个“慢”调用而不是“真实”生产代码?
(为简洁起见,已删除错误处理和其他非关键代码)
另请参阅此 Sql Server 论坛主题。
sql-server - 重新部署包含 CLR 存储过程的 .NET 程序集
我写了一个程序集中的 CLR 存储过程。
我有一个构建系统,可以从我们的源代码控制存储库自动构建和部署 .net 应用程序。
我希望这两件事一起工作,这样我就可以重新部署承载 CLR 存储过程的程序集。
然而,与 IIS 不同,它看起来像简单地替换二进制文件是行不通的。似乎您必须在数据库上删除组件。为此,您需要删除所有引用该程序集的对象。
一方面,这似乎是合理的——即,从数据库完整性的角度来看——而另一方面是不合理的——JIT 方法通常适用于.NET 依赖项的运行时评估。
那么,是否有可能做一些事情,这样我就可以替换二进制文件,然后给 SQL Server 一个踢脚并使其确定新程序集满足所有要求(即,具有正确的公共命名空间、类型、方法等来满足存储过程绑定到它)。
c# - 从 CLR 存储过程中访问 Sql FILESTREAM
我正在尝试从 CLR 存储过程访问 Sql 文件流。我已经建立了一个非常简单的数据库,其中包含一个包含文件流列的单个表。我可以使用一个简单的控制台应用程序成功地从文件流中读取。这是失败的proc的一些示例代码:
尝试构造 SqlFileStream 实例时抛出异常:
System.ComponentModel.Win32Exception 发生 Message="不支持请求" Source="System.Data" ErrorCode=-2147467259 NativeErrorCode=50
有人知道我在做什么错吗?