解决Sql Server警报的疑难问题

 更新时间:2016年11月25日 16:40  点击:1673
  1.检查你是否使用了最新的Sql Server service pack   
  这是因为在最新的Sql Server service pack中已经修补了很多Sql Server使用警告(Alerts)的漏洞。你应该确保在你的系统中已经安装了最新的Sql Server service pack补丁包。
   
  2.检查SqlServerAgent服务的帐户是否作为成员运行在域用户群组(Domain User Group)下  LocalSystem帐户它没有访问网络的权限。所以,如果你需要将事件记录在其他运行有Windows NT或Windows 2000机器上的应用程序日志上,或者你的作业(jobs)需要跨网络的资源,或者你需要通过e-mail或者pagers通知操作者,这时候,你就需要将SalServerAgent服务的帐户设置在域用户群组(Domain User Group)下作为它的成员。
   
  3.如果所定义的警报都没有触发,检查SqlServerAgent和EventLog服务是否都在运行如果你需要让你定义的警报被触发,这些服务必须被开启。所以,如果这些服务没有被运行的话,请运行它们。
 
  4.如果有某个警报没有被触发,请确保它们是否被启用警报可以被启用或禁用,为了检查一个警报是否被启用,你应该做以下这些步骤:  
  1) 运行Sql Server Enterprise Manager   
  2)请打开服务器群组,然后打开某个服务器   
  3)请打开管理(Management),然后再打开Sql Server Agent  
  4)双击合适的警报以查看这个警报是否被启用了   
  5)检查警报的历史值以确定警报最后工作的日期和时间
  为了检查一个警报的历史值,你应该做以下这些事情:   
  1) 运行Sql Server Enterprise Manager   
  2) 请打开服务器群组,然后打开某个服务器   
  3) 请打开管理(Management),然后再打开Sql Server Agent   
  4) 双击合适的警报以查看警报的历史值   
  6.核对每20秒维护的计数器值   
  因为Sql Server Agent每20秒间隔维护一个性能计数器,如果发现这个性能计数器只有几秒钟(少于20秒)才维护一次,那么极有可能你的这个警报将不会被触发。
   
  7.检查Sql Server错误日志,Sql Server Agent错误日志以及Windows NT和Windows 2000的应用程序日志以获得有关错误描述的更多详细信息仔细检查核对当产生警报失败事件时,被记录在Sql Server错误日志,Sql Server Agent错误日志以及Windows NT和Windows 2000的应用程序日志中的日期和时间以及对错误的描述能帮助你分析产生警报失败事件的原因。
   
  8.如果警报被触发了,但是这时候操作员却没有收到任何通知,请尝试手动使用"e-mail","pager"或者用"net send"将信息发送给操作员在很多情况下,你输入了一个错%C


方法一
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' db_name() ' LOG is '
CONVERT(VARCHAR(30),@OriginalSize) ' 8K pages or '
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' db_name() ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
将Mysql数据库转换为MSsql的数据库,或者将Mssql数据库转换为Mysql的数据库,在NT环境下很多时候都会用到。使用MySql ODBC后就比较好办,可以使用MSSQL7的管理工具,也可以使用mysql的管理工具,更可以使用其它方的管理工具
这里介绍一个使用SQL7的MMC的方法 ,将MSsql7的数据转化为Mysql的数据库,将源和目的反之,就可以将Mysql的数据库转化为Mssql7的数据库。
 
1.安装Mysql的ODBC接口,可以在本站下载
2.建立Mysql的DSN,可以建系统DSN,这里命名testmysql,填写IP,dababase,用户名口令等项,完成
3.在SQL7的MMC中,选择要导出的数据库,右键选择All Tasks->Export Datas...
4.开始DTS Export Wizerd...,
Choose a Data Source:Microsoft OLE DB Privoder for SQL Server
server:你的MSsql7数据库的服务器
是否使用NT认证和用户名口令看你自己的了
最后选择一个Database,如:mynews(你自己要导到mysql中的数据库)
下一步
5.Choose a Destination:选Mysql
User/System DSN,如果建立过就选择,如果没有建立就新建。
 
6.Specify Table Copy or Query
Copy table(s) from the source database,从源数据库拷贝表开始
7.Select Source Table
选择要拷贝的表,如果不想仔细调整,就选择全部吧。
 
8.Run immediately,当然要立即执行,下一步再选完成,就开始转换。
 
这个转换有时一部分表可能要失败,双击失败的表格,看看什么原因,一般是SQL7的数据类型问题,作一些小的修改就应该可以了。
 
使用MySql ODBC后就比较好办,可以使用MSSQL7的管理工具,也可以使用mysql的管理工具,更可以使用其它方的管理工具
这里介绍一个使用SQL7的MMC的方法
1.安装Mysql的ODBC接口,可以在本站下载
2.建立Mysql的DSN,可以建系统DSN,这里命名testmysql,填写IP,dababase,用户名口令等项,完成
3.在SQL7的MMC中,选择要导出的数据库,右键选择All Tasks->Export Datas...
4.开始DTS Export Wizerd...,
Choose a Data Source:Microsoft OLE DB Privoder for SQL Server
server:你的MSsql7数据库的服务器
是否使用NT认证和用户名口令看你自己的了
最后选择一个Database,如:mynews(你自己要导到mysql中的数据库)
下一步
5.Choose a Destination:选Mysql
-- 获取指定页的数据
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(100) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @OrderType != 0
begin
set @strTmp = "<(select min"
set @strOrder = " order by [" @fldName "] desc"
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by [" @fldName "] asc"
end
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "] where [" @fldName "]" @strTmp "(["
@fldName "]) from (select top " str((@PageIndex-1)*@PageSize) " ["
@fldName "] from [" @tblName "]" @strOrder ") as tblTmp)"
@strOrder
if @strWhere != ''
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "] where [" @fldName "]" @strTmp "(["
@fldName "]) from (select top " str((@PageIndex-1)*@PageSize) " ["
@fldName "] from [" @tblName "] where " @strWhere " "
@strOrder ") as tblTmp) and " @strWhere " " @strOrder
if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where " @strWhere
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "]" @strTmp " " @strOrder
end
if @IsCount != 0
set @strSQL = "select count(*) as Total from [" @tblName "]"
exec (@strSQL)
GO


  最近,我遭遇了一次奇特的SQL Server安装经历,在这里把它写出来,和朋友们一起学习,探讨。
  我的系统是WIN2000标准服务器版,第一次安装系统时候能够正确安装和运行SQL Server2000。由于最近系统中安装的Office中的ACCESS文件数据库表无法打开,在多次重新安装Office系统无效的情况下,只好重新安装了WIN2000操作系统,安装操作系统很顺利。
  一、遭遇:
  我安装了Office2000和Borland Delphi7,这时能够正常的运行和管理Office文件了,Delphi也能正常运行。然后我开始重新安装SQL Server2000,但是当进入"本地计算机"后,系统弹出一个警告信息框,显示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机!"。我多次重新启动也不行。
  二、过程:
  我回忆在重新安装操作系统以前,我没有正常卸载SQL Server2000。由于重新安装了操作系统,只好手工把安装SQL Server的文件夹全部删除,同时运行注册表,在注册表中删除SQL Server的所有相关项。重新启动安装SQLServer,可仍然出现上面的警告信息。我反复的在注册表中查找SQL Server相关项并用WINDOWS优化大师清理,重新启动多次。故障仍然存在。
  我分析可能是有程序与SQL Server的安装程序发生冲突。重新启动系统时候我按下F8键,选择"安全模式"进入系统,运行SQL Server的安装程序,这时以前出现的警告框信息没有了,便一路NEXT,复制和安装文件,但是到了配置数据服务器的时候,便发现运行的时间很长,当时正值要下班了,我想反正下班了,干脆就让它继续"配置"吧,便让机器运行着,决定第二天上班时候来看结果┉┉
  第二天上班时候,我直奔电脑,结果发现电脑还在"配置服务器",十多个小时都未能配置好,看来安全模式也不行,只好按正常模式重新启动计算机。
  进入控制面板-》添加/删除程序,这时我看到已安装的项目有:Borland Delphi7、Office2000、金山词霸2002专业版,我想到是不是要这些已安装的程序与SQL Server的安装程序发生冲突,我便逐个删除上面的程序,每删除一个就重新安装SQL Server,以发现到底是哪一个程序发生冲突。结果还是没有安装成功。难道真要把硬盘FORMAT了?由于我当时刚好没有WIN2000的启动光盘,因单位的局域网的所有的计算机都是方正电脑文祥系列,电脑的配置都是一样的,我便把一块也安装了WIN2000服务器版和SQL Server2000的硬盘作为主盘安装到我的电脑中,我的电脑的硬盘作为从盘,主盘和从盘都已经分为C、D、E、F四个区。用主盘引导系统,进入"我的电脑",可以看到盘符的分配顺序是C、D、E、F、G、H、I。我便对G区进行了格式化,然后我取下主盘,只安装了从盘,开机重新启动,我看到了WIN2000 Server的启动界面,输入密码,进入了系统。我抱着试试看的心情,再次启动SQL Server2000的安装程序,你说奇怪不奇怪,进入"本地计算机"的时候,按下"NEXT",先前出现的警告信息没有了,系统进入了熟悉的安装界面,我一路NEXT,真是顺啊,一路顺到底,配置服务器,很快的便把SQL Server安装成功了。我真不敢相信自己的眼睛,我进入SQL Server的企业管理器,查看数据库和表,并对表进行操作,一切正常。我在托盘里也欣喜的看到SQL Server服务管理器的图标。
[!--infotagslink--]

相关文章

  • 409错误是什么 http 409错误怎么解决

    409错误是什么?http 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
  • http 405错误是什么 http 405错误怎么解决

    http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
  • 403错误是什么 403错误怎么解决

    403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
  • 412错误是什么 412错误怎么解决

    412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
  • Perl CPAN::Modulelist的解决办法

    今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
  • 406错误是什么 406错误怎么解决

    HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
  • 407错误是什么 407错误怎么解决

    407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
  • 410错误是什么 http 410错误怎么解决

    410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
  • HTTP 400错误是什么 HTTP 400错误怎么解决

    每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误,那么HTTP 400错误怎么解决呢?请看下文介绍。 目前400错...2017-01-22
  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • js修改input的type属性问题探讨

    js修改input的type属性有些限制。当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题。但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改。...2013-10-19
  • Mysql常见问题集锦

    1,utf8_bin跟utf8_general_ci的区别 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a'...2013-10-04
  • Mysql大小写敏感的问题

    一、1 CREATE TABLE NAME(name VARCHAR(10)); 对这个表,缺省情况下,下面两个查询的结果是一样的:复制代码 代码如下: SELECT * FROM TABLE NAME WHERE name='clip'; SELECT * FROM TABLE NAME WH...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • Jrebel启动失败解决方案详解

    这篇文章主要介绍了Jrebel启动失败解决方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-07
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • C#查询SqlServer数据库并返回单个值的方法

    这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下...2020-06-25
  • SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法

    这篇文章主要介绍了SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法,需要的朋友可以参考下...2020-07-11
  • C#实现Excel表数据导入Sql Server数据库中的方法

    这篇文章主要介绍了C#实现Excel表数据导入Sql Server数据库中的方法,结合实例形式详细分析了C#读取Excel表数据及导入Sql Server数据库的具体操作步骤与相关操作技巧,需要的朋友可以参考下...2020-06-25