簡體   English   中英

如何通過慢速連接使用“插入”將記錄從SQL / Server訪問中插入SQL / Server

[英]How to insert Records to SQL/Server from Access to SQL/Server using “Insert Into” with slow connection

這是我嘗試過的。 我沒有或應該嘗試什么?

我的情況:

  • 另一個國家/地區的SQL / Server-不可靠的直接Internet連接,專用線成本過高,線路條件不斷變化(ping 180至500+)
  • 通過VPN連接訪問SQL / Server-非常慢,但干凈/可靠
  • 在美國訪問ACCDB(ace)數據庫-數量少,工作正常
  • 需要“插入選擇* from”

我已經嘗試了以下所有方法:

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

ADO使用Access SQL-甚至更慢。

僅用於OLEDB,發出到遠程SQL / Server的SQL命令看不到本地ACCDB文件,因此您必須遍歷記錄集,為每個記錄構建一條SQL語句。 非常慢。 很多額外的編碼。

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

兩端都是SQL / Server。 本地SQL / Server鏈接表到ACCDB和遠程服務器。 可行,但不能提高速度。 1000條相當小的記錄需要5+分鍾才能插入。

批量插入。 無法做到這一點,源數據不是文本文件,而是ACCDB。 這不是一次轉換,而是每天更新新記錄或更改記錄。

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

尚未嘗試:SQL / Server訂閱服務器-發布者的鏡像/復制,可將遠程表“虛擬”地保留在本地。

因此,令人驚訝的是,我發現DAO到遠程ACCDB(無SQL / Server)的速度比通過VPN的SQL / Server快20倍。 但是,我寧願使用SQL / Server。

我沒有或應該嘗試什么?

仔細檢查TCP / IP連接已在SQL Server&上啟用,並且實際上正在由客戶端(而不是命名管道)使用-如果您使用OLEDB stick ;Network Library=DBMSSOCN在連接字符串末尾使用;Network Library=DBMSSOCN強制執行此操作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM