云计算百科
云计算领域专业知识百科平台

SQL Server数据库同步方案,结合bcp ,sqlcmd工具实现【亲测,绝对无坑,拿来即用】

SQL Server数据库同步方案

serverA — server B —- serverC
其中serverB可以同时访问server A 和server C ,但是server A 和 server C之间不能相互访问,现需要把server A 的数据同步到server C ,非实时。

此方案结合了bcp , sqlcmd工具在server B 部署脚本,从server A导出数据,导入到server C.

说明:此方案只针对部分表的非实时同步,另外还可以考虑使用sp_addlinkedserver,sp_addlinkedsrvlogin方式实现,但是在测试中发现一个十几万的表在写入到server C 的时候特别慢。故此测试此方案,十几万的数据1分钟左右完成。

Sync_db.bat

@echo off

echo ——————————————————————–
echo ———-正在同步生产数据库数据到镜像库,请勿关闭窗口———–
echo ——————————————————————–

set bcp="D:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\bcp.exe"
set sqlcmd="D:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\SQLCMD.EXE"

REM 格式化时间
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set timevar=%time:~0,2%
set timevar=%timevar%%time:~3,2%%time:~6,2%
set fileA="D:\\DMP\\sqlserver\\ZHOUDB\\Bus_tab.txt"

REM 记录操作日志
set logfile_path="D:\\scripts\\sqlserver\\logs"
set logfile="D:\\scripts\\sqlserver\\logs\\SyncZHOUDB_%datevar%%timevar%.log"

call :LOG > %logfile%
exit /B

:LOG
echo ————————————————————–
echo —————- 记录操作日志——— ———————–
echo ————————————————————–
set /a startS=%time:~6,2%
set /a startM=%time:~3,2%
echo Start_Time %time%

echo 1.从生产10.128.23.6导出数据
bcp ZHOUDB.dbo.Bus_tab out D:\\DMP\\sqlserver\\ZHOUDB\\Bus_tab.txt -c -t "," -r "\\n" -S"192.168.1.1,1433" -U"chakan" -P"chakan@123"

echo 2.清空镜像库10.128.103.78表数据否则出现唯一键冲突,并退出sqlcmd
sqlcmd -S tcp:10.128.103.78,1433 -d ZHOUDB_SS -U sa -P "Sjzt$db_2023" -i D:\\scripts\\sqlserver\\ZHOUDB.sql

echo 3.导入数据
bcp ZHOUDB_SS.dbo.Bus_tab in D:\\DMP\\sqlserver\\ZHOUDB\\Bus_tab.txt -c -t "," -r "\\n" -S"192.168.1.2,1433" -U"sa" -P"chakan@123"

echo 4.删除备份文件
del "%fileA%"

if %ERRORLEVEL% neq 0 (
echo 删除操作执行失败,错误代码: %ERRORLEVEL%
goto :end
)

if exist "%fileA%" (
echo 文件删除失败: %fileA%
) else (
echo 文件已成功删除: %fileA%
)

echo.
set /a endS=%time:~6,2%
set /a endM=%time:~3,2%
echo End_Time %time%
set /a diffS_=%endS%-%startS%
set /a diffM_=%endM%-%startM%
echo.
echo.
echo Cost_Time %diffM_% Min %diffS_% Second
echo.
echo.
:end
echo ——————-END———————-

```

赞(0)
未经允许不得转载:网硕互联帮助中心 » SQL Server数据库同步方案,结合bcp ,sqlcmd工具实现【亲测,绝对无坑,拿来即用】
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!