当我尝试删除内存优化表时,我收到此错误。我正在使用sql server 2016 sp1
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
我问过周围和其他环境没有这个问题。我无法获得"数据库和服务器触发器......"意料之外。什么触发器触发导致错误?
答案 0 :(得分:0)
您的数据库或服务器中可能有激活的DDL触发器。
如果您使用的是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;