DDL语句上的数据库和服务器触发器内存优化表不支持CREATE,ALTER和DROP

时间:2017-02-15 21:47:08

标签: sql sql-server-2016

当我尝试删除内存优化表时,我收到此错误。我正在使用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

我问过周围和其他环境没有这个问题。我无法获得"数据库和服务器触发器......"意料之外。什么触发器触发导致错误?

1 个答案:

答案 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;