C# 通过拨号连接批量复制SQL数据的最佳方法是什么?

C# 通过拨号连接批量复制SQL数据的最佳方法是什么?,c#,sql-server,ras,C#,Sql Server,Ras,我有一些远程SQL服务器,需要定期从中提取大量数据(比如说,每台服务器5000000行)。此数据还需要格式化并传送到另一台服务器。拨号部分很好,我可以连接并与服务器通信,但有时连接速度很慢,可能只有19Kbps 连接后,我尝试使用System.Data.SqlClient.SqlBulkCopy,但它只是抛出了一个超时错误。我已经将大容量复制的超时时间设置为7200秒,将每个数据库的连接字符串的超时时间设置为900秒,但仍然会在30秒左右超时 我尝试使用DataReader并运行SqlComma

我有一些远程SQL服务器,需要定期从中提取大量数据(比如说,每台服务器5000000行)。此数据还需要格式化并传送到另一台服务器。拨号部分很好,我可以连接并与服务器通信,但有时连接速度很慢,可能只有19Kbps

连接后,我尝试使用System.Data.SqlClient.SqlBulkCopy,但它只是抛出了一个超时错误。我已经将大容量复制的超时时间设置为7200秒,将每个数据库的连接字符串的超时时间设置为900秒,但仍然会在30秒左右超时

我尝试使用DataReader并运行SqlCommand.ExecuteNonQuery()插入每一行,这可以正常工作,但速度很慢,有时连接会丢失


我还尝试在远程服务器上设置DTS包,安排它们转储我需要的文本数据,然后尝试下载文件。但是,它们可能只有几百MB(在某些服务器上甚至可能是GB),拨号连接通常会在某个点断开

有多少英里远?你能偷偷上网看DVD吗?

有多少英里远?你能把DVD上网吗?

用压缩格式压缩数据,它内置在.NET中


如果数据仍然太大,您可以尝试使用外部库/可执行文件来RAR或7Zip数据,因为这将是ZIP副本大小的一半。

使用ZIP格式压缩数据,它内置在.NET中


如果数据仍然太大,您可以尝试使用外部库/可执行文件来RAR或7Zip数据,因为这将是压缩副本的一半大小。

如果是一个选项,请将其压缩、ftp并在您的一侧执行大容量插入。

如果是一个选项,请将其压缩、ftp并在您的一侧执行大容量插入。

关于此主题的一些想法:

  • 在源代码处构建一个例程以提取 然后将数据切碎成几个部分 较小的文件。FTP文件 单独检查一下 mechansim确保他们拥有所有 到了

  • 如果您可以在源代码中识别更改的或新的数据,请在源代码中使用某种更改的数据捕获功能,并且只发送增量(如果您已经这样做了,则表示歉意)

  • 压缩分块文件以减少要发送的数据大小


    • 关于这个话题的一些想法:

      • 在源代码处构建一个例程以提取 然后将数据切碎成几个部分 较小的文件。FTP文件 单独检查一下 mechansim确保他们拥有所有 到了

      • 如果您可以在源代码中识别更改的或新的数据,请在源代码中使用某种更改的数据捕获功能,并且只发送增量(如果您已经这样做了,则表示歉意)

      • 压缩分块文件以减少要发送的数据大小

      支持“out”参数,该参数允许您将SQL语句的输出转储到平面文本文件中

      • 在源端:转储、压缩并将文件分割成更小的部分,然后上载
      • 在目标端:下载、解压缩并重新加入所有文件,然后进行bcp
      这不是一个优雅的解决方案。如果您想以编程方式进行,您将进行流程调用。然而,它确实完成了任务

      然而,您可能想问的问题是,围绕没有宽带连接与获得宽带连接(如果可能)的局限性,创建一个解决方案的成本效益如何。我预计,无论您选择何种解决方案,使用拨号都会遇到持续的维护问题。

      支持“out”参数,允许您将SQL语句的输出转储到平面文本文件

      • 在源端:转储、压缩并将文件分割成更小的部分,然后上载
      • 在目标端:下载、解压缩并重新加入所有文件,然后进行bcp
      这不是一个优雅的解决方案。如果您想以编程方式进行,您将进行流程调用。然而,它确实完成了任务


      然而,您可能想问的问题是,围绕没有宽带连接与获得宽带连接(如果可能)的局限性,创建一个解决方案的成本效益如何。我预计,无论您选择何种解决方案,使用拨号上网都会遇到持续的维护问题。

      您可能希望使用组合方式

      • BCP以本机格式输出表

      • 使用可生成一系列文件的工具压缩文件

      • 用ftp传输单个文件。你可以继续传输

      我发现7Zip(免费开源)具有最好的压缩,可以生成一系列指定大小的编号文件。我相信它可以从命令行运行


      Andy

      您可能需要使用组合方法

      • BCP以本机格式输出表

      • 使用可生成一系列文件的工具压缩文件

      • 用ftp传输单个文件。你可以继续传输

      我发现7Zip(免费开源)具有最好的压缩,可以生成一系列指定大小的编号文件。我相信它可以从命令行运行


      Andy

      我最后做的是用C语言创建一个小应用程序(其中一些是WINNT,这是最简单的方法,它还允许其他人在必要时手动检索数据,而无需更改源),它需要一些参数来构建我需要的查询。然后,它运行查询并以所需的CSV格式转储结果。然后它调用具有最高压缩级别的7zip来压缩尽可能小的数据(这将500MB的文件压缩到20MB左右)

      因为我必须先把数据带回来,然后才能将其FTP到n