提高记忆力 点击: 2014-07-04
SqlServer数据同步之日志同步
SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介绍SQL Server 2005日志传送功能。
一、 日志传送简介
日志传送一般有主服务器、辅助服务器、监视服务器组成(见图1)。主服务器一般是存储生产数据库的服务器,辅助服务器用来存储主服务器上生产数据库的副 本,监视服务器用来记录日志传送的所有细节服务器,监视服务器是可选的。日志传送是将主服务器的生产数据库的事务日志复制到辅助服务器并在辅助服务器还 原,从而实现主服务器生产数据库和辅助服务器数据库副本数据的一致。
图1
日志传送要求主服务器生产数据库的日志恢复模式是完全或者大容量日志模式,将数据库切换为简单恢复模式会导致日志传送停止工作。辅助服务器是用
来保存主 数据库的最新备份的服务器。一台辅助服务器可以包含多台不同主服务器中数据库的备份副本。例如,某个部门可能有五台服务器,每台服务器都运行关键数据库系 统。在这种情况下,可以只使用一台辅助服务器,而不必使用五台单独的辅助服务器。五个主系统上的备份都可以加载到这个备份系统中,从而减少所需的资源数量 并节省开支。监视服务器应独立于主服务器和辅助服务器,以避免由于主服务器或辅助服务器的丢失而丢失关键信息和中断监视。一台监视服务器可以监视多个日志 传送配置。在这种情况下,使用该监视服务器的所有日志传送配置将共享一个警报作业。
日志传送操作由四个操作组成:备份作业、复制作业、还原作业和警报作业。 •备份作业,日志传送在主服务器实例上为每个主数据库创建一个备份作业。它执行备份操作,将历史记录信息记录到本地服务器和监视服务器上,并删除旧备份文件和历史记录信息。
•复制作业,日志传送在辅助服务器实例上为每个日志传送配置创建一个复制作业。此作业将备份文件从主服务器复制到辅助服务器,并在辅助服务器和监视服务器上记录历史记录信息。
•还原作业,日志传送在辅助服务器实例上为每个日志传送配置创建一个还原作业。此作业将复制的备份文件还原到辅助数据库。它将历史记录信息记录在本地服务器和监视服务器上,并删除旧文件和旧历史记录信息。
•警报作业,如果使用了监视服务器,将在警报监视器服务器实例上创建一个警报作业。此警报作业由使用监视器服务器实例的所有日志传送配置中的主数据库和 辅助数据库所共享。对警报作业进行的任何更改(例如,重新计划作业、禁用作业或启用作业)会影响所有使用监视服务器的数据库。
二、配置实例
1、准备工作
首先确保生产数据库日志恢复模式为大容量日志模式或者是完整模式。若恢复模式为简单,则在设置“将此数据启用为日志传送中配置中的主数据库”时出错。
其次规划事务日志存放目录,存放事务日志目录要求有两个,一个用来存放主服务器备份,一个用来存放辅助服务器还原的备份文件。这两个目录可以分别建在主 服务器和辅助服务器上,但是更好的做法是把主服务器的备份目录放在某文件服务器上,这样可以减少主服务器的I/O读写次数。
修改主服务 器和辅助服务器上的 SQL AGGENT启动账号。在主服务器上,定时备份事务日志是通过SQL作业来完成,确保启动SQL AGENT账号能够访问用来存放由备份作业产生的事务日志目录。辅助服务器上复制作业和备份作业同样是由SQL AGENT 作业完成,确保的启动SQL AGENT账号要求能够访问主服务器
存放事务日志的目录,同时也要求能够访问由复制作业复制过来用来存放辅助服务器还原的事务日志的目录。
2、配置步骤
为了说明配置步骤,笔者在同一台机器上装了二个实例:SERVER01,SRVER02,笔者的机器名称为jeffery,规划了三个文件夹, C:DataBackup用为存放主数据库的完整备份,用于初始化辅助服务器,这个文件夹要求辅助服务器的启动SQL AGENT账号能访问;C:PrimaryData用来存放由备份作业备份出来的主服务器的事务日志,设置成共享文件夹,这个文件夹要求辅助服务器的启动 SQL AGENT账号能访问;C:SecondaryData用来存放由辅助服务器上复制作业从主服务器的复制过来的主服务器的事务日志,也设置成共享的,这个 文件夹要求辅助服务器的启动SQL AGENT账号能访问(如图2所示)。
图2
将SERVER01设置成为主服务器,主数据库为LOG_TRANSFER。将SERVER02设置成为辅助服务器。
第一步:备份主数据库到C:DataBackup LOG_TRANSFER.BAK(主数据库的完整备份)。
第二步:在 SERVER01的LOG_TRANSFER数据库上单击右键,选择”任务”中的“传送事务日志”,打开事务日志传送配置窗口,单击“将此数据库启用为日志传送配置中的主数据库 ”(如图3所示)。
图3
第三步:配置主服务器的日志备份,单击“备份设置按钮”,打开备份设置窗口。在这里需要设置主服务器备份的路径,在前面的说明中已提 到,
primarydata目录是用来存放主服务器的事务日志,并且设置为共享。所以在备份文件夹的网络路径中输入 jefferyPrimaryData,第二个红方框要求输入这个文件的本地路径。
图4
第四步:设置备份作业。单击“计划”按钮。单出如图5的对话框,在这个对话框中可以设置执行的间隔,这里设置成2分钟。你还可以设置某一天的开始
SQL2000中创建作业
SQL2000中创建作业(定时查询,更新)
2008-01-07 20:20
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
update base set flag=0 where datediff(dd,date,getdate())=0 --确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排为一天一次
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
============================
在sql server中创建作业(转)
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,
可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用
户[也可选其它的登录]->
描述[填写本次工作详细描述内容];
[ 创建作业分类的步骤:
SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型
[Transact-SQL(TSQL)脚本]->
数据库[要操作的数据库]->命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件
如果要执行存储过程,填
exec p_procedure_name
v_parameter1,[ v_parameter2„v_parameterN]
]
->确定
(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
更改[调度时间表]->确定
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:
SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记
录的历史记录少.
如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录. 看了SQL Server的在线帮助文档,里面介绍说:
在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小->
作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000
每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60
它们之间有一个相互制约关系, 我们可以根据自己的需要来改.
如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到
错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度)
看了Microsoft的文档:
说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.
24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。
于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?
use msdb
select * from sysjobs
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句: update sysjobs set originating_server='new_server_name'
where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14'
(所影响的行数为 1 行)
这样就可以添加、更新或删除那些曾经出error 14274 的作业了。
如果想把作业由一台机器迁移到另一台机器,可以先保留好创建作业的脚本, 然后在另一台机器上运行。
导出所有作业的创建脚本操作步骤:
管理->SQL Server代理->作业(鼠标右键)->所有任务->生成SQL脚本->保存到操作系统下的某个sql文件{sqlserver作业历史记录}.
导出某一个作业的创建脚本操作步骤:
管理->SQL Server代理->作业->选中待转移的作业(鼠标右键)->所有任务->生成SQL脚本->保存到OS下的某个sql文件
然后在目的服务器上运行刚才保存下来的创建作业的sql脚本。
( 如果建作业的用户或者提醒的用户不存在, 则会出错;
我们需要在目的服务器上建立相关的WINDOWS用户或者SQL Server数据库登录, 也可以修改创建作业的脚本, 把目的服务器上不存在的用户替换成已经有的用户。
如果生成日志的物理文件目录不存在,也应该做相关的修改,例如d:\区转f:\区等
字符串的 @command 命令里有分隔符号 go 也会出错, 可以把它去掉) ==================
在数据库的应用系统中,充分的利用数据库的后台服务端的功能可以可以简化客户端前台的工作,更可以降低网络的负荷,同时使整个系统设计更合理,便于维护移植和升级,后台计划任务作业在很多数据库应用中经常会用到,当然是配合存储过程使用。
在SQL Server2000中,可以手动一步一步的在企业管理器中建立后台计划任务作业,但这样既麻烦也不便于发布,因此本文给出使用T-SQL脚本创建作业的方法。
需要下面三个SQL Server2000 msdb系统库中的存储过程来完成作业的建立,在此之前请先开启数据库实例的SQLServerAgent服务,SQL Server安装后默认是没有启动该服务的。
顺便说一句,SQL Server在2000版本中才有了明显的“实例”的概念,在
7.0版中没有明确的实例,因此在SQL Server2000默认安装时创建了一个默认实例,这是为了和SQl Server 7.0兼容,如果你是默认方式创建的实例,则实例名为空。啥子?你不晓得啥子是“实例”?个人去找点资料看看,oracel、sybase都有实例和表空间,所以我叫SQL Server2000之前的SQL Server为桌面数据库。
进入正题,步骤是“作业”-〉“作业调度”-〉“作业步骤”,具体如下:
1、使用sp_add_job 添加由 SQLServerAgent 服务执行的新作业。
2、使用sp_add_jobschedule创建作业调度。
3、使用sp_add_jobstep将一个步骤(操作)添加到作业中
下面以在汽车客运站票务系统中的脚本为例给出实际例子,在看例子之前,请先看一下上面三个系统存储过程的帮助。在例子中使用了一个自定义的存储过程“tksp_bakdata”,它的功能是处理当日之前售票数据(只需知道是一个自定义存储过程就行了)。
例子1:每日0点30分处理售票数据
use msdb
EXEC sp_add_job @job_name = 'tk_bakdata',
@enabled = 1,
@description = '每日00:30处理售票数据',
@start_step_id = 1,
@owner_login_name = 'tkuser'
exec sp_add_jobserver @job_name = 'tk_bakdata'
go
EXEC sp_add_jobschedule @job_name = 'tk_bakdata',
@name = 'Bakdata003000',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 003000
go
EXEC sp_add_jobstep @job_name = 'tk_bakdata',
@step_name = 'bakdata',
@subsystem = 'TSQL',
@command = 'EXEC tksp_bakdata ',
@database_name='ticket'
go
例子2:每日SQLServer启动时处理售票数据,这样在每天需要关机的服务器中
SQL Server如何定时作业(执行某个存储过程)
SQL Server如何定时作业(执行某个存储过程)
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->
描述[填写本次工作详细描述内容];
[ 创建作业分类的步骤:
SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型
[Transact-SQL(TSQL)脚本]->
数据库[要操作的数据库]->命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件 如果要执行存储过程,填
exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN] ]
->确定
(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
更改[调度时间表]->确定
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:
SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记录的历史记录少.
如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录. 看了SQL Server的在线帮助文档,里面介绍说:{sqlserver作业历史记录}.
在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小-> 作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要
提高它,例如为100000
每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60
它们之间有一个相互制约关系, 我们可以根据自己的需要来改.
如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到 错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度) 看了Microsoft的文档:
说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.
24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。 于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?{sqlserver作业历史记录}.
use msdb
select * from sysjobs
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句:
MSSql2008数据库恢复过程记录
信息平台采用RoseHA8.5 for SQL Server 2008双机热备的存储解决方案,在应用过程中,由于roseHa的切换界面简易,操作简单,适用于但应用层的管理,有时候双机切换会造成数据丢失甚至数据库损坏。
最常见的是Msdb损坏出现如下错误
通过百度、google搜索无法打开数据库 'msdb'。恢复操作已将该数据库标记为 SUSPECT。有关详细信息,请参阅 SQL Server 错误日志。 (Microsoft SQL Server,错误: 926)
解决方式
第一种:把其他电脑中中的msdb数据库的mdf和ldf文件拷贝到自己的目录中,但是这种方法的缺点是:造成一部分数据丢失,尤其是代理的相关作业丢失。 msdb是系统数据库,里面记录调度警报和作业以及操作员的信息,如果没有用到这些内容,直接用备份恢复就可以的。在单用户模式下,停掉SQL server服务,在另一台机装同版本sqlserver,把msdb覆盖过来。
第二种:执行下面的SQL命令(在单用户模式修复数据库)
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go
其中置疑的数据库名就是有问题的数据库
操作后:
经过测试只有结合两种方案来解决。
首先是停止生产运行的sql服务,拷贝启动正常的MSdb库到生产环境中替换损坏的库,
启动生产环境Sql服务,运行上述T-Sql修复msdb数据库执行命令。
第三步分别执行下面
T-sql
此步骤同样能解决装完SQL Server后修改计算机名不能执行代理作业 use master
go
select @@servername
select serverproperty('servername')
如果这两个结果不一致,说明机器改过名字
--要修复此问题
--执行下面的语句,完成后重新启动SQL服务
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
最后重新启动服务
第四步,新建维护计划(备份数据库)测试是否能运行。
运行前请检查Sql代理服务是否启动。
如果不能运行
执行下面T-sql
SELECT
[subsystem]
,[subsystem_dll]
FROM[msdb].[dbo].[syssubsystems]
GO{sqlserver作业历史记录}.
查看原来是配置里的指定Dll文件路径不对,一般共享存储无D盘,一般是E盘
执行命令替换D:\为E:\
Update [msdb].[dbo].[syssubsystems] set
subsystem_dll=replac(subsystem_dll,’D:\’,’E:\’);
如果生产环境数据库实例名跟拷贝的msdb数据库实例名不一致
请执行
Update[msdb].[dbo].[syssubsystems]setsubsystem_dll=replace(subsystem_dll,'MSSQLSERVER','XXServer')
'MSSQLSERVER'为拷贝msdb的数据库实例名
'XXServer'为生产环境的数据库实例名
重启生产环境Sql服务和代理服务即可。
数据库作业(答案)
《数据库原理与应用》综合设计任务书
前言
《数据库原理与应用》课程的重点知识模块包括:1)数据库设计、2)用SQL实现建库、建表、查询、更新、和创建视图、3)存储过程和触发器设计。针对这三个应用能力,用一个案例作为背景,布置三次大作业。
在校大学生都能理解“图书管理系统”的应用场合和业务流程。因此,以图书管理系统作为案例来布置作业,可以降低业务分析难度,让学生将主要精力放在知识消化与技术应用上。
本文档包括四个部分。第一部分描述系统的需求,第二部分提出E-R模型设计和关系模型设计的任务;第三部分提出在SQL Server中,用SQL语句来建库、建表、查询、更新数据、创建视图的任务;第四部分,根据应用需求、安全需求和数据完整性要求,提出设计存储过程和触发器的任务。 每个任务之前,都给出了完成任务所需要掌握的关键知识点,学生可以在对这些知识点进行复习的基础上完成任务,每个任务是一次大作业。
第一部分 案例的需求描述
本部分描述“图书管理系统”的需求,学生通过阅读本部分内容,了解系统的功能要求、运行环境,对系统所需的数据有总体认识,作为三次作业的基础。
1.2 需求分析 1)功能需求
图1-1:功能需求示意图{sqlserver作业历史记录}.
教师信息管理:用于教师基本资料的增删改查。
图书信息管理:用于图书基本信息的增删改查,分类统计图书册数和价值。 借书登记:记录借书时间、所借图书、借书人、办理人。 还书登记:记录还书时间、所还图书、还书人、办理人。
催还:查询借阅逾期的借书信息,给借书人发电子邮件,给借书人的部门打电话。 2)运行环境要求
图1-2:运行环境拓扑图
系统采用C/S模式,有两台PC和一台服务器,联成一个局域网。PC上安装图书管理软件的客户端,服务器上安装DBMS,服务器也可由两台PC中的一台来代替。
第二部分 作业1——E-R模型与关系模型设计
(满分8分)
本部分的任务是:在需求分析的基础上,进行E-R图设计,然后将E-R模型转换为关系模型。 任务: 1) 2)
根据需求描述,绘制E-R图。
将E-R图转换成关系模型,写出所有的关系模式,并写出每一个关系是按照什么规则转换而成的。
3) 在已经形成的关系模型下,举例说明连接运算、投影运算、选择运算。 参考答案:(属性写在了实体和联系图形内) 任务:
1) 根据需求描述,分别为“图书管理系统”的不同功能模块绘制局部E-R图。 教师信息管理:
图书基本信息管理:
借还书登记:
催还书登记:
2) 整体E-R图
3) 关系模式
类型表(类型名,借阅期限),依据:实体转换为关系。
图书表(,书名,作者,出版社,出版时间,单价,类型名,状态),依据:
实体转换为关系,1:N的联系合并到N,在N方增加一个外键: 类型名。注:状态属性为(库存,借出)
管理员表() ,依据:实体转换为关系。
教师表(教师工号,姓名,性别,Email,部门名), 依据:实体转换为关系,1:N的联系合并
到N,在N方增加一个外键: 部门名。
部门表(部门名,电话),依据:实体转换为关系。
借还表(ISBN,教师工号,借办理人,借出日期,还办理人,归还日期),依
据,M:N联系转换为一个关系,取联系的实体的键加联系属性作为其属性,可以增加一个列作为主键。
催还表(ISBN,教师工号,办理人,催还日期),依据,M:N联系转换为一个
关系,取联系的实体的键加联系属性作为其属性,可以增加一个列作为主键。 4) 在已经形成的关系模型下,举例说明连接运算、投影运算、选择运算。
连接运算:查看类型的图书已经超过了有效借出期限。(需要图书,类型,借还关系) 投影运算:查看图书的书名、作者。 选择运算:查看单价高于50元的图书。
附:自底向上设计概念结构的方法
通常分为两步:第一步:首先要根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分E-R图。 第二步:集成局部视图。
设计分E-R图的步骤是:选择局部应用在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,逐一设计分E-R图,实体的属性、标识实体的码实际上实体与属性是相对而言的,很难有截然划分的界限。同一事物,在一种应用环境中作为"属性",在另一种应用环境中就必须作为"实体"。一般说来,在给定的应用环境中:属性不能再具有需要描述的性质。即属性必须是不可分的数据项。
合并分E-R图,生成初步E-R图。各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。。解决方法是根据应用的语义对实体联系的类型进行综合或调整。 修改与重构,生成基本E-R图分E-R图经过合并生成的是初步E-R图。之所以称其为初步E-R图,是因为其中可能存在冗余的数据和冗余的实体间联系,即存在可由基本数据导出的数据和可由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,因此得到初步E-R图后,还应当进一步检查E-R图中是否存在冗余,如果存在,应设法予以消除。
基于SQL server 2008数据库的ifix操作记录教程
数据库部分
1创建服务器数据库
1.1安装SQL server,安装时注意不要使用windows自带的用户名密码,自己创建例子中用户名sa,密码sql。
1.2打开 Microsoft SQL server management studio 用第一步创建的用户名,密码连接服务器
1.3连接到服务器后,右键数据库选择新建数据库,取名为operation
2创建ODBC (此处可以是同网络中另一台计算机)
2.1打开管理工具-数据源(ODBC)
2.2添加一个数据源,驱动选择SQL server,名称为Operation_odbc,描述,服务器选择安装SQL server数据库的那台计算机的名字(在我的电脑-右键-属性中查看计算机名)
上图的数据库选择1.3中创建的数据库
完成
测试数据源,至此数据源创建完毕。
3 Ifix ODBC报警服务配置(与2为同一台计算机)
3.1打开ifix系统配置(SCU-IFIX)- 配置- 报警- 报警ODBC服务,启用服务,双击配置
按图所示配置,类型选择SQL Server ,数据库标示选择2.2中的数据源名称,以及连接服务的用户名密码(安装sql server时用户名和密码)。
按图右所示创建表czjl_sql,注意还要选中 最后日期,这个“日期”是数据库操作表的依据。
3.2这时打开服务器中数据库operation可查看刚才创建的表
右键-设计该表,控制字段长度
运行一遍ifix ,这是表czjl_sql中应该有数据了。
4.创建作业,用T-SQL语句实现每天生成一个以日期为表名的表,并把那天的数据全部转移到该日期的表中,并且删除一个月以前的表(根据表名的日期判断)