【问题标题】:Is there a way to perform an insert into to SQL Server on a column that has IDENTITY enabled有没有办法在启用了 IDENTITY 的列上执行到 SQL Server 的插入
【发布时间】:2023-02-03 22:20:52
【问题描述】:

我有一个 SQL Server,我需要执行各种更新/插入查询以保持数据同步。出于各种原因,我正在设置一个作业而不是具有复制或可用性组的集群,并且只需要一个表来同步。目标服务器和源服务器都有一个启用了 IDENTITY 的列。我需要 INSERT INTO 查询来插入“ID”列,但是在该特定列上出现权限错误:

The OLE DB provider "MSOLEDBSQL" for linked server "server" could not INSERT INTO table "[server].[databse].[dbo].[Client]" because of column "ID". The user did not have permission to write to the column.

我跑了 GRANT INSERT ON Client TO user 并验证了我可以对该表中的其他列执行插入查询。在目标服务器上,我也运行了SET IDENTITY_INSERT Client ON。在这一点上,我认为这不是错误指示的权限问题,但不确定还可以尝试什么。如果我从 SSMS 运行导出并检查 Enable identity insert,我就可以同步数据。只是在寻找一种通过存储过程以编程方式执行此操作的方法。有人可以建议我缺少什么吗?

【问题讨论】:

  • 我认为 SQL Server 只实现 IDENTITY ALWAYS,而不是 IDENTITY BY DEFAULT。我看到的唯一选择是暂时禁用 ID 的自动生成。

标签: sql sql-server identity


【解决方案1】:

使用[数据库]

设置 IDENTITY_INSERT 客户端

执行你的插入语句

如果出现权限错误,请检查执行插入的登录名的用户映射。这可以在 SQL Server Management Studio (SMSS) 中完成

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 2019-08-30
    • 2011-03-03
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多