内存优化表不支持 DDL 语句 CREATE、ALTER 和 DROP 上的数据库和服务器触发器。
我已经放弃了 sec 策略和第二个索引。 我不能删除 spidfilter,因为你必须有 1 个 MOT 索引。 只是想看看这是否有所作为。但事实并非如此。代码如下:
create table dbo.MOT_tmpTableName
(
Col1 int,
Col2 int,
Col3 smalldatetime,
Col4 smalldatetime,
Col5 varchar(25),
Col6 date,
Col7 smallint,
Col8 smallint,
Col9 smallint,
Col10 smallint,
SpidFilter smallint not null DEFAULT (@@spid),
index nIX_SpidFilter nonclustered (SpidFilter),
index nIX_Col1_Col2_Col3 nonclustered (Col1, Col2, Col3),
CONSTRAINT CHK_MOT_tmpTableName_SpidFilter
CHECK ( SpidFilter = @@spid ),
)
WITH
(MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);
go
create security policy dbo.MOT_tmpTableName_SpidFilter_Policy
ADD FILTER PREDICATE dbo.fn_SpidFilter(SpidFilter) ON dbo.MOT_tmpTableName
WITH (STATE = ON);
go
我问过周围,其他环境没有这个问题。 我无法摆脱“数据库和服务器触发器......”的困扰。 触发什么触发器会导致错误?
如果您使用 SQL Server Managment studio,可以在数据库触发器的“数据库”->“数据库名称”->“可编程性”->“数据库触发器”文件夹和“服务器对象”->“触发器”文件夹下找到这些文件在对象资源管理器中。
纯 t-SQL 搜索:
SELECT
*
FROM
database_name.sys.triggers AS T
WHERE
T.parent_class = 0;
SELECT
*
FROM
sys.server_triggers AS ST;
希望它有效!