Tag: sqlclr

SQL Server:“为程序集’测试’创建程序集失败,因为程序集’测试’格式错误或不是纯.NET程序集。”

当我尝试将混合模式C ++ / CLI程序集加载到SQL Server 2012时,出现此错误: CREATE ASSEMBLY [Test] AUTHORIZATION [dbo] from ‘H:\test.dll’ WITH PERMISSION_SET = SAFE Msg 6544,Level 16,State 1,Line 1为程序集’Test’创建程序集失败,因为程序集’Test.dll’格式错误或不是纯.NET程序集。 无法validation的PE标头/本机存根。

如何使这个CLR与2005年一起工作?

我正在尝试为使用.net 3.5程序集的sql 2005数据库创建一个clr存储过程 所以首先我必须改变sql 2005来识别system.core是不安全的我不太高兴(我宁愿让它说SAFE)。 现在我收到了这个错误 Msg 6522, Level 16, State 1, Procedure StoredProcedure1, Line 0 A .NET Framework error occurred during execution of user defined routine or aggregate ‘StoredProcedure1’: System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host. The protected resources (only available with full trust) were: All The demanded […]

SQL Server CLR集成是否支持配置文件?

我使用SQL Server CLR集成来创建一个ASSEMBLY。 加载命令: CREATE ASSEMBLY TcpClr FROM ‘G:\TcpClrTest.dll’ WITH PERMISSION_SET = UNSAFE 没有App.Config DLL代码包含: string ip=ConfigurationManager.AppSettings[“connection”].ToString(); App.config还包含: 但是当我执行PROCEDURE时,SQL Server显示错误System.NullReferenceException SQL Server CLR集成是否支持App.config文件?

SQL CLR中的multithreading缓存

是否有任何multithreading缓存机制可以在SQL CLR函数中工作,而不需要将程序集注册为“不安全”? 正如本文所述,只需使用lock语句就会在安全程序集上引发exception: System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host. The protected resources (only available with full trust) were: All The demanded resources were: Synchronization, ExternalThreading 我希望对函数的任何调用都以线程安全的方式使用相同的内部缓存,以便许多操作可以同时执行缓存读取和写入。 本质上 – 我需要一个可以在SQLCLR“安全”程序集中使用的ConcurrentDictionary 。 不幸的是,使用ConcurrentDictionary本身会产生与上面相同的exception。 是否有内置的SQLCLR或SQL Server来处理这个问题? 或者我误解了SQLCLR的线程模型? 我已经阅读了关于SQLCLR的安全限制的内容。 特别是,以下文章可能有助于理解我在说什么: SQL Server CLR集成第1部分:安全性 使用CLR和T-SQL部署/使用需要不安全/外部访问的程序集 此代码最终将成为分发给其他人的库的一部分,因此我真的不希望将其作为“不安全”运行。 我正在考虑的一个选项(由Spender在下面的评论中提出)是从SQLCLR代码中扩展到tempdb并将其用作缓存。 但我不太清楚到底该怎么做。 我也不确定它是否会像内存缓存一样高效。 请参阅下面的更新 我对可能提供的任何其他替代方案感兴趣。 谢谢。 例 […]

如何通知DB表更改(sql 2005)的Windows服务(c#)?

我在SQL2005数据库中有一个负载很重的表(许多插入/更新/删除)。 我想尽可能接近实时地对所有这些更改进行一些后期处理(异步,以免以任何方式锁定表)。 我看了很多可能的解决方案,但似乎无法找到一个感觉正确的整洁解决方案。 后期处理的类型也相当繁重,以至于Windows侦听器服务实际上将处理传递给许多机器。 然而,应用程序的这一部分已经启动并运行,完全异步,而不是我需要帮助 – 我只是想提及这只是因为它影响了设计决策,因为我们不能只加载一些CLR对象DB完成处理。 所以,简单的问题仍然存在:表中的数据更改,我想在远程服务器上的c#代码中进行一些处理。 目前我们已经提出使用一个sql触发器,它执行“xp_cmdshell”来启动一个exe,它引发了一个windows服务正在侦听的事件。 这只是感觉很糟糕。 但是,我在网上看到的其他解决方案也让人感到相当费解。 例如,设置SQLCacheDependancy还需要设置Service Broker。 另一种可能的解决方案是使用CLR触发器,它可以调用Web服务,但是在线上有很多警告,这是一种不好的方法,尤其是在性能至关重要时。 理想情况下,我们不会在表格上进行更改,而是在我们的应用程序中拦截调用并从那里通知服务,遗憾的是我们还有一些遗留应用程序也在对数据进行更改,并且监控表格是唯一的集中位置此时此刻。 非常感激任何的帮助。 摘要: 需要实时响应表数据的变化 绩效至关重要 预计会有大量的流量 轮询和计划任务不是一种选择(或实时) 实施服务代理太大(但可能只是解决方案?) CLR代码尚未排除,但如果建议则需要执行 监听器/监视器可能是远程机器(可能是相同的物理网络)