SQL Server跨服務器查詢、新增、更新數據

鏈接其他服務器,在本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. 成功

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章