在内存表中使用 ddl 触发器

Mic*_*vko 3 sql-server in-memory-database sql-server-2014 memory-optimized-tables

我创建了服务器范围 ddl 触发器来审核服务器上的用户活动。
现在,如果有人尝试创建内存表,该语句将失败并显示以下错误:

Error SQL72014: .Net SqlClient Data Provider: Msg 12332, Level 16, State 107,
Line 1 Database and server triggers on DDL statements DROP and CREATE are not
supported with memory optimized tables.
Run Code Online (Sandbox Code Playgroud)

我可以创建 ddl 触发器来忽略对内存表的操作吗?

Han*_*non 5

不,启用了内存中 OLTP 的数据库不支持 DDL 触发器

内存中 OLTP 表和本机编译的模块不支持数据库级和服务器级 DDL 触发器。

您不能在启用了内存中 OLTP 的数据库中创建 DDL 触发器,因为运行触发器所需的代码路径会干扰内存中功能。解决方法是将所有内存中 OLTP 表放在一个没有 DDL 触发器的单个数据库中,并将其余表放在一个单独的数据库中,而没有内存优化表,并在那里启用 DDL 触发器。