SSIS数据同步实践
背景
测试环境
测试步骤





DECLARE @TableNames AS TABLE
(
id INT IDENTITY(1, 1),
tableName VARCHAR(100)
); DECLARE @sTableDiff NVARCHAR(1000);
DECLARE @tableName VARCHAR(100);
DECLARE @counter INT;
DECLARE @maxCount INT; INSERT INTO @TableNames
SELECT a.name
FROM sys.sysobjects a
INNER JOIN
(
SELECT object_id
FROM sys.columns
WHERE is_rowguidcol = 1
OR is_identity = 1
UNION
SELECT object_id
FROM sys.indexes
WHERE index_id = 1
) b
ON a.id = b.object_id
WHERE a.type = 'U' --and a.name='TMonStoreCheck'; SET @counter = 1; SELECT @maxCount = COUNT(name)
FROM sys.sysobjects a
INNER JOIN
(
SELECT object_id
FROM sys.columns
WHERE is_rowguidcol = 1
OR is_identity = 1
UNION
SELECT object_id
FROM sys.indexes
WHERE index_id = 1
) b
ON a.id = b.object_id
WHERE a.type = 'U' --and a.name='TMonStoreCheck'; WHILE @counter <= @maxCount
BEGIN
SELECT @tableName = tableName
FROM @TableNames
WHERE id = @counter;
SELECT @sTableDiff = ''; SET @sTableDiff
= ' "C:\Program Files\Microsoft SQL Server\130\COM\tablediff.exe" -sourceserver [faqb6n86e4.database.chinacloudapi.cn] -sourceuser ymjj -sourcepassword ***** -sourcedatabase xw_dl_1009676_01 -sourcetable ' + @tableName + ' -destinationserver [butt-joint] -destinationuser sa -destinationpassword ****** -destinationdatabase xw_dl_1009676_01 -destinationtable '+@tableName+' -f F:\4_9\test\'+@tableName EXEC master..XP_CMDSHELL @sTableDiff
SET @counter = @counter + 1;
END;




declare @temp nvarchar(200)
select @temp ='"F:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\sqlcmd.exe" -a 32576 -S butt-joint -d xw_dl_1009676_01 -i F:\4_9\test\'+ ? +' -f 65001'
EXEC master..xp_cmdshell @temp
- 可能需要安装NET Framework 3.5, 否则sqlcmd无法正常执行;
- sqlcmd 的前期测试,为了方便问题定位可以使用 -o 选项把错误信息打印出文本;
- sqlcmd 后面切记加 -f 65001,避免中文在数据库中插入后,select显示乱码的情形;
- 当插入的脚本文件非常大比如超100M+的时候建议加上-a选项,并保障内存富裕;






- SQL Server Integration Services 服务是否已正常启动;










结论
- 上述是一个简单的SSIS数据同步实践,不同的业务需求的业务逻辑都可在3)中自定义;
- sqlcmd执行可能需要安装NET Framework 3.5, 否则sqlcmd无法正常执行;
- sqlcmd 的前期测试,为了方便问题定位可以使用 -o 选项把错误信息打印出文本;
- sqlcmd 后面建议加 -f 65001,避免中文在数据库中插入后,select原本是中文而显示乱码的情形;
- 确保部署的机器上SQL Server Integration Services 服务已安装并且正常启动;
- 确保SQL Server Agent 服务已正常启动;
- 在配置包的JOB的时候注意提前新建SSIS的代理,否则会有执行权限相关的问题;
- 当生成的执行脚本文件比较大的时候(比如超100M或更大),sqlcmd会报如下错误,建议在sqlcmd 加上 -a 选项,并保障执行sqlcmd的服务器有足够富裕的内存 ;
Shared Memory Provider: No process is on the other end of the pipe.
Communication link failure ---or
Msg 701, Level 17, State 139, Server *******, Line -5057
资源池“default”没有足够的系统内存来运行此查询。
后记

exec master..xp_cmdshell '"F:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\bcp.exe" test.dbo.TCirOrder in F:\TCirOrder.sql -E -n -C RAW -b 1000 -a 4096 -q -S butt-joint -T'
NULL
Starting copy...
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]String data, right truncation
NULL
BCP copy in failed
NULL
SSIS数据同步实践的更多相关文章
- 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原
一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...
- 基于MySQL Binlog的Elasticsearch数据同步实践
一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...
- SSIS 学习之旅 数据同步
这一章 别人也有写过但是我觉得还是写写比较好.数据同步其实就是想仿照 数据库的发布订阅功能 第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上) 第二章:SSIS 学习之旅 第一个SSIS 示 ...
- 美团DB数据同步到数据仓库的架构与实践
背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...
- DB 数据同步到数据仓库的架构与实践
背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...
- 大数据实践-数据同步篇tungsten-relicator(mysql->mongo)
// mongo)";digg_bgcolor = "#FFFFFF";digg_skin = "normal"; // ]]> // [导读] ...
- ElasticStack系列之十一 & 同步 mysql 数据的实践与思考
问题 1. jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常 jdbc 源一端的数据库可能会做数据库删除或者更新操作.这样一来数据库与搜索引 ...
- MongoDB DBA 实践5-----复制集集群的数据同步和故障转移
(1)复制集集群的数据同步 1>主节点数据库test,在其中goods集合中加入一个文档. 2>在副节点中查看 注意:SECONDARY是不允许读写的,要使用rs.slaveOk()获得读 ...
- 阿里Canal框架(数据同步中间件)初步实践
最近在工作中需要处理一些大数据量同步的场景,正好运用到了canal这款数据库中间件,因此特意花了点时间来进行该中间件的的学习和总结. 背景介绍 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存 ...
随机推荐
- linux下搭建redis内网端口映射工具-rinetd
最近在工作中使用到了redis缓存,用来提某些业务场景的计算速度和某些情况下的操作频率限制,客户端工具使用了redisDesktopmanager来管理,在本机操作测试的时候,是没有问题的.但是将系统 ...
- 4.caffe资源汇总(更新中)
学习需要更新,网上有一些非常不错博客. 感谢这些博主,他们都很认真. 00.tornadomeet 0.denny的学习专栏 1.xizero00 2.lingerlanlan 3.iamzhangz ...
- HashMap 和 Hashtable 有什么区别?(未完成)
HashMap 和 Hashtable 有什么区别?(未完成)
- webpack Uncaught ReferenceError: Swiper is not defined
一.报错原因:Swiper的JS文件没有加载成功,或者说swiper丢失了依赖(正常操作是:加载后再初始化Swiper) 二.解决方法:在初始化 Swiper 的js文件中导入 Swiper impo ...
- JDK、JRE、JVM的区别与关系
JDK JDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品. JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里 ...
- python--ctypes模块:调用C函数
Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件 Windows 系统下的 C 标 ...
- jmeter-post请求自动变成get,提示请求方式错误,修改协议即可
修改协议: http 改为 https 或反之
- 路由器配置——路由重分布1(rip)
一.实验目的:使用路由重分布达到全网互通 二.拓扑图: 三.具体实验步骤配置 先给各个主机配置ip地址和网关以PC1为例: (1)R1路由器配置 Router>enable --进入特权模式R ...
- 【luoguP2158】 [SDOI2008]仪仗队
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- 图论小专题B
2 树 2.1 树的定义 一个只有\(N-1\)条边,且任意两个点连通的图叫做树.通过这样定义的树往往是一棵无根树,而我们通常会任意选定一个根节点使其变成有根树.有根树可以定义"父亲和儿子& ...