記憶體優化資料表和原生編譯的預存程式,不支援磁碟式資料表與解譯的 Transact-SQL 預存程式所支援的完整 Transact-SQL 介面區。 嘗試使用其中一個不支援的功能時,伺服器會傳回錯誤。
錯誤訊息文字會提及 Transact-SQL 語句的類型(例如功能、作業、選項),以及功能的名稱或 Transact-SQL 關鍵詞。 大部分不支援的功能都會傳回錯誤 10794,並顯示錯誤訊息文字,指出不支援的功能。 下表列出可以出現在錯誤訊息文字中的 Transact-SQL 功能和關鍵詞,以及解決錯誤的更正動作。
如需瞭解記憶體優化資料表和原生編譯儲存程序支援的功能詳細資訊,請參閱:
使用 In-Memory OLTP 的資料庫
下表列出 Transact-SQL 功能與關鍵詞,這些關鍵詞可能會出現在涉及 In-Memory OLTP 資料庫的錯誤訊息正文中。
| 類型 | 名稱 | 解決辦法 |
|---|---|---|
| 選項 | 自動關閉 | 具有MEMORY_OPTIMIZED_DATA檔案群組的資料庫不支援資料庫選項 AUTO_CLOSE=ON。 |
| 選項 | 附加重建日志 | CREATE 資料庫選項 ATTACH_REBUILD_LOG 不支援具有 MEMORY_OPTIMIZED_DATA 檔案群組的資料庫。 |
| 特徵 / 功能 | 資料庫快照 | 具有MEMORY_OPTIMIZED_DATA檔案群組的資料庫不支援建立資料庫快照集。 |
| 特徵 / 功能 | 使用同步方法 'database snapshot' 或 'database snapshot character' 的複製 | 具有 MEMORY_OPTIMIZED_DATA 檔案群組的資料庫不支援使用 sync_method 'database snapshot' 或 'database snapshot character' 的複寫。 |
| 特徵 / 功能 | DBCC CHECKDB DBCC CHECKTABLE |
DBCC CHECKDB 會略過資料庫中的記憶體優化數據表。 記憶體優化數據表的 DBCC CHECKTABLE 將會失敗。 |
Memory-Optimized 數據表
下表列出 Transact-SQL 功能和關鍵詞,這些關鍵詞可以出現在涉及記憶體優化數據表的錯誤訊息正文中,以及解決錯誤的更正動作。
| 類型 | 名稱 | 解決辦法 |
|---|---|---|
| 特徵 / 功能 | 開啟 | 記憶體優化數據表不能放在檔案群組或分割區配置上。 從 CREATE TABLE 語句中移除 ON 子句。 |
| 數據類型 | 數據類型名稱 | 不支援指定的數據類型。 將類型取代為其中一個支援的數據類型。 如需詳細資訊,請參閱 支持的數據類型。 |
| 特徵 / 功能 | 計算資料行 | 記憶體最佳化表不支援計算行。 從 CREATE TABLE 語句中移除計算數據行。 |
| 特徵 / 功能 | 重複 | 記憶體優化數據表不支持複寫。 |
| 特徵 / 功能 | FILESTREAM | 記憶體優化表的列不支援 FILESTREAM 儲存。 從列定義中移除FILESTREAM關鍵詞。 |
| 特徵 / 功能 | 稀疏 | 記憶體最佳化資料表的欄無法定義為SPARSE。 從欄定義中移除關鍵詞 SPARSE。 |
| 特徵 / 功能 | ROWGUIDCOL | 記憶體優化資料表的列不支援 ROWGUIDCOL 選項。 從欄位定義中移除ROWGUIDCOL關鍵詞。 |
| 特徵 / 功能 | 外鍵 | 記憶體優化數據表不支援外鍵約束。 從數據表定義中移除條件約束。 如需如何減輕對條件約束缺乏支持的資訊,請參閱 移轉檢查和外鍵條件約束。 |
| 特徵 / 功能 | 請檢查 | 記憶體優化表格不支援 CHECK 限制。 從數據表定義中移除條件約束。 如需如何減輕對條件約束缺乏支持的資訊,請參閱 移轉檢查和外鍵條件約束。 |
| 特徵 / 功能 | 獨特 | 記憶體優化的表不支援 UNIQUE 約束條件。 從數據表定義中移除條件約束。 如需如何減輕對條件約束缺乏支持的資訊,請參閱 移轉檢查和外鍵條件約束。 |
| 特徵 / 功能 | COLUMNSTORE | 記憶體優化數據表不支援 COLUMNSTORE 索引。 請改為指定 NONCLUSTERED 或 NONCLUSTERED HASH 索引。 |
| 特徵 / 功能 | 叢集索引 | 指定非叢集索引。 在主鍵索引的情況下,請務必指定 PRIMARY KEY NONCLUSTERED [HASH]。 |
| 特徵 / 功能 | 非 1252 代碼頁 | 記憶體優化數據表中的數據行具有數據類型 char ,而且 varchar 必須使用代碼頁 1252。 使用 n(var)char 而不是 (var)char,或使用具有代碼頁 1252 的定序(例如,Latin1_General_BIN2)。 如需詳細資訊,請參閱 定序和代碼頁。 |
| 特徵 / 功能 | 交易內的 DDL | 記憶體優化資料表和原生編譯預存程序無法在使用者交易的情境下建立或刪除。 請勿啟動交易,並確定會話設定IMPLICIT_TRANSACTIONS為 OFF,再執行 CREATE 或 DROP 語句。 |
| 特徵 / 功能 | DDL 觸發程式 | 如果伺服器或資料庫的觸發程式影響該 DDL 作業,則無法建立或刪除記憶體優化資料表和原生編譯的預存程序。 拿掉 CREATE/DROP TABLE 和 CREATE/DROP PROCEDURE 上的伺服器和資料庫觸發程式。 |
| 特徵 / 功能 | 事件通知 | 如果該 DDL 作業有伺服器或資料庫事件通知,則無法建立或卸除記憶體優化數據表和原生編譯預存程式。 請移除 CREATE TABLE 或 DROP TABLE,以及 CREATE PROCEDURE 或 DROP PROCEDURE 上的伺服器和資料庫事件通知。 |
| 特徵 / 功能 | FileTable | 記憶體優化表格無法建立為檔案表格。 從 CREATE TABLE 語句中移除 自變數AS FileTable |
| 行動 | 更新主鍵數據行 | 記憶體優化數據表和數據表類型中的主鍵數據行無法更新。 如果需要更新主鍵,請刪除舊的數據列,並使用更新的主鍵插入新的數據列。 |
| 行動 | 建立索引 | 記憶體優化數據表上的索引必須與 CREATE TABLE 語句內嵌指定。 若要將索引加入記憶體優化數據表,請卸除並重新建立數據表,包括新的索引規格。 |
| 行動 | ALTER TABLE(修改資料表) | 不支援改變記憶體優化數據表。 使用更新的資料表定義刪除並重新建立資料表。 |
| 行動 | CREATE FULLTEXT INDEX | 記憶體最佳化資料表不支援全文索引。 |
| 行動 | 架構變更 | 記憶體優化數據表和原生編譯儲存程序不支援結構變更,例如 sp_rename。記憶體優化數據表不支援嘗試進行架構變更,例如重新命名數據表,會產生錯誤 12320:需要變更架構版本的作業,例如重新命名。 若要變更架構,請使用更新的定義卸除並重新建立數據表或程式。 |
| 行動 | CREATE TRIGGER | 不支援記憶體優化數據表上的觸發程式。 |
| 行動 | 清空表格內容 (TRUNCATE TABLE) | 記憶體優化資料表不支援 TRUNCATE 作業。 若要從數據表中移除所有數據列,請使用 DELETE FROM資料表 刪除所有數據列,或卸除並重新建立數據表。 |
| 行動 | ALTER AUTHORIZATION | 不支援變更現有記憶體優化數據表或原生編譯預存程式的擁有者。 卸除並重新建立數據表或程式以變更擁有權。 |
| 行動 | ALTER SCHEMA(修改結構) | 不支援變更現有記憶體優化數據表或原生編譯預存程序的架構。 卸除並重新建立數據表或程式以變更架構。 |
| 行動 | DBCC CHECKTABLE | 記憶體優化數據表不支援 DBCC CHECKTABLE。 |
| 特徵 / 功能 | ANSI_PADDING 已關閉 | 建立記憶體優化數據表或原生編譯預存程式時,會話選項 ANSI_PADDING 必須是 ON。 執行 CREATE 語句之前,請先執行 SET ANSI_PADDING ON 。 |
| 選項 | 資料壓縮 | 記憶體優化數據表不支持數據壓縮。 從數據表定義中移除 選項。 |
| 特徵 / 功能 | DTC | 記憶體優化數據表和原生編譯預存程式無法從分散式交易存取。 請改用 SQL 交易。 |
| 特徵 / 功能 | 多個使用中結果集 (MARS) | 多個活動結果集 (MARS) 不支援記憶體優化表。 此錯誤也可能表示使用連結伺服器。 連結的伺服器可以使用MARS。 不支援記憶體優化數據表的伺服器連結。 相反地,直接連接到承載記憶體優化的資料表的伺服器和資料庫。 |
| 行動 | 以記憶體最佳化數據表作為 MERGE 的目標 | 記憶體優化數據表不能作為某項操作的目標MERGE。 請改用 INSERT、 UPDATE或 DELETE 語句。 |
記憶體最佳化資料表上的索引
下表列出了在記憶體優化表的索引相關錯誤訊息中可能出現的 Transact-SQL 功能特性和關鍵詞,及其解決錯誤的修正措施。
| 類型 | 名稱 | 解決辦法 |
|---|---|---|
| 特徵 / 功能 | 篩選的索引 | 記憶體優化數據表不支援篩選索引。 省略索引規格中 WHERE 的子句。 |
| 特徵 / 功能 | 獨特 | 記憶體優化數據表不支援唯一索引。 從索引規格中移除 自變數 UNIQUE 。 |
| 特徵 / 功能 | 可為 Null 的數據行 | 記憶體最佳化資料表索引鍵中的所有資料列都必須指定為 NOT NULL。 在索引鍵的所有欄位中包含NOT NULL限制。 |
| 特徵 / 功能 | 非 bin2 排序規則 | 記憶體優化索引鍵中的所有字元數據行都必須使用 BIN2 定序來宣告。
COLLATE使用 子句在數據行定義中設定定序。 如需詳細資訊,請參閱 定序和代碼頁。 |
| 特徵 / 功能 | 包含的欄位 | 針對記憶體最佳化資料表,不需要指定包含的欄位。 記憶體優化數據表的所有數據行都會隱含地包含在每一個記憶體優化索引中。 |
| 行動 | ALTER INDEX | 不支援變更記憶體優化數據表上的索引。 相反地,請卸除數據表,並使用更新的索引規格重新建立數據表。 |
| 行動 | DROP INDEX(刪除索引) | 不支援移除記憶體優化數據表上的索引。 請改為刪除數據表,然後使用所需索引重新建立。 |
| 索引選項 | 索引選項 | 記憶體優化數據表上的索引不支援指定的索引選項。 從索引規格中移除 選項。 |
非叢集哈希索引
下表列出了 Transact-SQL 特徵和關鍵字,這些關鍵字可能出現在涉及非叢集哈希索引錯誤的訊息正文中,以及用來解決錯誤的修正措施。
| 類型 | 名稱 | 解決辦法 |
|---|---|---|
| 選項 | ASC/DESC | 非叢集哈希索引是未排序的。 從索引鍵規格中移除 關鍵字 ASC 和 DESC 。 |
原生編譯的預存程序
下表列出 Transact-SQL 功能和關鍵詞,這些關鍵詞可以出現在涉及原生編譯預存程式的錯誤訊息正文中,以及解決錯誤的更正動作。
| 類型 | 特徵 / 功能 | 解決辦法 |
|---|---|---|
| 特徵 / 功能 | 內嵌資料表變數 | 數據表類型無法內嵌宣告變數宣告。 表格類型必須使用 CREATE TYPE 語句明確宣告。 |
| 特徵 / 功能 | 游標 | 原生編譯的預存程序不支援游標。 -從用戶端執行程式時,請使用 RPC,而不是數據指標 API。 使用 ODBC 時,請避免 Transact-SQL 語句 EXECUTE,而是直接指定程式的名稱。-從 Transact-SQL 批次或其他預存程序執行程式時,請避免使用具有原生編譯的預存程序的游標。 -建立原生編譯預存程序時,請選擇不使用游標,改用以集合為基礎的邏輯或 WHILE 迴圈。 |
| 特徵 / 功能 | 非常數參數預設值 | 在原生編譯預存程式上搭配參數使用預設值時,值必須是常數。 從參數宣告中移除任何通配符。 |
| 特徵 / 功能 | 外部 | CLR 預存程式無法原生編譯。 請從 CREATE PROCEDURE 語句中移除 AS EXTERNAL 子句或NATIVE_COMPILATION選項。 |
| 特徵 / 功能 | 編號的預存程序 | 原生編譯的預存程式無法編號。
;移除語句中的數字CREATE PROCEDURE。 |
| 特徵 / 功能 | 多行 INSERT ... VALUES 語句 | 無法在原生編譯預存程式中使用相同的 INSERT 語句插入多個數據列。 為每個數據列建立 INSERT 語句。 |
| 特徵 / 功能 | 通用資料表表示式 (CTE) | 原生編譯預存程式中不支援通用數據表表示式 (CTE)。 重寫查詢。 |
| 特徵 / 功能 | 子查詢 | 不支援子查詢(巢狀於另一個查詢內的查詢)。 重寫查詢。 |
| 特徵 / 功能 | 計算 | 此 COMPUTE 子句不受支援。 從查詢中移除它。 |
| 特徵 / 功能 | SELECT INTO | 支援 INTO 子句的語句不包含 SELECT。 將查詢重寫為 INSERT INTOTableSELECT。 |
| 特徵 / 功能 | 輸出 | 此 OUTPUT 子句不受支援。 從查詢中移除它。 |
| 特徵 / 功能 | 不完整的新增欄位清單 | 在語句 INSERT 中,必須為數據表中的所有欄位指定值。 |
| 功能 | 功能 | 原生編譯預存程式中不支援內建函式。 從預存程式中移除 函式。 如需所支援內建函式的詳細資訊,請參閱 原生編譯預存程式。 |
| 特徵 / 功能 | 案例 | 在原生編譯的預存程序中,查詢不支援CASE語句。 為每個案例建立查詢。 如需詳細資訊,請參閱 實現 CASE 語句。 |
| 特徵 / 功能 | 使用者定義函數 | 用戶定義函數不能用於原生編譯預存程式中。 從程式定義中移除函式的參考。 |
| 特徵 / 功能 | 使用者定義聚合 | 用戶定義聚合函數不能用於原生編譯的預存程式中。 從程式中移除函式的參考。 |
| 特徵 / 功能 | 瀏覽模式元數據 | 原生編譯預存程式不支持流覽模式元數據。 請確定 session 選項 NO_BROWSETABLE 設定為 OFF。 |
| 特徵 / 功能 | DELETE 與 FROM 子句 | 在原生編譯預存程序中,以資料表作為來源的DELETE陳述式不支援FROM子句。DELETE 及 FROM 子句在用來指明要刪除的數據表時,會受到支持。 |
| 特徵 / 功能 | 使用含有FROM子句的更新操作 | 原生編譯預存程式中的 UPDATE 語句不支援 FROM 子句。 |
| 特徵 / 功能 | 暫時程序 | 暫時預存程式無法原生編譯。 建立永久原生編譯的預存程序或暫時解譯的 Transact-SQL 預存程式。 |
| 隔離等級 | READ UNCOMMITTED | 原生編譯預存程式不支援隔離等級 READ UNCOMMITTED。 使用支援的隔離等級,例如 SNAPSHOT。 |
| 隔離等級 | READ COMMITTED(已讀取提交) | 原生編譯預存程式不支援隔離等級 READ UNCOMMITTED。 使用支援的隔離等級,例如 SNAPSHOT。 |
| 特徵 / 功能 | 臨時表 | tempdb 中的數據表不能用於原生編譯預存程式中。 請改用具有 DURABILITY=SCHEMA_ONLY 的數據表變數或記憶體優化數據表。 |
| 特徵 / 功能 | 火星 | 原生編譯預存程式不支援多個使用中結果集(MARS)。 此錯誤可能也表示使用了連結伺服器。 連結的伺服器可以使用MARS。 原生編譯預存程式不支援連結的伺服器。 相反地,直接連接到裝載原生編譯預存程式的伺服器和資料庫。 |
| 特徵 / 功能 | DTC | 記憶體優化數據表和原生編譯預存程式無法從分散式交易存取。 請改用 SQL 交易。 |
| 特徵 / 功能 | 非二進位制排序 | 原生編譯預存程式中字元字串的比較、排序和其他作業需要使用 BIN2 定序。 使用 COLLATE 子句,或使用具有適當定序的數據行和變數。 如需詳細資訊,請參閱 定序和代碼頁。 |
| 特徵 / 功能 | 使用 SC 定序截斷字元字串。 | 具有定序的 _SC 字元字串會使用UTF-16編碼。 將 n(var)char 值轉換成較短的長度的 n(var)char 值涉及截斷。 在原生編譯的預存程式中,這不支援 UTF-16 值。 避免截斷 UTF-16 字串。 |
| 特徵 / 功能 | 執行(EXECUTE)並重新編譯(WITH RECOMPILE) | 原生編譯預存程式不支援此選項 WITH RECOMPILE 。 |
| 特徵 / 功能 | LEN 和 SUBSTRING 在 SC 排序中的參數 | 具有_SC定序的字元字串會使用UTF-16編碼。 在原生編譯預存程式內使用內建函式 LEN 和 SUBSTRING 時,不支援 UTF-16 編碼。 使用不同的定序,或避免使用這些函式。 |
| 特徵 / 功能 | 從專用系統管理員連線執行。 | 原生編譯的預存程式無法從專用管理員連接執行(DAC)。 請改用一般連線。 |
| 行動 | ALTER PROCEDURE | 原生編譯的預存程式無法改變。 若要變更程式定義,請卸除並重新建立預存程式。 |
| 行動 | 存檔點 | 原生編譯的儲存程序無法從具有作用中儲存點的交易中呼叫。 從交易中移除儲存點。 |
| 行動 | 變更授權 | 不支援變更現有記憶體優化數據表或原生編譯預存程式的擁有者。 卸除並重新建立數據表或程式以變更擁有權。 |
| 操作員 | OPENROWSET | 不支援此運算符。 從原生編譯的預存程式中移除 OPENROWSET 。 |
| 操作員 | OPENQUERY | 不支援此運算符。 從原生編譯的預存程式中移除 OPENQUERY 。 |
| 操作員 | OPENDATASOURCE | 不支援此運算符。 從原生編譯的預存程式中移除 OPENDATASOURCE 。 |
| 操作員 | OPENXML | 不支援此運算符。 從原生編譯的預存程式中移除 OPENXML 。 |
| 操作員 | CONTAINSTABLE | 此運算符不受支援。 從原生編譯的預存程式中移除 CONTAINSTABLE 。 |
| 操作員 | FREETEXTTABLE | 不支援此運算符。 從原生編譯的預存程式中移除 FREETEXTTABLE 。 |
| 特徵 / 功能 | 表值函數 | 表值函數無法被本機編譯的預存程序參考。 這項限制的其中一個可能因應措施是將數據表值函式中的邏輯新增至程序主體。 |
| 操作員 | 變更表 | 不支援此運算符。 從原生編譯的預存程式中移除 CHANGETABLE 。 |
| 操作員 | GOTO(跳轉到) | 不支援此運算符。 使用其他程式建構,例如 WHILE。 |
| 操作員 | EXECUTE、INSERT EXEC | 不支援巢狀原生編譯預存程式。 必要的操作可以直接在預存程序定義中指定為一部分。 |
| 操作員 | 抵消 | 不支援此運算符。 從原生編譯的預存程式中移除 OFFSET 。 |
| 操作員 | 聯盟 | 不支援此運算符。 從原生編譯的預存程式中移除 UNION 。 您可以使用數據表變數,將數個結果集合並成單一結果集。 |
| 操作員 | 交集 | 不支援此運算符。 從原生編譯的預存程式中移除 INTERSECT 。 在某些情況下,INNER JOIN 可用來取得相同的結果。 |
| 操作員 | 除外 | 不支援此運算符。 從原生編譯的預存程式中移除 EXCEPT 。 |
| 操作員 | 外部連接 | 不支援此運算符。 從原生編譯的預存程式中移除 OUTER JOIN 。 如需詳細資訊,請參閱 實作外部聯結。 |
| 操作員 | 應用 | 不支援此運算符。 從原生編譯的預存程式中移除 APPLY 。 |
| 操作員 | 支點 | 不支援此運算符。 從原生編譯的預存程式中移除 PIVOT 。 |
| 操作員 | UNPIVOT | 不支援此運算符。 從原生編譯的預存程式中移除 UNPIVOT 。 |
| 操作員 | OR、IN | 原生編譯預存程序中查詢的 WHERE 子句不支援分離(OR、IN)。 為每個案例建立查詢。 |
| 操作員 | 包含 | 不支援此運算符。 從原生編譯的預存程式中移除 CONTAINS 。 |
| 操作員 | FREETEXT | 不支援此運算符。 從原生編譯的預存程式中移除 FREETEXT 。 |
| 操作員 | 否 | 不支援此運算符。 從原生編譯的預存程式中移除 NOT 。 在某些情況下, NOT 可以取代為不等。 例如, NOT a=b 可以取代為 a!=b。 |
| 操作員 | TSEQUAL | 不支援此運算符。 從原生編譯的預存程式中移除 TSEQUAL 。 |
| 操作員 | 喜歡 | 不支援此運算符。 從原生編譯的預存程式中移除 LIKE 。 |
| 操作員 | 取得下一個值 | 序列無法在原生編譯預存程式內參考。 使用解譯的 Transact-SQL 取得值,然後將它傳遞至原生編譯的預存程式。 如需詳細資訊,請參閱 在 Memory-Optimized 數據表中實作 IDENTITY。 |
| Set 選項 | 選項 | 無法在原生編譯預存程式內變更 SET 選項。 某些選項可以使用 BEGIN ATOMIC 語句來設定。 如需詳細資訊,請參閱 原生編譯預存程式中的 atonic 區塊一節。 |
| 操作數 | 抽樣取表 (TABLESAMPLE) | 不支援此運算符。 從原生編譯的預存程式中移除 TABLESAMPLE 。 |
| 選項 | 重新編譯 | 原生編譯預存程式會在建立時進行編譯。 若要重新編譯原生編譯預存程式,請卸除並重新建立它。 從程式定義中移除 RECOMPILE 。 |
| 選項 | 加密 | 不支援此選項。 從程式定義中移除 ENCRYPTION 。 |
| 選項 | 供複製使用 | 無法為複製建立本機編譯的預存程式。 已從程式定義中移除 FOR REPLICATION 。 |
| 選項 | FOR XML | 不支援此選項。 從原生編譯的預存程式中移除 FOR XML 。 |
| 選項 | FOR BROWSE | 不支援此選項。 從原生編譯的預存程式中移除 FOR BROWSE 。 |
| 聯結提示 | 雜湊、合併 | 原生編譯的預存程式僅支援巢狀循環聯結。 不支援哈希和合併聯結。 移除結合提示。 |
| 查詢提示 | 查詢提示 | 此查詢提示不在原生編譯預存程式內。 如需支持的查詢提示,請參閱查詢提示 (Transact-SQL)。 |
| 選項 | 獨特的 | 不支援此選項。 從原生編譯預存程式中的查詢中移除 DISTINCT 。 |
| 選項 | 百分比 |
TOP 子句不支援此選項。 從原生編譯預存程式中的查詢中移除 PERCENT 。 |
| 選項 | 有聯繫 | 子句不支援 TOP 此選項。 從原生編譯預存程式中的查詢中移除 WITH TIES 。 |
| 聚合函數 | 聚合函數 | 不支持這個條款。 如需原生編譯預存程式中聚合函數的詳細資訊,請參閱 原生編譯預存程式。 |
| 排名函數 | 排名函式 | 原生編譯預存程式中不支援排名函式。 從程式定義中移除它們。 |
| 功能 | 功能 | 不支援此函式。 從原生編譯的預存程式中移除它。 |
| 聲明 | 陳述式 | 此陳述不被支持。 從原生編譯的預存程式中移除它。 |
| 特徵 / 功能 | MIN和MAX與二進位和字元字串搭配使用 | 聚合函數 MIN 和 MAX 不能用於原生編譯預存程序內的字元和二進位字串值。 |
| 特徵 / 功能 | 不含聚合函數的 GROUP BY | 在原生編譯預存程式中,當查詢具有 GROUP BY 子句時,查詢也必須在SELECT 或 HAVING 子句中使用聚合函數。 將聚合函數新增至查詢。 |
| 特徵 / 功能 | 依所有群組 | ALL 無法與原生編譯預存程式中的 GROUP BY 子句搭配使用。 從 GROUP BY 子句中移除 ALL。 |
| 特徵 / 功能 | GROUP BY () | 不支援依空白清單分組。 要麼移除 GROUP BY 子句,要麼在群組清單中包含欄位。 |
| 特徵 / 功能 | 滾動彙總 |
ROLLUP 無法搭配原生編譯預存程式中的GROUP BY子句使用。 從程式定義中移除 ROLLUP 。 |
| 特徵 / 功能 | 立方體 |
CUBE 無法與用於原生編譯預存程式的 GROUP BY 子句一起使用。 從程式定義中移除 CUBE 。 |
| 特徵 / 功能 | 群組集 |
GROUPING SETS 無法搭配 GROUP BY 原生編譯預存程式中的 子句使用。 從程式定義中移除 GROUPING SETS 。 |
| 特徵 / 功能 | BEGIN TRANSACTION、COMMIT TRANSACTION 和 ROLLBACK TRANSACTION | 使用 ATOMIC 區塊來控制交易和錯誤處理。 如需詳細資訊,請參閱 原子區塊。 |
| 特徵 / 功能 | 內嵌數據表變數宣告。 | 數據表變數必須參考明確定義的記憶體優化數據表類型。 您應該建立記憶體優化數據表類型,並將該類型用於變數宣告,而不是指定內嵌類型。 |
| 特徵 / 功能 | sp_recompile(重新編譯) | 不支援重新編譯原生編譯預存程式。 卸除並重新建立程式。 |
| 特徵 / 功能 | 執行以呼叫者身份 | 條款 EXECUTE AS 是必要的。 但 EXECUTE AS CALLER 不受支援。 使用 EXECUTE AS OWNER、 EXECUTE AS使用者或 EXECUTE AS SELF。 |
| 特徵 / 功能 | 磁碟型資料表 | 無法從原生編譯預存程式存取磁碟數據表。 從原生編譯的預存程序中移除磁碟表格的參考。 或者,將磁碟基礎的表格移轉至記憶體優化版。 |
| 特徵 / 功能 | 瀏覽次數 | 無法從原生編譯預存程式存取檢視。 參考基礎基表,而不是檢視表。 |
| 特徵 / 功能 | 資料表值函數 | 無法從原生編譯預存程式存取數據表值函式。 從原生編譯預存程式中移除數據表值函式的參考。 |
存取 Memory-Optimized 數據表的交易
下表列出 Transact-SQL 功能與關鍵詞,這些關鍵詞會出現在涉及存取記憶體優化數據表之交易之錯誤訊息正文中,以及解決錯誤的更正動作。
| 類型 | 名稱 | 解決辦法 |
|---|---|---|
| 特徵 / 功能 | 存檔點 | 不支援在交易中建立明確的儲存點以存取記憶體優化的資料表。 |
| 特徵 / 功能 | 綁定交易 | 綁定會話無法參與存取記憶體優化的資料表的事務。 在執行程式之前,請勿系結會話。 |
| 特徵 / 功能 | DTC | 存取記憶體優化數據表的交易不能是分散式交易。 |