数据库工作笔记15---Sqlserver2005中的DTS_以及DTS升级成Sqlserver2016的思路

版权声明:本文为博主原创文章,未经博主credreamer 允许不得转载 违者追究法律责任。 https://blog.csdn.net/lidew521/article/details/87548039

   JAVA技术交流QQ群:170933152  

这个项目之前啊,用的是sqlserver2005,里面有DTS,说白了就是做数据转换用的,比如可以以把oracle里的数据,或者其他什么地方的导入到sqlserver中去,但是这个DTS,在sqlserver2016中就不支持, 如果你安装了,management studio, 你会发现2005的里面还有个DTS,在2016里面没有了, 解决思路是这样的

我们可以编写exe,用visual studio2016,编写的exe,是控制台程序,不要写带有form窗口的,在sqlserver中执行,带有窗口的程序是跑不了的,会出现这样的情况,在任务管理器中能看到,但是就是看不到窗口,也就是sqlserver2016的job不支持,显示窗口

好,首先

1。把旧的dts文件导入到sqlserver2005中,这样做

     打开sqlserver management studio,然后找到管理,找到数据转换服务,这个在管理下面的最后一个菜单,右键就可以打开了,不过得一个一个打开麻烦,打开后可以运行这个dts,也可以指定查看他的参数,就在打开的设计器窗口中选择详细属性就行

2.sqlserver2005 可以实现,定时任务,在sqlserver2005 management studio的最后一个菜单 sqlserver agent里面,有个job菜单,有个定时任务,可以新建任务,还可以,当任务有错的时候,配置一下发送邮件,这里的这个任务可以指定让他执行dts文件,也可以指定让他执行一个exe文件

   执行dts可以这样,DTSRun /S 计算机名 /N “test.dts” /E

   也可以写个sql,一执行,就可以自己生成job文件了,也可以手动的新建添加定时任务,添加的时候种类选择cmdexec,添加的时候命令就根据要执行exe,还是DTS,自己写就可以了 ,这个网上也有可以复制

3.然后编写exe,应用visual studio2017 ,编写一个控制台程序,里面做数据的查询,等等,完成用dts完成的工作

4。然后打开sqlserver 2016 management studio,打开后找到最后一个sqlserver agent代理服务,这个菜单,添加job

     添加的时候,网上都有教程,

     添加job的时候,第二步添加步骤的时候,执行这个命令,

    exec master..xp_cmdshell 'd:/aa.exe' 这样就行了

-------------------------

这里如果使用xm_cmdshell需要,先开启它,开启的方式其实就是执行下面的sql,看看就明白了

SQL Server blocked access to procedure 'sys.xp_cmdshell' ...

2008年09月26日 09:43:00  阅读数:1898

sa帐户下运行下列命令,即可解决题目中的SQLServer错误

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

这样开启

-------下面是网上的另一个开启方法-----

SELECT * FROM sys.configurations WHERE name='xp_cmdshell' OR name='show advanced options'
GO

SQL 中常用存储过程xp_cmdshell运行cmd命令

目的:

使用SQL语句,在D盘创建一个文件夹myfile

首先查询系统配置

SELECT * FROM sys.configurations WHERE name='xp_cmdshell' OR name='show advanced options'
GO

可以看到他们的值为0,无法配置

打开系统配置:

USE master
GO
RECONFIGURE --先执行一次刷新,处理上次的配置
GO
EXEC sp_configure 'show advanced options',1 --启用xp_cmdshell的高级配置
GO
RECONFIGURE --刷新配置
GO
EXEC sp_configure 'xp_cmdshell',1  --打开xp_cmdshell,可以调用SQL系统之外的命令
GO
RECONFIGURE
GO
--使用xp_cmdshell在D盘创建一个myfile 文件夹
EXEC xp_cmdshell 'mkdir d:\myfile',no_output --[no_output]表示是否输出信息
GO

 可以看到在D盘创建了一个myfile 文件夹

执行第一句查看配置:

关闭系统配置:

--关闭
EXEC sp_configure 'show advanced options','1' --确保show advances options 的值为1,这样才可以执行xp_cmdshell为0的操作
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell',0 --关闭xp_cmdshell
GO
RECONFIGURE
GO
EXEC sp_configure 'show advanced options','0' --关闭show advanced options
GO
RECONFIGURE
GO

执行第一句:

-----------------

这里把创建job的语句帖上:

下面这个语句可以创建sqlserver 中的job,写完,直接sqlserver一执行,job就创建出来了

我做了一个EXE文件,想在SQL Server上定时执行这个EXE文件,如何实现

2009年04月21日 10:17:00 shaily 阅读数:1434

exec   master..xp_cmdshell   'c:/aa.exe'

如果是定期处理:   
  --创建作业   
  exec   msdb..sp_add_job   @job_name='数据处理'   
    
  --创建作业步骤   
  declare   @sql   varchar(800),@dbname   varchar(250)   
  select   @sql='exec   master..xp_cmdshell   ''c:/aa.exe'''     --数据处理的命令   
  ,@dbname=db_name() --执行数据处理的数据库名 
    
  exec   msdb..sp_add_jobstep   @job_name='数据处理',   
  @step_name   =   '数据同步',   
  @subsystem   =   'TSQL',   
  @database_name=@dbname,   //换成自己的sa吧应该是
  @command   =   @sql,   
  @retry_attempts   =   5,   --重试次数   
  @retry_interval   =   5     --重试间隔   
    
  --创建调度   
  EXEC   msdb..sp_add_jobschedule   @job_name   =   '数据处理',     
  @name   =   '时间安排',   
  @freq_type=4,   --4   每天,8   每周,16   每月   
  @freq_interval=1, --作业执行的天数   
  @freq_subday_type=0, --是否重复执行,0x1   在指定的时间,   0x4   分钟,   0x8   小时     
  @freq_subday_interval=1,   --重复周期   
  @freq_recurrence_factor=0, --重复执行,则设置为1,否则设置为0   
  @active_start_time   =   00000 --0点开始执行   
    
  --   添加目标服务器   
  EXEC   msdb.dbo.sp_add_jobserver     
  @job_name   =   '数据处理'   ,   
  @server_name   =   N'(local)'

猜你喜欢

转载自blog.csdn.net/lidew521/article/details/87548039
DTS