‘mysql’ 分类下的所有文章
2012二月8

多服务器mssql job运行监控

mysql 评论关闭

利用:1,mssql job运行。2,链接服务器,3,mssql 邮件发送

例:

DECLARE @LastRun VARCHAR(10)

SELECT @SyncDate = SyncDate FROM dbo.SyncTable

WHERE TableName = ‘JobLogMonitor’

IF @@ROWCOUNT = 0 BEGIN RETURN END

SET @LastRun = CONVERT(VARCHAR(10),@SyncDate,112)

DECLARE @Receivers varchar(1000)

SET @receivers = ‘wukun@lvshou.com;liqihua@lvshou.com;zhengxuesong@lvshou.com’

DECLARE @table VARCHAR(max),@body VARCHAR(max),@COUNT INT

SET @COUNT = 0 SET @SyncCount = 0

–2.201

SET @table = ‘



SELECT @table = @table + ‘

‘+ ‘

‘+ ‘

‘+ ‘



FROM server.msdb.dbo.sysjobhistory sjh(NOLOCK)

JOIN server.msdb.dbo.sysjobs sj(NOLOCK) ON sjh.job_id = sj.job_id

JOIN server.msdb.dbo.sysjobsteps sjt(NOLOCK) ON sjh.step_id = sjt.step_id AND sjh.job_id = sjt.job_id

WHERE run_status =0

AND msdb.dbo.agent_datetime(run_date,run_time)> @LastRun

ORDER BY run_date

SET @COUNT = @@ROWCOUNT

IF @COUNT > 0

BEGIN

SET @SyncCount = @SyncCount + @COUNT

SET @table = @table + ‘

‘ + CONVERT(VARCHAR(10),ROW_NUMBER() OVER (ORDER BY run_date))+ ‘ job名称:’ + CASE(ISNULL(sj.NAME,”))WHEN ” THEN ‘ ’ ELSE sj.NAME END +

步骤:’ + CASE(ISNULL(sjt.step_name,”))WHEN ” THEN ‘ ’ ELSE sjt.step_name END + REPLICATE(‘ ’,4) + ‘执行时间:’ + CASE(ISNULL(sjh.run_date,”))WHEN ” THEN ‘ ’ ELSE CONVERT(VARCHAR(50),sjh.run_date,120) END +

错误消息:’ + CASE(ISNULL(sjh.message,”))WHEN ” THEN ‘ ’ ELSE sjh.message END +

执行SQL:’ + CASE(ISNULL(sjt.command,”))WHEN ” THEN ‘ ’ ELSE sjt.command END +



SET @body = dbo.getHTML(@table)

–SELECT @body

EXEC msdb.dbo.sp_send_dbmail

@profile_name = ‘LogMonitor’,

@recipients = @receivers,

@body_format = ‘HTML’,

@body = @body,

@subject = ‘Job执行错误[201]‘;

END

2010十一月10

MYSQL语法与MsSql的区别

mysql 评论关闭

1,选择语句:

* 每句后加分号;
* else if 应为elseif,中间不留空格。mssql为:if begin … end else if begin … end 形式

IF ( _TranType=’Insert’ ) THEN
INSERT INTO bmdcustomer(CustomerName,CustomerAddress,tel,Remark,Type,LastEditBy,LastEditDate)
VALUES(_CustomerName,_CustomerAddress,_tel,_Remark,_Type,_LastEditBy,now());
SET _Id = @@IDENTITY;

ELSEIF ( _TranType=’Update’ ) THEN
INSERT INTO bmdcustomer(CustomerName,CustomerAddress,tel,Remark,Type,LastEditBy,LastEditDate)
VALUES(_CustomerName,_CustomerAddress,_tel,_Remark,_Type,_LastEditBy,now());
SET _Id = @@IDENTITY;
ELSE
SELECT 1;
END IF;

2,日期:当前时间,Mysql: now(), MsSql:getdate()

2010十月1

mysql 定时运行

备份指定数据并清理
在mysql的安装目录下(D:\service\MySQL\MySQL Server 5.1\bin)运行
mysqldump -u root -pmysql -t lvshou-com? booking -w “is_index = 0 and status = 9 and neworderno is not null”? >> MeetAGeek_Orders12.txt
mysqldump -u root -pmysql-t lvshou-com? booking -w “is_index = 1 and status = 9 and ispayment = 1 and neworderno is not null”? >> MeetAGeek_Orders12.txt
mysql -u root -pmysql lvshou-com -e “;delete? FROM booking where is_index = 0 and status = 9 and neworderno is not null; delete FROM booking where is_index = 1 and status = 9 and ispayment = 1 and neworderno is not null; ”

注:为隐藏需要,可将备份的txt文件改为exe文件

2010十月1

MySql远程连接账号建立

mysql 评论关闭

?更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改成”%”
注: %代表任何远程账户通过用户名密码都可进入
若改为:host改为:122.11.55.146,则只有这个IP下的用户通过用户名密码才可连接,其它用户即使用户名密码正确了也访问不了。

新建远程账号之后,别忘记在my sql cmd中提交这种更新:flush privileges;

2010十月1

乱码

mysql 评论关闭
 1 工程
工程内所有的 .java .jsp .xml .txt 都有默认的编码 默认的是系统环境的编码
我们中文系统通常是GBK 推荐都采用utf-8
utf-8 的时候 你编译 生成doc 可能会遇到乱码(特别是采用ant 的时候,生成doc你几乎100%会遇到)

解决方法 以ant 为例子
编译 注意 encoding 参数

       
       
           
           
       
   

生成doc 注意 encoding 和 charset







这里 的encoding 就是指的你 java 文件的编码格式 javac 和javadoc 都有这个参数
charset 指的是 生成 doc 后的编码方式 javadoc 的参数

2 数据库
mysql 的编码最复杂 从4以后 mysql 号称支持多编码 它更灵活了 我们也更麻烦了
mysql 有4个级别的编码
系统级
库级
表级
sql语句级
请保持采用统一的编码 推荐utf-8
其它数据库要简单的多 一般都是一种编码

3 web server
tomcat 为例
tomcat server.xml 中一个参数

经测试 这个URIncoding 参数主要是 get 方法中采用编码

4 jsp 显示层
第1条中说明了 jsp 文件本身的格式
很多朋友采用eclipse +myeclipse 生成jsp
它自动生成一个头<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
不要误解 这句话不能保证你在ie里看到的不是乱码
pageEncoding它的意思是 这个页面本身采用的是 utf-8 (似乎只在eclipse 里有效果 ,我不确定)
为了在ie 里不乱码  你还得加一句 <%@ page contentType="text/html; charset=UTF-8"%>
它不能在(myeclispe)自动生成  推荐修改 myeclipse的模板 在下边的目录里
MyEclipse\eclipse\plugins\com.genuitec.eclipse.wizards_4.0.1\Templates
里边的jsp模版 你加上<%@ page contentType="text/html; charset=${encoding}"%>

5 filter
自从tomcat 4 以后 网上就流传了一个SetCharacterEncodingFilter 过滤器 搜一下有很多
很好用 web.xml 中加入

?? Set Character Encoding
?? filters.SetCharacterEncodingFilter
?? 
??
encoding
??
utf-8
?? 

?? 
?? Set Character Encoding
?? /*
?? 

6 资源文件
首先保证 文件本身是utf-8
然后部署的时候用 native2ascii 转换
这里给出 ant 里的例子

2010十月1

MySql数据库实现分页

mysql 评论关闭
SELECT * FROM table WHERE ... LIMIT [offset,] rows | rows OFFSET offset

SELECT * FROM table LIMIT 5;     //检索前 5 个记录行  等同于:SELECT * FROM table LIMIT 0,5;     //检索前 5 个记录行
SELECT * FROM table LIMIT 5,10;  // 检索记录行 6-15
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

select * from news  limit 2  offset 4
// 从第5行记录开始查2条,而 select * from news  limit 2 ,4 是从第3行记录开始查4条。此时2为offset
2010十月1

MySql 不支持子查询的变通方法

mysql 评论关闭
到目前为止,MySQL 还不能支持这样的操作,子查询的 FROM 字句和更新/删除对象不能使用同一张表。

mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 );ERROR 1093 (HY000): You can't specify target table 'tab1' for update in FROM clause

针对“同一张表”这个限制,撇开效率不谈,多数情况下都可以通过临时表来变通解决,像这样

DELETE FROM tab1WHERE col1 = (  SELECT MAX( col1 )  FROM (    SELECT * FROM tab1  ) AS t);