【发布时间】: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