存档

2010年2月 的存档,文章数:12
 

ASE12.5的全局环境变量,来自:http://bbs.chinaunix.net/thread-533042-1-1.html

 @@authmech

 

,@@bootcount

 

,@@boottime  

 

,@@bulkarraysize

 

,@@bulkbatchsize

 

,@@char_convert  

 

,@@cis_rpc_handling  

 

,@@cis_version   

 

,@@client_csexpansion   

 

,@@client_csid   

 

,@@client_csname

 

,@@cmpstate  

 

,@@connections   

 

,@@cpu_busy  

 

,@@crthaproxy   

 

,@@curloid   

 

,@@datefirst

 

,@@dbts  

 

,@@error

 

,@@errorlog  

 

,@@failedoverconn   

 

,@@guestuserid   

 

,@@ha_local_nodeid   

 

,@@hacmpservername   

 

,@@haconnection  

 

,@@heapmemsize   

 

,@@identity  

 

,@@idle  

 

,@@invalidsuid   

 

,@@invaliduserid

 

,@@io_busy   

 

,@@isolation

 

,@@kernel_addr   

 

,@@kernel_size   

 

,@@langid   

 

,@@language  

 

,@@localstate   

 

,@@lock_timeout  

 

,@@max_connections   

 

,@@max_precision

 

,@@maxcharlen   

 

,@@maxgroupid   

 

,@@maxpagesize   

 

,@@maxspid   

 

,@@maxsuid   

 

,@@maxuserid

 

,@@mempool_addr  

 

,@@min_poolsize  

 

,@@mingroupid   

 

,@@minspid   

 

,@@minsuid   

 

,@@minuserid

 

,@@monitors_active   

 

,@@msgheader

 

,@@msgid

 

,@@msgproperties

 

,@@msgreplytoinfo   

 

,@@msgschema

 

,@@msgstatus

 

,@@msgstatusinfo

 

,@@msgtimestamp  

 

,@@ncharsize

 

,@@nestlevel

 

,@@nodeid   

 

,@@options   

 

,@@pack_received

 

,@@pack_sent

 

,@@packet_errors

 

,@@pagesize  

 

,@@parallel_degree   

 

,@@probesuid

 

,@@procid   

 

,@@recovery_state   

 

,@@remotestate   

 

,@@rowcount  

 

,@@scan_parallel_degree  

 

,@@servername   

 

,@@shmem_flags   

 

,@@spid  

 

,@@sqlstatus

 

,@@stringsize   

 

,@@tempdbid  

 

,@@textcolid

 

,@@textdbid  

 

,@@textobjid

 

,@@textptr   

 

,@@textptr_parameters   

 

,@@textsize  

 

,@@textts   

 

,@@thresh_hysteresis

 

,@@timeticks

 

,@@total_errors  

 

,@@total_read   

 

,@@total_write   

 

,@@tranchained   

 

,@@trancount

 

,@@transactional_rpc

 

,@@transtate

 

,@@unicharsize   

 

,@@version   

 

,@@version_as_integer   

 

,@@version_number   

如何解决下载的CHM文件无法显示网页问题 
问题症状:打开CHM文件,左边目录齐全,可右边边框里却是无法显示网页。

解决方法:
方法一:修改注册表
1)新建一个文本文件
2)添加如下内容:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000003
另存为HTMLHelp.reg(或其它名称,只要是reg格式就行)
3)双击刚刚新建的reg文件,将它导入注册表,OK,问题搞定
不过这种方法不安全,因为它将将浏览区域等级调整为3了,存在安全隐患,故不推荐。

方法二:查找目录名称是否有问题,目录名称中有 "#" 字符,去掉有 CHM 文件就显示正常了。

方法三:有时候如果CHM是中文也会打不开,改成英文字符试验下。

方法四.:双击此 .chm 文件, 在“打开文件安全警告”对话框,单击以清除“打开此文件前始终询问”复选框。

方法五: 右键单击该 CHM 文件,然后单击“属性”, 单击“解除锁定”,. 双击此 .chm 文件以打开此文件。

本人遇到的问题是部分CHM文件不能打开,利用方法五,顺利解决。

小知识: CHM 意为 Compiled HTML。以CHM为扩展名的文件图标通常为一个带问号的文档图标,表示帮助文档,是 Microsoft 自 Windows 98 以来提供的一种帮助文档格式的文件,用于替代 Windows 95 下的 HLP(Help) 文件。Microsoft 自 Windows 98 以来,操作系统中都自带解释器(打开 CHM 文件的工具),即 Windows 安装目录下的 HH.EXE。CHM 文件可以通过官方免费提供了 HTML Help Workshop 生成,它的源文件是 HTML 文件。现在网络上很多电子书籍都被制作成 CHM 格式。
====================================================================

=====================================================================================
方法 1
1. 双击此 .chm 文件。
2. 在“打开文件安全警告”对话框,单击以清除“打开此文件前始终询问”复选框。
3. 单击“打开”。

方法 2
1. 右键单击该 CHM 文件,然后单击“属性”。
2. 单击“取消阻止”。
3. 双击此 .chm 文件以打开此文件。
chm文件无法打开问题的解决

刚从家回来,重新安装了系统,发现原来可以正常打开的chm文件无法打开了,自己试着解决了,发出来共享一下。

系统版本 xp sp2专业版本。
问题:chm文件打开无法显示

“CHM格式的文件无法显示,而且windows 2000上正常,windows xp上打开后显示无法找到页面。

在某些CHM文件中可能会使用到InfoTech协议,而它包含3种协议:ms-its 、its、mk:@msitstore 。利用这些协议,恶意攻击者或者恶意代码将可能导致帮助产生溢出漏洞,从而控制计算机。而MS最新公布的安全更新MS05-026 KB896358修正了这一情况,并屏蔽了远程链接,这就导致了使用了远程链接的一些CHM页面开启失败。趋势安全站点对此漏洞作出了如下描述:

这个安全问题来自于早先公布的微软HTML Help漏洞。HTML Help是Windows平台上的标准帮助系统。作者可以使用它为程序或者多媒体主题或者Web站点创建在线的帮助文件。
由于HTML Help并不会完全校验输入数据的特性,导致这一点可能被利用。一个特殊的CHM文件可以导致帮助系统溢出,这个溢出如果被利用,就可以用于执行恶意代码。
这样的恶意CHM文件可以使用“ms-its”协议,通过IE开启。开启后的CHM文件不再需要用户的参与,就能够自动执行恶意CHM文件和附随的代码。 “ms-its”协议是InfoTech 协议的一部分,该协议能够 为ITSS.DLL或者微软InfoTech Storage System Library所执行。当然,这些恶意的程序无法靠自身传播,仍然需要用户在特定的位置,通过IE和“ms-its”协议访问恶意的CHM文件。
这种情况一旦发生,如果受影响的用户当前登录身份是管理员,远程代码执行的漏洞可以允许恶意用户或者恶意软件,获得受影响系统的完全控制权限。
从而这个恶意用户或者恶意程序得以在此系统上执行代码,并使用完全控制权限安装或者运行程序,并能够察看或者编辑数据。因此,这个漏洞同样也能够被用于复制。

受影响的系统:

Microsoft Windows 2000 Service Pack 3
Microsoft Windows 2000 Service Pack 4
Microsoft Windows 98
Microsoft Windows 98 Second Edition
Microsoft Windows Millennium Edition
Microsoft Windows Server 2003
Microsoft Windows XP Service Pack 1
Microsoft Windows XP Service Pack 2
Microsoft Windows Server 2003 for Itanium-based Systems
Microsoft Windows XP -Bit Edition Service Pack 1 (Itanium)
Microsoft Windows XP -Bit Edition Version 2003 (Itanium)
Microsoft Windows XP Professional x Edition
Microsoft Windows Server 2003 Service Pack 1
Microsoft Windows Server 2003 with SP1 for Itanium-based Systems
Microsoft Windows Server 2003 x Edition

解决方法如下:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"UrlAllowList"="\\\helpfiles\;file://\\\helpfiles "

需要提到一点的是,默认情况下,子健1.x 下可能并不存在 ItssRestrictions子健,您需要手动创建它,然后在其下创建字符串键值 UrlAllowList 。

来源:http://hi.baidu.com/ggyy667/blog/item/ed8cf9d49ab93902a08bb7cd.html/cmtid/73ae8a197c3dd176dbb4bd57

sybase在自动管理方面真的很弱很弱,不管windows还是unix平台上都是一样的不好用。不过,我现在都已经习惯了sybase的不好用。

很早以前自己也想到了如何在sybase ase内部来实现自动启动ase服务器。今天看到echoaix写的这篇文档,和我的思路差不多。自己正好也懒得写了。

通过ASE本身重新启动ASE

ase本身没有重启命令,如何让ASE自己重启是一个问题,记得当时负责将近100个ase server,分布在全国各地,服务器还大多是PC server,windows环境,管理员口令经常不知道,远程登陆也很慢,可是当时ase版本较低,改个参数有的就要重启
要ase重启并不困难,还是要调用系统的东西,说白了使用的工具就是ase的扩展存储过程的xp_cmdshell,熟悉mssql server的人都知道xp_cmdshell,其实mssql server最早就是sybase买给微软的源码,不多说,看看如何实现吧。

前提:
1 XP server,一般windows上的ase创建都会带着。
2 XP server的条号(interfaces和sql.ini)
3 XP server在sysservers中的记录
select upper(@@servername)+'_XP',假定结果为TEST_XP,即为需要添加的XP sever信息 注意一定要全部大写,要不到时候回报”XP Server must be up for ESP to execute“ .
sp_addserver TEST_XP,NULL  添加XP server
4 "xp_cmdshell context"配置参数的设置,此参数为使用 xp_cmdshell 系统 ESP 执行的操作系统命令设置安全性环境,缺省值为1。如果 xp_cmdshell context 设置为 1,在Windows NT下,那么只有当 Adaptive Server 的登录用户的用户名是有效的 Windows NT 用户名(在运行 Adaptive Server 的系统上具有 Windows NT 系统管理权限)时,xp_cmdshell 才能成功。设置为0,sa就可执行。
sp_configure "xp_cmdshell context",0
5 调度服务运行 (不运行也没关系,用xp_cmdshell启动)

思路:
ase在windows上大多都是以服务的形式存在,服务名固定为SYBSQL_@@servername(假定为SYBSQL_test),停止ase 可以用net shop SYBSQL_test,启动ase用net start SYBSQL_test,当然也可以在isql中shutdown停ase和直接执行ase启动bat文件来启动ase。xp_cmdshell可以用来执行系统命令,可以创建一个关闭和启动ase的bat文件,然后再用xp_cmdshell把这个bat写入调度任务中就可以完成ase重启。
declare @todo varchar(250)
select @todo = "echo net stop SYBSQL_" + @@servername + " > c:\restartase.bat" + "&" +  "echo net start SYBSQL_" + @@servername + " >> c:\restartase.bat"
exec xp_cmdshell @todo,no_output \\不要输出结果
go
这样在c:\生成一个restartase.bat文件,内容为net shop SYBSQL_test和net start SYBSQL_test。

declare @todo varchar(250)
select @todo = 'at ' + convert(char(5),dateadd(ss, 120, getdate()),8) + ' cmd /c "c:\restartase.bat"' \\在两分钟之后重启ase
exec xp_cmdshell @todo,no_output
go

总结:
原理很简单,最好在执行之前checkpoint,commit,总之还是shutdown然后登陆系统重启好。
UNIX上的应该差不多,用的较少,就先不写了。

可以转载 请注明作者 echoaix

应一个朋友的要求,贴上收藏的SQL常用分页的办法~~

表中主键必须为标识列,[ID] int IDENTITY (1,1)

1.分页方案一:(利用Not In和SELECT TOP分页)

语句形式: 
SELECT TOP 页记录数量 *
FROM 表名
WHERE (ID NOT IN
  (SELECT TOP (每页行数*(页数-1)) ID
  FROM 表名
  ORDER BY ID))
  ORDER BY ID
//自己还可以加上一些查询条件

例:
select top 2 *
from Sys_Material_Type
where (MT_ID not in
    (select top (2*(3-1)) MT_ID from Sys_Material_Type  order by MT_ID))
order by MT_ID

2.分页方案二:(利用ID大于多少和SELECT TOP分页)

语句形式:
SELECT TOP 每页记录数量 *
FROM 表名
WHERE (ID >
          (SELECT MAX(id)
    FROM (SELECT TOP 每页行数*页数 id  FROM 表
          ORDER BY id) AS T)
      )
ORDER BY ID

例:
SELECT TOP 2 *
FROM Sys_Material_Type
WHERE (MT_ID >
          (SELECT MAX(MT_ID)
          FROM (SELECT TOP (2*(3-1)) MT_ID
                FROM Sys_Material_Type
                ORDER BY MT_ID) AS T))
ORDER BY MT_ID

3.分页方案三:(利用SQL的游标存储过程分页)
create  procedure SqlPager
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

4.总结:
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)  效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用