繁体   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