鏈接其他服務器,在本sqlserver 中創建作業執行 作業自動同步數據
exec sp_addlinkedserver
@server='wxmjDB', --鏈接服務器別名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.88.111' --要訪問的的數據庫所在的服務器的ip
GO
EXEC sp_addlinkedsrvlogin
'wxmjDB', --鏈接服務器別名
'false',
NULL,
'sa', --要訪問的數據庫的用戶
'sa' --要訪問的數據庫,用戶的密碼
--查詢
1.select * from wxmjDB.數據庫名.dbo.表名
2.select * from wxmjDB.SKEP_DAS.dbo.DAS_ChangeStaff
--新增
1.insert openrowset( 'SQLOLEDB', 'sql服務器名'; '用戶名'; '密碼',數據庫名.dbo.表名)
2.insert into wxmjDB.SKEP_DAS.dbo.DAS_ChangeStaff(staffID,StaffDisplayName,TenantID,StaffUserField8,StaffUserField9,
StaffUserField10,StaffUserField11,StaffState) select stuNum,stuName,'測試',buildingId,roomId,buildingName,roomName,0 from View_LivingMjdj
where not exists(select staffID from wxmjDB.SKEP_DAS.dbo.DAS_ChangeStaff where staffID=stuNum);
--更新
1.update b set b.列A=a.列A
from openrowset( 'SQLOLEDB', 'sql服務器名'; '用戶名'; '密碼',數據庫名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
2.update das set
StaffUserField8=v.buildingId,
StaffUserField9=v.roomId,
StaffUserField10=v.buildingName,
StaffUserField11=v.roomName,
staffstate=v.statusCode from wxmjDB.SKEP_DAS.dbo.DAS_ChangeStaff das
inner join View_LivingMjdj as v on ( das.staffID=v.stuNum )
where (das.StaffUserField8<>v.buildingId or das.StaffUserField9<>v.roomId or
das.StaffUserField10<>v.buildingName or das.StaffUserField11<>v.roomName or das.staffstate<>v.statusCode )
--創建作業
--腳本創建作業
use master
GO
--定義創建作業
DECLARE @jobid uniqueidentifier, @jobname sysname
SET @jobname = N'測試162'
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name=@jobname)
EXEC msdb.dbo.sp_delete_job @job_name=@jobname
EXEC msdb.dbo.sp_add_job
@job_name = @jobname,
@job_id = @jobid OUTPUT
--定義作業步驟
DECLARE @sql nvarchar(4000),@dbname sysname
SELECT @dbname=DB_NAME(), --作業步驟在當前數據庫中執行
@sql=N'--作業步驟內容' --一般定義的是使用TSQL處理的作業,這里定義要執行的Transact-SQL語句
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'步驟一',
@subsystem = 'TSQL', --步驟的類型,一般為TSQL
@database_name=@dbname,
@command = @sql
--創建調度(使用后面專門定義的幾種作業調度模板)
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'第一個調度',
@freq_type=8, --執行的頻率 周
@freq_interval=4, --在星期二執行
@freq_subday_type=0x8, --重復方式,0x1=在指定的時間,0x4=多少分鍾,0x8=多少小時執行一次。0x1和@active_start_time一起使用,@active_start_time指定開始執行的時間,代表在@freq_type指定的頻率間隔內只執行一次
--若是0x4或0x8,只要指定@freq_subday_interval, @freq_subday_interval代表每多少分鍾(當@freq_subday_type=0x4)或小時(當@freq_subday_type=0x8)執行的次數
@freq_subday_interval=2, --重復周期數,這里每小時執行一次
@active_start_date = NULL, --作業執行的開始日期,為NULL時表示當前日期,格式為YYYYMMDD
@active_end_date = 99991231, --作業執行的停止日期,默認為99991231,格式為YYYYMMDD
@active_start_time = 020000, --作業執行的開始時間,格式為HHMMSS
@active_end_time = 030000, --作業執行的停止時間,格式為HHMMSS
@freq_recurrence_factor = 2 --執行間隔 兩周
--手動創建作業
1.點開 SQL Server 代理,作業右鍵 新建作業
2.點擊步驟 選擇要執行作業的數據庫 命令里面執行存儲過程
3.設置想何時執行的存儲過程
4. 成功