sql - 内存中的表和使用 SQL Server 存储的过程中的正常表
问题描述
我正在尝试将存储过程重写为本机编译的存储过程。程序参考4张表;这些表是普通表(非内存优化),我正在使用 2 个与之相关的视图。
是否可以在不将任何这些对象转换为内存优化表的情况下创建本机编译的存储过程?
解决方案
不,本机编译的存储过程不能引用基于磁盘的表,只能引用内存优化的表。这是 Kalen Delaney 的书SQL Server Internals: In-Memory OLTP的引述:
但是,与可用于解释代码的丰富功能集相比,在本机编译的存储过程中允许使用的 T-SQL 语言结构存在一些限制。此外,本机编译的存储过程只能访问内存优化表,不能引用基于磁盘的表。
我在官方 Microsoft Docs 中找不到明确的声明,除了这个限制,这是事实的直接后果,即本机编译的存储过程不能引用“正常”表:
对于内存优化表,FOREIGN KEY 约束仅支持引用其他内存优化表的主键的外键。
推荐阅读
- vue.js - 如何使用 vue-router 重定向到 URL 参数无效的 404 页面
- r - 通过从数据表中选择另一个页面来更新绘图
- node.js - 带有 NodeJS 的用户名/密码的 TLS
- javascript - TypeError: firebase.initializeApp 不是仅当 jest 运行测试时的函数
- ios - UIPageViewController 在 viewDidLoad() 之后加载 ViewController 的延迟
- java - 二进制文件的十六进制表示
- python - AWS EC2 连续一个月运行 python 程序
- typescript - 从 Webstorm 中的 docker 容器远程调试 koa 应用程序(Typescript)
- ios - Flutter 在执行 Flutter build ios 后卡在 Building Dart 代码上
- html - 如何仅使用 html 或 css 为音频制作切换按钮?