create definer=`boss`@`%` procedure `crm_sms_stat`(in years varchar(10),in m varchar(10),in last_months varchar(10)) begin declare year_months varchar(10); declare year_m varchar(10); declare mt_sms_yearmonth varchar(20); declare r_year_month varchar(20); declare last_r_year_month varchar(20);
set year_months = concat(years,m); set year_m = concat(years,'-',m); set mt_sms_yearmonth = concat("mt_sms_",year_months); set r_year_month = concat(years,"_",m);
if m = "01" then set years = years - 1; set last_months = "12"; end if; set last_r_year_month = concat(years,"_",last_months);
if years = "2008" then set r_year_month = concat("r",r_year_month); set last_r_year_month = concat("r",last_r_year_month); end if;
/*---------------------------------------------------------------- */ set @insertstat = concat(' insert into crm_sms_stat(months,user_id,username,agentid) ', ' select "',year_months,'",u.user_id,u.username,u.agentid from ',mt_sms_yearmonth, ' mt inner join users u on mt.user_id=u.user_id group by mt.user_id '); prepare inserts from @insertstat; execute inserts;
set @tempupdateremain = concat(' update crm_monthremain cm,crm_sms_stat css set css.last_remain = ifnull(', last_r_year_month,',0),css.this_remain = ifnull(', r_year_month,',0) ', ' where cm.id = css.user_id and css.months = "',year_months,'" '); prepare remain from @tempupdateremain; execute remain;
-- 更新每个月用户所冲条数 set @tempadd = concat(' update crm_sms_stat css inner join (select name,sum(total_count) addnum from boss_addmoney ', ' where left(add_date,7)= "',year_m,'" and total_count >=0 and name not like "%=%" and name not like "%:%" group by name) ', ' x on css.username= x.name and css.months = "',year_months ,'" ', ' set css.add_num = ifnull(x.addnum,0) '); prepare addnum from @tempadd; execute addnum;
if years = "08" then -- 更新通道发送数(200901之前是不分卡发和通道的) set @tempchannel08 = concat('update crm_sms_stat css inner join (select mt.user_id,', ' sum(length(replace(mt.dest_mobile,";","")))/11 chennel_num', ' from ',mt_sms_yearmonth,' mt ', ' group by mt.user_id) x on css.user_id = x.user_id and css.months = "',year_months,'"', ' set css.channel_num = ifnull(x.chennel_num,0) ');
prepare channel08 from @tempchannel08; execute channel08; else -- channel send number set @tempchannel = concat('update crm_sms_stat css inner join (select mt.user_id,', ' sum(length(replace(mt.dest_mobile,";","")))/11 chennel_num', ' from ',mt_sms_yearmonth,' mt where mt.channel_id != 312 ', ' group by mt.user_id) x on css.user_id = x.user_id and css.months = "',year_months,'"', ' set css.channel_num = ifnull(x.chennel_num,0) ');
prepare channel from @tempchannel; execute channel; -- card send number set @tempcard = concat('update crm_sms_stat css inner join (select mt.user_id,', ' sum(substring_index(substring_index(mt.dest_mobile, "real", 1),":",-1)) as submit_card_num,', ' sum(substring_index(mt.dest_mobile,":",-1)) as real_card_num', ' from ',mt_sms_yearmonth,' mt where mt.channel_id = 312 ', ' group by mt.user_id) x on css.user_id = x.user_id and css.months = "',year_months,'"', ' set css.submit_card_num = ifnull(x.submit_card_num,0),css.real_card_num = ifnull(x.real_card_num,0) '); prepare card from @tempcard; execute card; end if;
4.1. 在windows server 2003使用sql server 2005概述 sql server 2005 支持在 windows server 2003 上动态分配 awe 映射内存。通过允许访问超过在所配置虚拟内存地址空间上设置的限制的可用物理内存,awe 可扩展 32 位操作系统上运行的应用程序的功能。
启动过程中,sql server 仅保留一小部分 awe 映射内存。需要额外的 awe 映射内存时,操作系统会动态地将其分配给 sql server。同样,如果需要更少的资源,sql server 会将 awe 映射内存返还给操作系统,以供其他进程或应用程序使用。sql server 和操作系统之间的这种平衡受到 min server memory 和 max server memory 参数的限制。
在 windows server 2003 中运行 sql server 2005 时,无需重新启动 sql server 实例,sql server 即可响应 max server memory 和 min server memory 配置选项的更改。
在 windows server 2003 下,如果服务器的物理内存小于虚拟内存地址空间上已配置的限制,则该服务器支持动态 awe 映射内存。在这种情况下使用 awe 不会对性能产生影响,但添加的物理内存超过虚拟内存地址限制时,可以在不重新启动服务器的情况下使用此物理内存。
4.2. 启用awe 对于 windows server 2003,由于 awe 映射内存管理是动态的,因此在启动过程中,只分配总可用物理内存的一小部分。
如果已成功启用此选项,当 sql server 2005 实例启动时,sql server 错误日志中将写入消息“address windowing extensions enabled”。
必须在启用 awe 之前为 sql server 帐户授予 lock page in memory 权限。
awe enabled 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 awe enabled。必须重新启动 sql server 实例,awe 才会生效。
4.3. 启用锁定内存页选项(windows) 启用锁定内存页选项
在"开始"菜单上单击"运行"子菜单,然后在"打开"框中键入"gpedit.msc"。
在"组策略"控制台上,展开"计算机配置",然后展开"windows 设置"。
展开"安全设置",然后展开"本地策略"。
选择"用户权限分配"复选框。
详细资料窗格中随即显示出策略。
在详细资料窗格中,双击"锁定内存页"。
在"本地安全策略设置"对话框中,单击"添加"按钮。
在"选择用户或组"对话框中,添加有权运行 sqlservr.exe 的帐户。
4.4. 启用sql server 2005的awe支持 若要启用 awe,请将 awe enabled 设置为 1。除非指定了 max server memory 的值,否则 sql server 将保留几乎所有可用内存,只留下 128 mb 或更少。
如果已成功启用该选项,则当 sql server 2000 实例启动时,sql server 错误日志中将出现"已启用地址窗口扩展"这条消息。
2.如何查看sql server2000是否打补丁,及补丁的版本 有两种方法可以实现:一种是查看ms-sql的关于信息;一种是利用ms-sql的语句来实现(select @@version)或者(select serverproperty('productversion')) microsoft sql server 2000 - 8.00.194 (intel x86) aug 6 2000 00:57:48 copyright (c) 1988-2000 microsoft corporation personal edition on windows nt 5.1 (build 2600: service pack 2) 8.00.194 -——————sql server 2000 rtm(未安装补丁) 8.00.384 -——————(sp1) 8.00.534 -——————(sp2) 8.00.760 -——————(sp3) 8.00.2039 -——————(sp4) 另外通过copyright (c) 1988-2000 microsoft corporation中的日期也可以看出sql server2000是否打补丁,但在这里体现不出补丁的版本
use master go declare @spid int,@bl int declare s_cur cursor for select 0 ,blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) union select spid,blocked from sysprocesses where blocked>0 open s_cur fetch next from s_cur into @spid,@bl while @@fetch_status = 0 begin if @spid =0 select '引起数据库死锁的是: '+ cast(@bl as varchar(10)) + '进程号,其执行的sql语法如下' else select '进程号spid:'+ cast(@spid as varchar(10))+ '被' + '进程号spid:'+ cast(@bl as varchar(10)) +'阻塞,其当前进程执行的sql语法如下' dbcc inputbuffer (@bl ) fetch next from s_cur into @spid,@bl end close s_cur deallocate s_cur
eventtype parameters eventinfo -------------- ---------- ------------------------------------------------ language event 0 select * from test insert test values(1,2)
eventtype parameters eventinfo -------------- ---------- ------------------------------------------------ language event 0 select * from test insert test values(1,2)
eventtype parameters eventinfo -------------- ---------- -------------------------------------------------------------------------------------------------- language event 0 begin tran select * from test with (holdlock) waitfor time '12:00' select * from test commit
eventtype parameters eventinfo -------------- ---------- -------------------------------------------------------------------------------------------------- language event 0 begin tran select * from test with (holdlock) waitfor time '12:00' select * from test commit
<% function testurl(url) dim httpxml set httpxml = createobject("msxml2.xmlhttp") httpxml.open "head",url,false httpxml.send if httpxml.status = 200 then testurl = 1 else testurl = 0 end if set httpxml = nothing end function
set xmlhttp =server.createobject("microsoft.xmlhttp") xmlhttp.open("head","http://www.nmi.cn/index.htm",false) xmlhttp.send() if xmlhttp.status=200 then '文件存在 end if