作业运用的一点心得体会

      前段时间做了一个同步数据库的功能,把SQL   SERVER  2000的数据同步到ACCESS中去。我首先想到的是在  SQL   SERVER 2000中建立一个作业,定时一分钟同步一次。但是,在实际运行中,作业和其它的数据库操作有时会有冲突,另外,因为作业一直在运行,占用了CPU资源,影响效率。于是,我想了想通过其它的方式实现同步
应该会好些,当数据有变化时才同步,可以通过触发器同步或者是在前端增删改数据时同步。
以下是作业的脚本,在此记录一下。

--建立和闸机的Access数据库的映射
exec   master..xp_cmdshell   'net   use   X:   //10.21.106.222/db   ""   /user:10.21.106.222/administrator'  
--以下为昨业的脚本
--2008-3-21/16:42 上生成的脚本
--由: WWW-DONG/Administrator
--服务器: (LOCAL)

BEGIN TRANSACTION           
  DECLARE @JobID BINARY(16) 
  DECLARE @ReturnCode INT   
  SELECT @ReturnCode = 0    
  IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'Database Maintenance') < 1
  EXECUTE msdb.dbo.sp_add_category @name = N'Database Maintenance'

  --删除同名的警报(如果有的话)。
  SELECT @JobID = job_id    
  FROM   msdb.dbo.sysjobs   
  WHERE (name = N'BackUpTOSecondDb')      
  IF (@JobID IS NOT NULL)   
  BEGIN 
  -- 检查此作业是否为多重服务器作业 
  IF (EXISTS (SELECT  *
              FROM    msdb.dbo.sysjobservers
              WHERE   (job_id = @JobID) AND (server_id <> 0)))
  BEGIN
    --已经存在,因而终止脚本
    RAISERROR (N'无法导入作业“BackUpTOSecondDb”,因为已经有相同名称的多重服务器作业。', 16, 1)
    GOTO QuitWithRollback 
  END
  ELSE
    --删除[本地]作业
    EXECUTE msdb.dbo.sp_delete_job @job_name = N'BackUpTOSecondDb'
    SELECT @JobID = NULL
  END

BEGIN

  --添加作业
  EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'BackUpTOSecondDb', @owner_login_name = N'sa', @description = N'备份数据到第二个数据库', @category_name = N'Database Maintenance', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

  --添加作业步骤
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'One', @command = N'Exec  dbo.BackSQLDb', @database_name = N'macao', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1

  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

  --添加作业调度
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'Two', @enabled = 1, @freq_type = 4, @active_start_date = 20080318, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 1, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

  --添加目标服务器
  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'
  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END
COMMIT TRANSACTION         
GOTO   EndSave             
QuitWithRollback:
  IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:


同步存储过程
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO







ALTER        PROCEDURE dbo.BackSQLDb AS
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON

--exec   master..xp_cmdshell   'net   use   X:   /delete'
--exec   master..xp_cmdshell   'net   use   X:   //10.21.106.222/db   ""   /user:10.21.106.222/administrator'  

--旅客基本资料表
DELETE FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',passenger)
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',passenger) select birthday,cname,code,country,ename,finger1,finger2,irface,isnull(isneedvehicle,0),manualtime,p_period,photo,s_period,sec_code,sex,type,vlface  from passenger

--旅客过关记录表
DELETE FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',passrecord)
insert into openrowset('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',passrecord) select isnull(autopass,0),chklevel,opercode,passcode,passdate,passtime from passrecord

--旅客查控资料表(黑名单)
DELETE FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',checkinfo)
insert into openrowset('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',checkinfo) select chklevel,memo,passcode from checkinfo
--select * from checkinfo
--select * from OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',checkinfo)


--系统用户表
DELETE FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',sysuser)
insert into openrowset('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',sysuser) select alarmright,passwd,systemright,username from sysuser
--select * from sysuser
--select * from OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',sysuser)

--用户登录记录表
DELETE FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',loginrec)
insert into openrowset('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',loginrec) select logdate,login,logip,logname,logtime from loginrec
--select * from openrowset('Microsoft.Jet.OLEDB.4.0','X:/mydb.mdb';'Admin';'',loginrec)







GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

  点击这里给我发消息
实验目的 综合运用基于android平台的智能移动终端软件开发技术。 实验内容 设计实现一个智能移动终端软件应用,至少包含3个相互关联的应用功能,具有较好的用户界面和实际的应用价值以及合理的功能模块结构。 设计方案 实现一个日记本。分为登录界面、日记列表界面、日记内容界面、日记查找界面、日记新建界面。使用SQLiteDatabase数据库存储日记内容。 首先要有一个LoginActivity,输入密码,点击按钮,判断密码是否正确后,用intent跳转到MainActivity。 MainActivity主要包括activity_main里列表的关联,实现点击列表时跳转到show_content_diary日记内容界面,启动ShowContentDiary活动。同时,MainActivity还实现了菜单的初始化,使用上下文菜单,包括搜索和新建功能。MainActivity里还有Set_refresh_data函数,用于初始化和删除日记之后刷新列表。 Note是一个日记信息类,类似于结构体。里面有set和get方法。 NoteAdapter类继承了ArrayAdapter,相当于是Note数组对象的适配器,用来包装Note数据,很好地实现数据和界面分离。 AddNewDiary这个类用于新建一则日记,使用add_new_diary.xml界面,这里没有实现图片添加功能,只是用Toast说明,除此之外,会自动写好时间、日期,只需要添加标题和内容即可。 要创建一个数据库的帮助类,这样使用SQLiteDatabase就方便了。这和sql查询语言类似,创建、查询、删除……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanhongbin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值