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. 成功

 

 

 

 

 

 

 

 

 

 

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