我在通过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中):
'####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!")发布于 2015-04-14 13:49:28
是否有一种更安全的方法将大量数据上载到Server?
是的,有几种方法可以将数据加载到Server中
注意:在64位计算机上,Integration安装Server导入和导出向导(DTSWizard.exe)的64位版本。但是,某些数据源(如Access或Excel )只有32位提供程序可用.要处理这些数据源,您可能必须安装并运行向导的32位版本。若要安装向导的32位版本,请在安装过程中选择客户端工具或Server数据工具(SSDT)。
作为一名SSIS开发人员,我可以深入地演示通过使用SSIS (如
关于,解决您的错误,您可以在代码中设置命令超时属性,使其在任何特定的时间限制或无限制的情况下运行。
command.CommandTimeout = 1; 注意:在异步方法调用(如CommandTimeout )期间,将忽略BeginExecuteReader属性。
编辑的这里是示例代码
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;
发布于 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
https://stackoverflow.com/questions/29628010
复制相似问题