第十五讲 自动管理与数据交换  
 
15.1 SQL Server 代理

   SQL Server代理是用于自动执行管理任务服务,它能周期性地自动执行某些任务,并且把执行情况及时通知数据库管理员或者指定的操作员。
   利用SQL Server代理的功能,管理人员不需要手工和连续监控数据库系统的日常处理,以便有更多精力解决更为困难的问题。
   启动和停止 SQL Server 代理服务:
   √ 使用【服务管理器】;
   √ 使用【企业管理器】。
  
   一、使用【服务管理器】管理 SQL Server代理
   【服务管理器】能够方便地启动和停止SQL Server代理服务。
   具体操作步骤如下:在Windows中,单击【开始→所有程序→Microsoft SQL Server→服务管理器】菜单项,弹出【服务管理器】对话框,如下图所示。
  
   在【服务】下拉列表中选中“SQL Server Agent”,然后单击按钮,则开始启动SQL Server代理服务。如果要停止SQL Server代理的运行,则需要单击按钮,则停止SQL Server代理的服务。
  
   二、使用【企业管理器】管理 SQL Server代理
   使用【企业管理器】能够启动、停止SQL Server代理。
   具体操作步骤如下:在【企业管理器】中,展开【SQL Server组→DBSERVER(Windows NT)→管理→SQL Server代理】,右击鼠标,从弹出菜单中选中【启动】菜单项,则可以启动SQL Server代理。
   当启动SQL Server代理之后,在【企业管理器】中也可以停止SQL Server代理,同样选中【SQL Server代理】,右击鼠标,从弹出菜单中选择【停止】,则可以停止正在运行的SQL Server代理。

15.2 作业管理

   这里主要学习下列内容:
   √ 作业;
   √ 操作员;
   √ 警报。
  
   一、作业定义
   作业是一个只需要定义一次、但可以多次执行的管理任务。作业可以由SQL语句、操作系统命令、可执行程序或者Active脚本组成。
   作业有三种执行方式:
   √ 手工执行;
   √ 周期性自动执行;
   √ 发出警报时执行。
   建立作业的方式:
   √ 使用【创建作业向导】;
   √ 使用【企业管理器】;
   √ SQL 语句。
  
   二、使用【创建作业向导】能够建立反复执行的作业
   例如,要创建的作业要求如下:
   √ 建立用于测试作业的表。首先我们在“学生信息数据库”中建立一张“测试作业表”,它包括两个列,分别记录次数和当时插入数据的操作时间,具体SQL语句如下:
   create table 测试作业表(
   记录次数 int IDENTITY (1, 1) NOT NULL ,
   操作时间 datetime NOT NULL )
   √ 使用【创建作业向导】建立每隔1分钟往指定表中插入一行数据的作业。具体操作如下:
   ■ 在【企业管理器】中,展开【SQL Server组→DBSERVER(Windows NT)”,单击工具条中按钮,弹出【选择向导】对话框,选中【管理→创建作业向导】菜单项,单击【确定】按钮,弹出【欢迎使用创建作业向导】对话框。
   ■ 单击【下一步】按钮,弹出【选择作业命令类型】对话框,这里列出了三种作业可以执行的命令:SQL语句、操作系统命令和动态脚本。由于我们通过前面的学习,比较熟悉SQL语句,所以选中【Transact-SQL命令】选项。单击【下一步】按钮,弹出【输入Transact-SQL语句】对话框,如下图所示。
  
   ■ 在【数据库名称】下拉式列表中选中“学生信息数据库”,在【Transact-SQL语句】输入框中输入下列INSERT语句:
   insert into 测试作业表(操作时间)values(CURRENT_TIMESTAMP)
   ■ 单击【确定】按钮,回到【输入Transact-SQL语句】对话框,单击【下一步】按钮,弹出【指定作业调度】对话框,如下图所示。
  
   ■ 选中【反复运行】选项,单击【调度】按钮,弹出【编辑反复出现的作业调度】对话框,如下图所示。
  
   ■ 在这个对话框中设置【发生频率】为“每天”,【每日频率】为“发生周期为每分钟”,【持续时间】为从2006年9月10日至永远。
   ■ 设置完成之后,单击【确定】按钮,回到【指定作业调度】对话框,单击【下一步】按钮,弹出【作业通知】对话框,在指定时间执行作业有两种情况:一种是执行成功,另一种是执行不成功。
   ■ 为了及时通知相关人员关于作业的执行情况,这里可以设置【网络发送】、【电子邮件】内容来及时通知相关人员。这里我们可以不作任何设置,单击【下一步】按钮,弹出【正在完成创建作业向导】对话框,单击【完成】按钮,开始创建作业。
   √ 测试作业的执行情况。
   首先一定要启动SQL Server Agent服务,否则无法执行所创建的作业。
   在【查询分析器】中每隔1分钟查询“学生信息数据库”的“测试作业表”内容,使用下列SQL语句:
   select * from 测试作业表
  
   三、使用【企业管理器】创建作业
   使用【企业管理器】能够启动、停止、禁用、编辑、查看作业。
   例如,使用【企业管理器】创建一个作业,要求如下:作业内容:备份数据库“学生信息数据库”;执行时间:每天晚上11:00;记录信息:在 Windows 应用程序事务日志中和输出文件中记录作业执行情况(成功或失败)的信息。
   具体操作步骤如下:
   √ 在【企业管理器】中,展开【SQL Server组→DBSERVER(Windows NT)→管理→SQL Server代理→作业”,右击鼠标,从弹出菜单中选择【新建作业】,弹出【新建作业属性】对话框,如下图所示。
  
   √ 选择【常规】选项卡,【名称】输入框输入“学生信息数据库备份作业”。选中作业的【启用】选项,在【所有者】中输入sa,在【描述】中输入如下注释信息:“每天晚上11点备份学生信息数据库的作业”。
   √ 选中【步骤】选项卡,单击【新建】按钮,弹出【新建步骤属性-DBSERVER】对话框,如下图所示。
  
   √ 在【步骤名】中输入:备份学生信息数据库,在【类型】选择SQL语句脚本,在【数据库】中选择“学生信息数据库”,在【命令】栏中输入下列SQL语句:
   backup database 学生信息数据库 to 逻辑备份设备1
   如果需要对输入SQL语句进行检查,可以单击【分析】按钮。
   √ 单击【高级】选项卡,这里说明作业成功或失败的例外处理。在【操作成功时】输入框中选中“退出报告成功的作业”,在【失败时的操作】输入框中选中“退出报告失败的作业”,在【输出文件】框中输入把作业命令保存起来的文件名。这样建立了第一个作业步骤。当然可以建立具有多个作业步骤的作业。
   √ 单击【确定】按钮,返回到【新建作业属性-DBSERVER】对话框。选中【调度】书签,在第一行上有一个注意项目,说明目标服务器上的当前时间。这是作业调度的基准时间,非常重要,所以希望在建立调度之前认真核对。
   √ 单击【新建调度】按钮,弹出【新建作业调度-DBSERVER】对话框,在【名称】中输入作业调度的名称,这里输入:备份学生信息数据库作业调度,这要与作业名称、作业步骤名称区分开;调度类型选中【反复出现】,缺省值是每周星期日午夜零点执行,但这和我们所建作业要执行的时间不吻合。
   √ 单击【更改】按钮,弹出【编辑反复出现的作业调度-DBSERVER】对话框, 在【发生频率】选中每天执行;在【每日频率】设置每天执行一次,时间是23点;在【持续时间】中设置开始和结束时间,也就是说,在这一时间段内,执行以上的时间调度。
   √ 设置完成之后,单击【确定】按钮,返回到【新建作业调度-DBSERVER】对话框,再次单击【确定】按钮,返回到【新建作业属性-DBSERVER】对话框,如下图所示。
  
   √ 当SQL Server完成作业时,可以采用多种方式通知操作员,主要有电子邮件、呼叫、网络发送、写入Windows日志以及删除作业,采取这些通知方式是三个时间点:一是当作业完成时;二是当作业失败时;三是只要作业执行。这里选择写入Windows 应用程序事件日志的方式。
   至此,完成了创建作业的操作。
  
   四、操作员
   操作员是作业完成或者事件发生时能够从SQL Server接收通知的人员。使用【企业管理器】可以建立操作员。
   例如,使用【企业管理器】创建操作员,具体操作步骤如下:
   √ 在【企业管理器】中,展开“SQL Server组→DBSERVER→管理→SQL Server代理→操作员”,右击鼠标,从弹出菜单中单击【新建操作员】菜单项,弹出【新建操作员属性-DBSERVER】对话框,
  
   √ 在【名称】中输入abc;输入通知该操作员的电子邮件;这里对abc操作员设置了值班表,他(她)能接收到周一至周五的8至18点之间出现的警报信息。
   √ 单击【通知】书签,这个对话框设置当出现何种警报时以何种方式通知该操作员。
   √ 单击【确定】按钮,完成操作员的建立操作。
   在【企业管理器】中能看到刚刚建立的操作员。
  
   五、警报
   警报是在服务器上发生的响应事件或者性能状况的动作。在事件发生时,SQL Server代理将事件与所定义的警报列表进行比较,如果定义了该事件的警报,则触发警报。在系统监控发现SQL Server已经达到定义的性能指标值时,则触发性能条件警报。
   使用【企业管理器】能够建立警报。当建立好警报之后,如果出现警报,则 SQL Server 会根据预先设置的信息通知相关人员,及时保证 SQL Server的应急处理和正常运行。

15.3 数据导入

   许多组织或企业在使用 SQL Server 的过程中,经常遇到数据转换的问题。
   √ 数据导入:把外部数据源的数据转换为SQL Server的数据。
   √ 数据导出:把SQL Server的数据转换为外部数据。
   数据导入和数据导出与数据备份非常相似,但是在数据存储格式上存在不同。数据导入或导出的数据格式是把一种存储格式转换为另外一种存储格式,用于数据的外部交换。数据备份的格式是SQL Server专有的,只用于SQL Server内部的数据交换。
   例如,从文本文件导入到数据库中,具体操作如下:
   √ 首先,在【记事本】中建立课程数据文本文件(c:\课程信息.txt),如下图所示。
  
   √ 在【企业管理器】中,展开“SQL Server组→DBSERVER(Windows NT)→数据库→学生信息数据库→表”,在右侧窗口选中“成绩表”,右击鼠标,从弹出菜单中选中【所有任务→数据导入】菜单项,弹出【数据转换服务导入/导出向导】对话框,单击【下一步】按钮,弹出【选择数据源】对话框,在【数据源】下拉列表中选择“文本文件”,在【文件名】框中,输入使用【记事本】编辑的文件名c:\课程信息.txt。
   √ 单击【下一步】按钮,弹出【选择文件格式】对话框。由于我们在组织输入文件“课程信息.txt”时规定了数据的组织格式,所以在这里要设置正确。首先选中【带分隔符,各列之间可用任何字符分割】,【文件类型】选中ANSI,【行分隔符】选中(CR)(LF),这表示有软回车和硬回车所组成,【文本限定符】是标明列开始和结束的位置,这里选择单引号,如下图所示。
  
   √ 单击【下一步】按钮,弹出【指定列分隔符】对话框,选择列之间的分隔符为逗号,在下面预览框中会显示对应数据。
   √ 单击【下一步】按钮,弹出【选择目的】对话框,选择数据【目的】为:用于SQL Server的Microsoft OLE DB提供程序;【服务器】选中DBSERVER;【数据库】选中“学生信息数据库”,输入正确的用户名和密码。
   √ 单击【下一步】按钮,弹出【选择源表和视图】对话框,通过下拉列表选中[学生信息数据库].[dbo].[课程表],这说明要导入的是“学生信息数据库”的dbo用户拥有的“课程表”。如果对于所建立的导入映射还要确认,则单击【转换】列下的按钮,弹出【列映射和转换】对话框,如下图所示。
  
   √ 这里明确列出文件中的列与数据库表中列的对应关系,从图中可以看出,文件中第1列对应课程号、第2列对应课程名称、第3列对应上课教师。如果没有什么问题,返回到如图9-37所示的【选择源表和视图】对话框,单击【下一步】按钮,弹出【保存、调度和复制包】对话框,如下图所示。
  
   √ 所定义的数据导入关系被SQL Server作为数据转换包,这些包可以保存起来以后作为作业定期执行,也可以立即执行。我们这里只是为了说明数据导入操作,所以选择【立即执行】选项,并且选中【保存DTS包】的【SQL Server】。
   √ 在【名称】中输入“从TXT文件中追加课程信息”作为DTS包的名称,在【所有者密码】和【用户密码】中输入自己记住的密码信息,单击【下一步】按钮,弹出【正在完成DTS导入/导出向导】对话框。
   √ 单击【完成】按钮,弹出【正在执行包】进度框,在完成数据导入操作之后,弹出一个【DTS导入/导出向导】消息框,如下图所示。
  
   √ 这说明数据已经成功导入。单击【确定】按钮,重新回到【正在执行包】对话框,单击【完成】按钮,完成DTS的保存工作。关于数据导入是否正确,大家可以通过查看“课程表”这数据行来验证。
   至此,我们完成了数据导入操作。
   同样,大家可以很方便地把Excel文件中数据导入到SQL Server数据库中。

15.4 数据导出

   数据导出与数据导入的操作过程是类似的,只不过是数据流动方向发生了变化。
   例如,把学生基本信息表导出为 Execl 文件,具体操作步骤如下:
   √ 在【企业管理器】中,展开【SQL Server组→DBSERVER(Windows NT)】,单击工具条中按钮,弹出【选择】对话框,选中【数据转换→DTS导出向导】菜单项,单击【确定】按钮,弹出【数据转换服务导入/导出向导】对话框,下面我们只给出导出操作过程中的关键对话框。
   √ 第1个关键对话框是【选择数据源】。在【数据源】输入项中要选择SQL Server数据库,即【用于SQL Server的Microsoft OLE DB提供程序】,在【数据库】输入项中选中“学生信息数据库”,如下图所示。
  
   √ 第2个关键对话框是【选择目的】。在【目的】输入项中选择“Microsoft Excel 97-2000”,文件名为c:\学生基本信息.xls,如下图所示。
  
   √ 第3个关键对话框是【指定表复制或查询】,这里选中【从源数据库复制表和视图】选项,如下图所示。
  
   √ 第4个关键对话框是【选择源表和视图】,这里【源】选中“学生信息数据库”的dbo的“学生基本信息表”,即[学生信息数据库].[dbo].[学生基本信息表],【目的】设置为“学生基本信息”,这是导出电子表格中工作表的名称,如下图所示。
  
   只要设置好这些关键对话框的内容,按照向导指示一步一步进行操作,就能够顺利完成数据的导出。这样就可以把“学生基本信息表”中数据导出到电子表格文件中。