一千萬個為什麽

搜索

如何使用慢速連接“插入到”從Access到SQL/Server將記錄插入SQL/Server

這是我嘗試過的。我錯過了什麽或者應該做什麽?

我的情況:

  • 另一個國家的SQL/Server - 直接互聯網連接 不可靠的專線 成本過高,線路狀況不斷變化(ping 180至500 +)
  • 通過VPN連接訪問SQL/Server - 非常慢但幹凈/可靠
  • 訪問美國的ACCDB(ace)數據庫 - 數量少,工作正常
  • 需要“插入select * from”

我嘗試了以下所有方法:

DAO - (currentdb.execute)運行Access SQL,通過VPN連接到遠程SQL/Server的OLEDB - 可以使用“插入”非常慢。

ADO使用Access SQL - 甚至更慢。

僅OLEDB,SQL命令發出到遠程SQL/Server無法看到本地ACCDB文件,因此您必須循環遍歷記錄集,為每條記錄構建一條SQL語句。非常慢。大量的額外編碼。

OLEDB訪問鏈接表到SQL/Server。快速讀取數據,插入記錄非常慢。

兩端的SQL/Server。本地SQL/Server鏈接表到ACCDB和遠程服務器。有效但不提高速度。 1000個相當小的記錄需要5分鐘以上才能插入。

批量插入。不能這樣做,源數據不是文本文件,它是ACCDB。這不是一次性轉換,它是新/已更改記錄的每日更新。

SSIS - 似乎很快,因為我能夠快速遷移整個數據庫,但對於日常使用普通插入和刪除看起來不合適或不容易。

還沒有嘗試過:SQL/Server訂閱者 - 發布者鏡像/復制,以使遠程表“幾乎”本地化。

所以,令人驚訝的是我發現遠程ACCDB(沒有SQL/Server)的DAO比通過VPN的SQL/Server快20倍。但是,我更願意使用SQL/Server。

我錯過了什麽或者應該做什麽?

最佳答案

Double check TCP/IP connections are enabled on the SQL Server & and are actually being used by the client (instead of named pipes) - if you use OLEDB stick ;Network Library=DBMSSOCN on the end of the connection string to force this.

您是否嘗試從遠程SQL服務器“拉”?即你的應用程序調用使用OPENROWSET/OPENQUERY從本地SQL服務器提取數據的存儲過程? - 對於具有不對稱上/下速度的連接非常有用。

轉載註明原文: 如何使用慢速連接“插入到”從Access到SQL/Server將記錄插入SQL/Server