Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Oracle C在SQL Server中插入记录#_C#_Sql Server_Oracle_Ado.net_Dblink - Fatal编程技术网

C# 从Oracle C在SQL Server中插入记录#

C# 从Oracle C在SQL Server中插入记录#,c#,sql-server,oracle,ado.net,dblink,C#,Sql Server,Oracle,Ado.net,Dblink,我正在用C#开发winform应用程序,我必须从Oracle视图导入大约200000条记录并转储到SQL Server表中。我不知道如何解决这个问题,是应该使用datatable保存所有这些记录,然后将其存储在SQL server中,还是必须使用一些我不熟悉的DBlink。 如有任何建议,将不胜感激。谢谢 处理它的方式很大程度上取决于数据及其使用方式 如果动态数据经常发生变化,那么拥有一个实时链接可能会更好,尽管仍然可能存在速度问题。或者,如果它有一些更改,但不经常更改,则使用SSIS包将其重新

我正在用C#开发winform应用程序,我必须从Oracle视图导入大约200000条记录并转储到SQL Server表中。我不知道如何解决这个问题,是应该使用datatable保存所有这些记录,然后将其存储在SQL server中,还是必须使用一些我不熟悉的DBlink。
如有任何建议,将不胜感激。谢谢

处理它的方式很大程度上取决于数据及其使用方式

如果动态数据经常发生变化,那么拥有一个实时链接可能会更好,尽管仍然可能存在速度问题。或者,如果它有一些更改,但不经常更改,则使用SSIS包将其重新加载到SQL Server可能是一个不错的选择。如果拥有两个数据副本比较简单(并且数据不会改变),那么只进行一次复制可能是可以接受的

如果要制作SSIS包或通过SQL Server访问数据但将其留在Oracle中,则设置DB链接并不太困难,建议您这样做

如果您正在使用数据并每月更新数据,而不是在SQL中修改数据,那么创建SSIS任务和DB链接将是一个合理的解决方案。创建链接并确保其连接,然后使用SSIS截断SQL表,然后从Oracle重新加载它。在应用程序未使用数据的SQL副本期间运行包。创建一个作业来运行包。在截断或复制到临时位置之前,或者在加载数据出现问题时,执行某种恢复过程之前,对表进行备份可能是合理的。如下所示:

Job  
step 1   Backup table 
step 2   (if step 1 successful) Run SSIS package
                    Truncate table
                    Reload table using DB Link 
step 3   (if step 2 failure) restore from backup

打开2个连接。从一个读到另一个写。有一个Oracle.Net驱动程序。它叫ODP.NET。

我会使用使用OPENQUERY功能的链接服务器。谢谢!我们每个月需要一次Oracle提供的数据,然后在SQL server拥有该数据的应用程序中执行所有操作。我将所有记录存储在Datatable中,然后插入SQL server。但是,我还是会接受你的回答,它对我帮助很大,也可能对其他人有帮助。谢谢