首页 > 解决方案 > SET IDENTITY_INSERT 不适用于特定帐户

问题描述

我有一个 Admin_Acct,它是我授予 User_Acct 对表 SrcTable_Arc 的写入权限的 DB_Owner。我有这个查询:

SET IDENTITY_INSERT SrcTable_Arc ON
     INSERT INTO SrcTable_Arc (
        TxnDate
        ,TxnName
        ,ServerName
        ,ReplyReceived
        ,HistoryId)
    SELECT 
        TxnDate
        ,TxnName
        ,ServerName
        ,ReplyReceived
        ,HistoryId
    FROM SrcTable
    WHERE TxnDate = '2019-11-08 10:06:09.888'
    ORDER BY TxnDate Desc
     SET IDENTITY_INSERT SrcTable_Arc OFF

当我使用 Admin_Acct 时,此查询有效。但是,当我尝试使用 user_Acct 运行此查询时,会出现错误:

消息 1088,级别 16,状态 11,第 3 行
找不到对象“SrcTable_Arc”,因为它不存在或您没有权限。

我已经检查了该帐户对该表的权限,并且它已经具有权限。

无论如何,当我使用 User_Admin acct 对该表进行简单的更新、插入和删除时,它就可以工作。

有什么建议吗?

标签: sql-server

解决方案


您可以尝试在插入命令之前打开 identity_insert 吗?

SET IDENTITY_INSERT SrcTable_Arc ON

SET IDENTITY_INSERT SrcTable_Arc ON     
INSERT INTO SrcTable_Arc (
            TxnDate
            ,TxnName
            ,ServerName
            ,ReplyReceived
            ,HistoryId)
        SELECT 
            TxnDate
            ,TxnName
            ,ServerName
            ,ReplyReceived
            ,HistoryId
        FROM SrcTable
        WHERE TxnDate = '2019-11-08 10:06:09.888'
        ORDER BY TxnDate Desc
         SET IDENTITY_INSERT SrcTable_Arc OFF

推荐阅读