注意SQLServer2012中带参数的XP_ReadErrorLog
--15:26 2014-6-10
数据库错误日志通知其中有一部分是检测ERRORLOG中若有用户登录失败信息时,会记录到Errorlog表,并邮件提醒。
当时直接从同事那拿过来的脚本(08),按理说版本都是向前兼容的。平常有个习惯,会把相关脚本在测试环境下先运行,更新、插入的会先看同条件下的SELECT
当把下面的语句放在2012查询窗口运行时,理所当然认为会返回相应结果
exec master.dbo.xp_ReadErrorLog 0, 1, 'Failed', 'login',@startTime,@endTime,'DESC'
消息 22004,级别 12,状态 1,第 0 行
执行扩展存储过程时出错: 参数类型无效
解答#1 网上查找 Using xp_Readerrorlog, to find related error we used to put string in ' ' while in sql 2012 its changed to " "
改成" "再次在2012查询窗口运行
exec master.dbo.xp_ReadErrorLog 0, 1, "Failed", "login",@startTime,@endTime,'DESC'
正常返回结果,把代码放到作业步骤下面,作业历史记录都成功。直到6月9号查看ERRORLOG发现有很多Login failed信息,但却没收到相关邮件,想起那个作业是不是有问题。
首先想到的是数据库邮件设置问题,直接运行作业里面的发送邮件的代码,是可以收到邮件的。
然后怀疑里面统计影响行数的@@ROWCOUNT,接着查Errorlog表也没数据!也就是说根本就没有筛选出数据,是数据问题还是其他异常?再次把代码拿出来,放到查询窗口,时间区间改成有Login failed时段,显示有记录出来。可为什么当时作业没把这些记录到Errorlog表中。
多次测试(本地、服务器),2012作业里面用' '它会报错,用" "不报错,但表中没数据插入!开始怀疑是作业中对" "的判别。
网上查找 在最后面看到这样一段回复
exec xp_readerrorlog 0, 1, N'error', N'', N'2012-08-22 00:00:01.000', N'9999-12-31', N'desc'
works on ss2012 -- the N beging the key
Note that you actually don't need it on the date / order options:
exec xp_readerrorlog 0, 1, N'error', N'', '2012-08-22 00:00:01.000', '9999-12-31', 'desc'
will work as well
2012查询窗口运行
exec master.dbo.xp_ReadErrorLog 0, 1,N'failed',N'login',@startTime,@endTime,'DESC'
确实有返回记录,把这个放入到作业下,运行有记录插入。然后将更改放到服务器上,用错误密码登录数据库,产生一条Login failed日志,之后收到一封错误日志的邮件。
补充:08R2作业中,上面三种方式都可以正常运行
declare @startTime datetime
declare @endTime datetime
set @startTime = DATEADD(day,-1,GETDATE())
set @endTime = GETDATE()
insert into dbo.Errorlog(LogDate,ProcessInfo,Text)
exec master.dbo.xp_ReadErrorLog 0, 1, 'Failed', 'login',@startTime,@endTime
insert into dbo.Errorlog(LogDate,ProcessInfo,Text)
exec master.dbo.xp_ReadErrorLog 0, 1,N'failed',N'login',@startTime,@endTime
insert into dbo.Errorlog(LogDate,ProcessInfo,Text)
exec master.dbo.xp_ReadErrorLog 0, 1, "Failed", "login",@startTime,@endTime
注意SQLServer2012中带参数的XP_ReadErrorLog的更多相关文章
- C语言中带参数的宏
带参数的宏定义有如下的格式: [#define 指令----带参数的宏] #define 标识符(x1,x2,……,xn) 其中 x1,x2,……xn是标志符(宏的参数) 注意:在宏的名字和括号之间 ...
- Python中带参数的装饰器
装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...
- PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?
老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...
- Struts2中带参数的结果集
2.首先,新建一个struts2项目,项目名为ResultParam,打开index.jsp页面,修改编码格式为utf-8,添加一个超链接,用于向结果集传参数,完整代码如下: 相应的struts.xm ...
- ADO.NET中带参数的Sql语句的陷阱
1.使用Parameter //利用构造函数方式 ,不推荐这样写 Parameter p =new Parameter("@id",值); cmd.Parameters.Add(p ...
- java中带参数的try(){}语法
带资源的try语句(try-with-resource)的最简形式为: try(Resource res = xxx)//可指定多个资源 { work with res } try块退出时,会自动调用 ...
- ThreadStart中带参数
Thread Hand1 = new Thread(() => { MethodName(参数1, 参数2); }); Hand1 ...
- Java中带参数的方法和JavaScript中带参数的函数有什么不同?
javascript是动态语言,是弱类型语言,其参数的使用很灵活:java则是强类型语言,参数的类型必须明确的
- idea 生成代码中带参数final修饰
随机推荐
- gridview header增加排序图标
/* add sorting icons to gridview sort links */a.asc:after, a.desc:after { position: relative; top: 1 ...
- HRBUST 1430 矩阵快速幂
没错就是这道模板题我做了一个小时...我居然在看第一眼就认为是快速幂的情况下强行找了一发瞬时求出的规律 每个阶段有黑白两种 a[i].black=a[i-1].black*3+a[i].white ...
- Delphi的哈希表(一)
哈希表是通过哈希值来访问的,通过一定的内存浪费获取检索速度,在检索项时是不需要逐一检索.在编程中有一定的好处. unit Unit1; interface uses Windows, Messages ...
- C++ char*,const char*,string的相互转换
1. string转const char* string s ="abc";constchar* c_s = s.c_str(); 2. const char*转string ...
- VC更换图标文件
步骤 1. 删除图标 2. 在VC中移除图标 3. 用新图标替换原来图标 4. 添加图标到VC 5. 重新编译 参考文档 http://www.cnblogs.com/BloodAndBone/arc ...
- 我的第一个chrome扩展(1)——读样例,实现时钟
学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...
- freebsd 禁用root登录ssh并给普通用户登录权限
转自http://www.linux521.com/2009/system/200904/2021.html http://www.myhack58.com/Article/48/67/2011/30 ...
- 三种查看SqlServer中数据物理pge页的方法
1.根据数据记录查看当前记录所在的文件编号.page页.以及在页中的插槽. 示例如下: SELECT top %%physloc%%, sys.fn_physlocFormatter (%%physl ...
- MySQL- 锁(2)
InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点意味着:只有 ...
- HBase的完全分布式的搭建与部署,以及多master
一:前提准备 1.设置时间同步 2.清空logs,datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start ...