首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据从Visual上传到Server超时

数据从Visual上传到Server超时
EN

Stack Overflow用户
提问于 2015-04-14 12:59:44
回答 2查看 786关注 0票数 0

我在通过vb.net向另一个Server发送使用制作的SQL转储时遇到了很大问题。我做了这样的SQL-文件:数据库/任务/脚本.

删除转储中的每个"GO“命令之后,我成功地将其上传到本地Server 2012。但是,只有当我为任何表创建了不同的脚本时,这种方法才能奏效。如果我使用一个大文件,我会得到一个超时。

现在,我想通过Internet连接将数据(50 MB)传输到另一个Server。在此服务器上只生成5个表中的3个:(

我得到以下超时错误(德文版本,对不起):

"Eine Ausnahme (erste Chance) des Typs "System.Data.SqlClient.SqlException“ist in System.Data.dll aufgetreten. Timeout abgelaufen. Das Zeitlimit wurde vor dem Beenden des Vorgangüberschritten oder System.Data.dll reagiert nicht.”

知道是哪一方使超时( vb.net)吗?是否有一种更安全的方法将大量数据上载到Server?

这是我使用的代码(Skript在My.Resources.SQLDump中):

代码语言:javascript
复制
    '####SQLDump  #######
    Dim SQLscript As String = My.Resources.SQLDump


    SQLscript = "USE [" + TextBoxDB.Text + "] " + vbCrLf + SQLscript


    Using connection As New SqlConnection(Verbind.ConStr)

        Using command As New SqlCommand()
            ' Set the connection
            command.Connection = connection

            ' Not necessary, but good practice
            command.CommandType = CommandType.Text

            ' Example query using parameters
            command.CommandText = SQLscript

            Try
                connection.Open()
                rowsAffected = command.ExecuteNonQuery()
            Catch ex As Exception

                Debug.Print(ex.Message)
            Finally
                command.Dispose()
                connection.Dispose()
            End Try
            'command.ExecuteNonQuery()
        End Using ' Dispose Command

    End Using ' Dispose (and hence Close) Connection

    MsgBox("DB-Upload 1/5 fertig!")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-14 13:49:28

是否有一种更安全的方法将大量数据上载到Server?

是的,有几种方法可以将数据加载到Server中

  1. bcp效用
  2. 大容量插入语句
  3. 开环
  4. Server导入和导出向导

注意:在64位计算机上,Integration安装Server导入和导出向导(DTSWizard.exe)的64位版本。但是,某些数据源(如Access或Excel )只有32位提供程序可用.要处理这些数据源,您可能必须安装并运行向导的32位版本。若要安装向导的32位版本,请在安装过程中选择客户端工具或Server数据工具(SSDT)。

  1. SSIS 创建SSIS包的教程

作为一名SSIS开发人员,我可以深入地演示通过使用SSIS (如

  • 大宗进口
  • 脚本任务
  • 平面文件源/ Excel源程序
  • 等等等等。但这与你提出的问题是不同的。

关于,解决您的错误,您可以在代码中设置命令超时属性,使其在任何特定的时间限制或无限制的情况下运行。

command.CommandTimeout = 1; 注意:在异步方法调用(如CommandTimeout )期间,将忽略BeginExecuteReader属性。

编辑的这里是示例代码

代码语言:javascript
复制
Using command As New SqlCommand()
        command.Connection = connection
        command.CommandType = CommandType.Text
        command.CommandText = SQLscript
        command.CommandTimeout = 1
        Try
            connection.Open()
            rowsAffected = command.ExecuteNonQuery()
        Catch ex As Exception
            Debug.Print(ex.Message)
        Finally
            command.Dispose()
            connection.Dispose()
        End Try
End Using 

其他方法是在您的连接超时中扩展连接串。它接受指示秒的整数(在下面的示例中,连接超时设置为30秒;0表示无限)

连接Timeout=30;

票数 0
EN

Stack Overflow用户

发布于 2015-04-14 13:58:32

一次导入/导出向导移动

因为您能够生成脚本,所以您可以访问源代码。因为您能够执行它们,所以您可以访问目的地,并且安装了Management。您最快的选项IMO是Server提供的导入导出实用程序。

在中,右键单击源数据库名称,单击“任务”,然后单击“导出数据”。这将打开一个向导,该向导将允许您放入源代码、目的地并选择要导出的对象。

虽然50 MB的脚本很大,但是50 MB的数据移动应该在几分钟内完成。

一次又一次地移动数据

您有几个选项,我将使用OpenRowset,特别是对于您正在移动的数据的大小。这里有一个参考https://msdn.microsoft.com/en-us/library/ms190312.aspx

如果您定期移动价值千兆字节的数据,那么SSIS包是您的最佳选择。这里有一个教程https://msdn.microsoft.com/en-us/library/ms169917.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29628010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档