zoukankan      html  css  js  c++  java
  • 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. 成功

     

     

  • 相关阅读:
    Java 几个权限关键字
    Java变量的定义
    Hibernate反射DAO模式
    BroadcastReceiver与Notification的综合应用自定义Action的调用方式
    SEO优化技术之关键字
    中软国际助力四所高校建设国家级大学生校外实践教育基地
    讲师团队的培养
    IT与学习
    程序员,你的粮草何在?
    如何更好的学好Linux操作系统
  • 原文地址:https://www.cnblogs.com/BabyRui/p/11971988.html
Copyright © 2011-2022 走看看