【发布时间】:2014-07-13 12:29:22
【问题描述】:
我研究 SQL Server CLR UDF 和并行性已经有一段时间了。普遍的共识似乎是,在 SQL Server 2008 及更高版本中,带有DataAccessKind.None 的标量值 CLR UDF 应该允许并行执行。
但是,当我在 SQL Server 2012 的视图中使用我的标量值 UDF 时,它仍然会终止连接等中的并行执行。
我需要在我的 C# 代码或 T-SQL UDF 定义中添加什么特别的东西来表明并行执行是安全的吗?
谢谢。
【问题讨论】:
-
根据版主的建议,我提供了一个链接,指向我之前发布的关于该主题的帖子:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
-
您是否在 UDF 中做任何事情来阻止它被认为是确定性的?如果不是,那么您是否在
SqlFunction()属性中指定IsDeterministic = true?IsDeterministic默认为假。IsPrecise也是如此。 -
如果设置
IsDeterministic和/或IsPrecise可以解决问题(假设您没有在函数中执行任何操作来阻止将它们设置为true),那么我将在此处发布答案以及跟进那个 MSDN 论坛。 -
我很确定我的 UDF 是确定性的。你能给我一个不是确定性的例子吗? (除此之外,比如 RAND()、@@IDLE 等)
-
@srutzky - 我也在想同样的事情。我将创建一个新线程并在此处发布链接。谢谢!
标签: c# sql-server parallel-processing sqlclr