sql - 通过 SQL 中的 OpenQuery 截断 IBM i 表
问题描述
我目前正在尝试通过使用链接服务器的 openquery 在 SSMS 中使用以下命令删除 IBM i 上表中保存的数据;
DELETE FROM OpenQuery(LnkSrv,'SELECT * FROM LibA.Table1')
运行上述内容时,我收到一条错误消息。
链接服务器“LnkSrv”的 OLE DB 提供程序“IBMDASQL”返回消息“键列信息不足或不正确。更新影响了太多行。”。消息 7345,级别 16,状态 1,第 3 行链接服务器“LnkSrv”的 OLE DB 提供程序“IBMDASQL”无法从表“SELECT * FROM LibA.Table1”中删除。更新不符合架构要求。
解决方案
我的感觉是,这不是 OpenQuery 的具体问题。
我怀疑 DB2 on i 'CLRPFM' 情况和使用 OLE DB 驱动它的组合会造成某种混乱。
你的目标表有主键吗?如果没有,我会尝试添加一个。
如果您只想一次性清除表,您应该能够在 IBM i 上本地运行删除。
推荐阅读
- c++ - 必须调用非静态成员函数的引用(向量)
- javascript - React PropTypes 获取指定值
- reactjs - MaterialTable:在字段属性上显示 html 标签
- python - 如果值不在字典中,则定义映射 - Python
- c# - DbContext 检测延迟加载
- angular - Angular:为多个令牌提供相同的实例
- amazon-web-services - 如何在 X-Ray 服务图中链接 lambda 函数调用
- java - 自动装箱/拆箱java Long类型作为返回值时出现意外的NullPointerException
- django - Django-admin ,在 Admin Inline (ChangeForm) 中显示图像缩略图
- android - Android Socket.io 发出两次而不是一次?