日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python sql server 数据同步_两台SQL Server数据同步解决方案

發布時間:2025/4/16 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python sql server 数据同步_两台SQL Server数据同步解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--定時同步服務器上的數據

--例子:

--測試環境,SQL Server2000,遠程服務器名:xz,用戶名為:sa,無密碼,測試數據庫:test

--服務器上的表(查詢分析器連接到服務器上創建)

create table [user](id int primary key,number varchar(4),name varchar(10))

go

--以下在局域網(本機操作)

--本機的表,state說明:null 表示新增記錄,1 表示修改過的記錄,0 表示無變化的記錄

if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [user]

GO

create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)

go

--創建觸發器,維護state字段的值

create trigger t_state on [user]

after update

as

update [user] set state=1

from [user] a join inserted b on a.id=b.id

where a.state is not null

go

--為了方便同步處理,創建鏈接服務器到要同步的服務器

--這里的遠程服務器名為:xz(也可是ip地址),用戶名為:sa,密碼123

if exists(select 1 from master..sysservers where srvname='srv_lnk')

exec sp_dropserver 'srv_lnk','droplogins'

go

exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz'

exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','123'

go

--創建同步處理的存儲過程

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_synchro]

GO

create proc p_synchro

as

--set XACT_ABORT on

--啟動遠程服務器的MSDTC服務

--exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--啟動本機的MSDTC服務

--exec master..xp_cmdshell 'net start msdtc',no_output

--進行分布事務處理,如果表用標識列做主鍵,用下面的方法

--BEGIN DISTRIBUTED TRANSACTION

--同步刪除的數據

delete from srv_lnk.test.dbo.[user]

where id not in(select id from [user])

--同步新增的數據

insert into srv_lnk.test.dbo.[user]

select id,number,name from [user] where state is null

--同步修改的數據

update srv_lnk.test.dbo.[user] set

number=b.number,name=b.name

from srv_lnk.test.dbo.[user] a

join [user] b on a.id=b.id

where b.state=1

--同步后更新本機的標志

update [user] set state=0 where isnull(state,1)=1

--COMMIT TRAN

go

--創建作業,定時執行數據同步的存儲過程

if exists(SELECT 1 from msdb..sysjobs where name='數據處理')

EXECUTE msdb.dbo.sp_delete_job @job_name='數據處理'

exec msdb..sp_add_job @job_name='數據處理'

--創建作業步驟

declare @sql varchar(800),@dbname varchar(250)

select @sql='exec p_synchro' --數據處理的命令

,@dbname=db_name() --執行數據處理的數據庫名

exec msdb..sp_add_jobstep @job_name='數據處理',

@step_name = '數據同步',

@subsystem = 'TSQL',

@database_name=@dbname,

@command = @sql,

@retry_attempts = 5, --重試次數

@retry_interval = 5 --重試間隔

--創建調度

EXEC msdb..sp_add_jobschedule @job_name = '數據處理',

@name = '時間安排',

@freq_type = 4, --每天

@freq_interval = 1, --每天執行一次

@active_start_time = 00000 --0點執行

go

總結

以上是生活随笔為你收集整理的python sql server 数据同步_两台SQL Server数据同步解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。