Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql server SQL 2014-用于将数据从SQL Server复制到具有相同表结构的SQL Server的SSI或存储过程_Sql Server_Ssis - Fatal编程技术网

Sql server SQL 2014-用于将数据从SQL Server复制到具有相同表结构的SQL Server的SSI或存储过程

Sql server SQL 2014-用于将数据从SQL Server复制到具有相同表结构的SQL Server的SSI或存储过程,sql-server,ssis,Sql Server,Ssis,我们有一个SSIS项目,用于将数据从CSV加载到SQL Server上的暂存区域(DB_Stage) 暂存的主要目的是准备好数据,以便移动到生产数据库(DB_Prod),并在过程中标记数据或文件中的任何错误 DB_Stage是通过从DB_Prod获取create table脚本创建的,因此两个数据库中的表结构是相同的。一旦加载到DB_阶段成功,则需要将数据移动到DB_Prod 我正在考虑为DB_Stage中的每个表创建一个存储过程,以便将数据推送到DB_Prod,因为不需要转换,而且认为SQL到

我们有一个SSIS项目,用于将数据从CSV加载到SQL Server上的暂存区域(DB_Stage)

暂存的主要目的是准备好数据,以便移动到生产数据库(DB_Prod),并在过程中标记数据或文件中的任何错误

DB_Stage是通过从DB_Prod获取create table脚本创建的,因此两个数据库中的表结构是相同的。一旦加载到DB_阶段成功,则需要将数据移动到DB_Prod

我正在考虑为DB_Stage中的每个表创建一个存储过程,以便将数据推送到DB_Prod,因为不需要转换,而且认为SQL到SQL的转换更快。然而,我读到一些文章说SSIS具有并行处理的能力,并且加载速度会快得多。但我没有完全理解

我可以创建另一组SSIS包,以便使用Biml在短时间内将数据从阶段移动到产品。但我需要一些建议,哪种方法是最好的。我的场景中的存储过程或SSIS包

如果我使用SSIS包,一个优点是我可以配置目标数据库,因此阶段数据可以加载到任何服务器/数据库(这是我们的要求)

如果我使用存储过程,我找不到一种方法来参数化目标数据库。看来我必须这样硬编码

插入产品数据库表1(列列表) 从DB_Stage.dbo.table1中选择(列列表)


任何帮助都将不胜感激。

正如您所提到的,在开发人员和产品环境之间没有任何转换可供使用。我建议您使用SSI而不是存储过程。SSIS将考虑这是一个同步任务,并将尽快开始传送记录。SSI可以利用缓冲管线,您可以控制并实现并行性

在这种情况下,我建议在使用SSI时进行一些设置:

  • 避免目标上的表锁
  • 调整最大行数和最大行提交大小
  • 如果您计划一次传输多个表的数据,则相应地设置最大线程和缓冲区

我敢肯定,通过使用SSIS而不是TSQL,您将看到性能的提高。

正如您所提到的,在开发环境和产品环境之间没有任何转换可供使用。我建议您使用SSI而不是存储过程。SSIS将考虑这是一个同步任务,并将尽快开始传送记录。SSI可以利用缓冲管线,您可以控制并实现并行性

在这种情况下,我建议在使用SSI时进行一些设置:

  • 避免目标上的表锁
  • 调整最大行数和最大行提交大小
  • 如果您计划一次传输多个表的数据,则相应地设置最大线程和缓冲区

我敢肯定,在这里使用SSIS而不是TSQL会提高性能。

正如您所提到的,有两种方法可以将数据从一台服务器复制到另一台服务器。让我们一个接一个地看一遍

存储过程: 您必须首先使用在Prod服务器和登台服务器之间创建链接服务器连接。这将允许您使用4部分命名从暂存服务器(如[ProdServer].[ProdDB].[dbo].[Table1]中引用表 在这里,您可以使用所谓的“”。在这种特殊的查询中,我们可以将SQL查询的某些值指定为varchar变量,然后执行查询。
基本上,您将编写一个查询,如下所示:

'INSERT INTO [' + @ProdServer + '].[' + @ProdDB +'].[dbo].[Table1] (col list)
SELECT (col list) FROM [DB_Stage].[dbo].[table1]'
在这里,nvarchar字符串的条件是4000个字符,varchar字符串的条件是8000个字符

SSIS:

正如您所提到的,SSIS允许您并行化从登台服务器到Prod服务器的数据流。正如所解释的,这些方法非常简单。但是,如果表太大,我建议您使用,这是对并行数据流的优化。

如您所述,有两种方法可以将数据从一台服务器复制到另一台服务器。让我们一个接一个地看一遍

存储过程: 您必须首先使用在Prod服务器和登台服务器之间创建链接服务器连接。这将允许您使用4部分命名从暂存服务器(如[ProdServer].[ProdDB].[dbo].[Table1]中引用表 在这里,您可以使用所谓的“”。在这种特殊的查询中,我们可以将SQL查询的某些值指定为varchar变量,然后执行查询。
基本上,您将编写一个查询,如下所示:

'INSERT INTO [' + @ProdServer + '].[' + @ProdDB +'].[dbo].[Table1] (col list)
SELECT (col list) FROM [DB_Stage].[dbo].[table1]'
在这里,nvarchar字符串的条件是4000个字符,varchar字符串的条件是8000个字符

SSIS:

正如您所提到的,SSIS允许您并行化从登台服务器到Prod服务器的数据流。正如所解释的,这些方法非常简单。但是,如果表太大,我建议您使用,这是对并行数据流的优化。

最好的方法是使用现有的硬编码第三方工具进行架构/数据比较和同步。您的问题是什么?我的问题是:在没有转换、SSI或TSQL存储过程的情况下,将数据从SQL复制到具有相同表结构的SQL的最佳方法。我有150个表和数据,从几百行到几百万行不等。最好的方法是使用现有的硬编码第三方工具进行模式/数据比较和同步。您有什么问题?我的问题是:在没有转换、SSI或TSQL存储过程的情况下,将数据从SQL复制到具有相同表结构的SQL的最佳方法。我有150个表格和数据,从几百行到几百万行不等。Anuj,谢谢你的回复。现在,在TSQL上使用SSIS对我来说更有意义。我将有150个包一个ea