iT邦幫忙

0

[SQL server 2000] open query跨伺服器執行失敗

想請問各位大神,
小弟目前遇到一個難關,
我的需求如下 :

  1. A資料庫資料備份至B資料庫
  2. A資料庫已備份資料刪除
  • A資料庫以及B資料庫皆為SQLserver 2000
  • A資料庫os為 Server2000
  • B資料庫os為 Server2008
  • 資料庫有互相鏈結,鏈結方式一致
  • 資料庫欄位型態、長度一致
  • 資料庫值必須重複,因此不能設定PK
  • 資料庫權限相同

我預計使用stored procedures來進行,並利於後續排程作業,
利用openquery語法來進行跨伺服器下指令
如下
delete openquery([A資料庫], ' select * From c.dbo.trans_log where ire in (select ire From c.dbo.fi where dentry between ''20190901'' and ''20200229'');')

第1項已完成,第2項出現以下錯誤訊息

***[OLE/DB provider returned message: 多重步驟 OLE DB 操作發生錯誤。請檢查每一個可用的 OLE DB 狀態值。尚未完成任何操作。]
訊息 7320,層級 16,狀態 2,行 15
無法對 OLE DB Provider 'SQLOLEDB' 執行查詢。 提供者無法支援所需的資料列尋查介面。 提供者指示出和其他屬性或需求發生衝突。

網路上爬文表示,必須要有設定索引值或是PK,但我資料庫不能這樣設定會影響系統,
後來嘗試反向測試,利用A資料庫用相似語法進行,語法如下
delete openquery([B資料庫], ' select * From c.dbo.trans_log where ire in (select ire From c.dbo.fi where dentry between ''20190901'' and ''20200229'');')

一樣的設定、一樣的資料型態、一樣的版本、一樣沒有PK及索引值,
卻能執行成功,想請問是否有大神能提供方法給小弟,
已經嘗試到焦頭爛耳,
還是不知道為何無法成功,
拜託各位大大幫我解惑,
麻煩各位大大了。

尚未有邦友回答

立即登入回答