select @aa=@@servername
得到本数据库的服务名称。
sp_addserver upper(@aa)+"_XP",null
在系统的sysservers表中,将注册此server信息,但此时还无法使用。
修改系统参数:
sp_configure "xp_cmdshell context",0
将xp_cmdshell context由1置为0,允许xp_cmdshell调用。
XP Server不需手工启动,第一次调用xp_cmdshell时将启动xp server服务。
若系统变量的start mail session置位时,xp server在data server启动时将一并启动。
在系统的interfaces或sql.ini(win平台下),添加相应server的注册信息。
XXXX_XP master ------------------ query --------------------
端口自设。
此时,在isql或sqladvantg中调用exec sybsystemprocs..xp_cmdshell “ls” 即可正常返回。
以上在Aix 5.3下测试成功。
后发现有次调用命令时失败:
User access denied. Failed to change the user context."
然而xp_cmdshell context值正常,查看服务状态均正常,sybsystemprocs中的扩展存储过程xmd_cmdshell也增加了相应用户的执行权限。
后重启数据库服务,发现起不来,报无法读取servername.cfg文件错误,查看该 文件,发现其为root /system权限用户。修改为sybase:sybase后,数据库启动,xp_cmdshell也正常。
看来可能跟servername.cfg文件属性有关系,难道sp_configure中的变量都在servername.cfg中定义?
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/256.html