iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)
  • 170
分享到

SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)

摘要

在SQL Server中,普通的表值函数(table-valued function)是可以使用表提示(Hints-Table)的,那么CLR类型的表值函数(table-valued function)是否也可以使用表提示(Hin

SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)

SQL Server中,普通的表值函数(table-valued function)是可以使用表提示(Hints-Table)的,那么CLR类型的表值函数(table-valued function)是否也可以使用表提示(Hints-Table)呢? 相信很多人都没有留意过这个问题。

 

下面我以YoursqlDba中现成的CLR表值函数来演示一下这个问题。如果自己手头有自定义CLR表值函数的,也可以构造自己的实验,查看CLR表值函数可以使用下面SQL

 

 

SELECT * FROM sys.objects WHERE type="FT"

 

 

如下所示,CLR表值函数是不能使用WITH(NOLOCK)的。它会提示语法错误。

 

USE YourSQLDba;
Go
SELECT  *
FROM    [yUtl].[clr_GetFolderList]("C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA",
                                   "*.mdf") WITH(NOLOCK)
 
Msg 319, Level 15, State 1, Line 43
Incorrect syntax near the keyWord "with". If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

 

 

clip_image001

 

 

下面我创建了一个视图,如下所示:

 

 
CREATE VIEW yUtl.v_test
AS
    SELECT  *
    FROM    [yUtl].[clr_GetFolderList]("C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA",
                                       "*.mdf")
 
 
 
 
SELECT * FROM yUtl.v_test WITH(NOLOCK);

 

 

 

clip_image002

 

Msg 4139, Level 16, State 1, Line 52

Cannot process the query because it references the common language runtime (CLR) table-valued function "yUtl.clr_GetFolderList" with a hint through view "yUtl.v_test".

 

 

 

其实这个是因为视图对象使用了WITHNOLOCK)的话,就会自动转换为给视图内部对象加上WITH(NOLOCK),那么就会出现上面的错误,如果像存储过程里面调用了这样的视图,就会出现下面这样的错误信息

 

 

Cannot process the query because it references the common language runtime (CLR) table-valued function "xxxx" with a hint through view "xxxx".

 

但是有点奇怪的是官方资料上并没有详细说明CLR表值函数不能使用WITH(NLOCK)等表提示,不清楚是文档不够完善,还是忽略了这些细节。个人倒是第一次遇到这种错误,特此记录一下这个问题。

 

 

参考资料:

 

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-function-transact-sql?view=sql-server-ver15

Https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15

您可能感兴趣的文档:

--结束END--

本文标题: SQL Server中CLR表值函数(table-valued function)不能使用WITH(NOLOCK)

本文链接: https://www.lsjlt.com/news/6575.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis分布式锁怎么释放
    如何释放 redis 分布式锁 Redis 分布式锁是一种用于在分布式系统中协调对共享资源的访问的技术。释放分布式锁至关重要,因为它可以确保资源在使用后被正确释放,从而防止死锁和数据不一...
    99+
    2024-05-22
    redis
  • redis击穿怎么处理
    redis 击穿的处理方法:使用分布式锁加锁,确保仅一个请求创建 key;启用缓存穿透策略,返回默认值或错误消息;异步创建 key,避免影响主线程性能;预加载热点 key;优化 redi...
    99+
    2024-05-22
    redis
  • redis有序集合怎么实现
    redis有序集合(zset)通过哈希表和跳跃表实现,哈希表存储元素和分数映射,而跳跃表按分数排序元素并维护快速导航的指针,支持多种操作,包括添加、删除、更新分数、查找元素和获取排名,优...
    99+
    2024-05-22
    redis
  • redis哨兵模式怎么用
    redis 哨兵模式是一种高可用性解决方案,通过部署哨兵服务器来实现故障检测和自动故障转移。使用步骤包括:部署哨兵服务器、配置 redis 实例、启动哨兵服务器。哨兵模式工作原理:检测主...
    99+
    2024-05-22
    redis
  • 怎么查看redis是否启动
    检查 redis 是否已启动的最简单方法是使用 redis-cli 命令行工具,命令为: redis-cli -h -p 。除了 redis-cli,还可通过检查端口、查看进程或使用 ...
    99+
    2024-05-22
    redis
  • redis内存满了怎么办
    当redis内存已满时:清理不需要的数据增加redis实例的内存大小使用持久化优化数据结构减少客户端连接监控和调整 Redis内存已满的解决办法 当Redis的内存被占满时,会出现性能...
    99+
    2024-05-22
    redis 内存占用 数据丢失
  • redis多线程怎么用
    redis 支持多线程操作,以提高并发性和吞吐量。使用pubsub机制,可以在线程之间发送和接收消息;通过线程池,可以高效分配和管理预先创建的线程。注意事项包括线程安全、使用相同redi...
    99+
    2024-05-22
    redis
  • redis主从模式怎么切换
    redis 主从模式切换有两种方法:直接切换和 redis-sentinel 辅助切换。直接切换需要手动操作,包括停用主服务器、同步数据、解除关联和连接新主节点。redis-sentin...
    99+
    2024-05-22
    redis
  • redis怎么迁移数据
    redis 提供多种数据迁移方式:redis 复制:启用复制功能,将数据同步到目标服务器。redis rdb 导出和导入:创建 rdb 文件,将其从源服务器复制到目标服务器,然后加载。r...
    99+
    2024-05-22
    redis
  • redis哨兵怎么用
    redis 哨兵是一种 redis 服务的高可用性解决方案,通过监视 redis 实例并进行故障转移来确保服务的可用性。它需要安装 redis 哨兵并配置 sentinel.conf 文...
    99+
    2024-05-22
    redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作