【问题标题】:Delete records in db2 from SQL Server via odbc通过 odbc 从 SQL Server 删除 db2 中的记录
【发布时间】:2017-06-15 23:34:26
【问题描述】:

我有一个从 SQL Server 到 db2 系统的 ODBC 连接。我可以使用OPENQUERY 从我的预期表中选择、插入和删除记录。

但是,我需要定期删除表中的所有记录,并且在尝试删除全部内容时,我遇到了有关隔离级别的错误,但我认为这实际上与我尝试的行数有关一次性删除。

我可以循环遍历并一次删除大约 600 个,但现在这只是一个技巧。

关于如何更有效地做到这一点的任何建议?

我得到的错误:

链接服务器“MY_SERVER”的 OLE DB 提供程序“MSDASQL”返回消息“既不支持隔离级别,也不支持加强隔离级别。”。

消息 7392,第 16 层,状态 2,第 32 行
无法为链接服务器“MY_SERVER”的 OLE DB 提供程序“MSDASQL”启动事务。

【问题讨论】:

  • 您可以使用 OpenRowSet 来替代。但请确保您拥有执行删除操作的正确权限。

标签: sql-server db2 odbc openquery


【解决方案1】:

如果您真的想删除 DB2 表中的所有记录,何不尝试:

TRUNCATE TABLE <mytable>

我认为您可以使用以下方式在 OLE DB(这不是 ODBC)中通过 EXEC 运行它:

EXEC <mylinkedserver.db>sp_executesql 'TRUNCATE TABLE <mytable>'

【讨论】:

  • 我试过了,但我没有权限。此外,至少在 sql server 中,如果有任何表具有 FK 到表,则截断将不起作用。这不是这里的情况,但它是截断并不总是可用的解决方案的一个常见原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 2018-12-01
相关资源
最近更新 更多