- 論壇徽章:
- 0
|
由于有一段時(shí)間沒有配置xp_server了,前不久在配置一臺(tái)測試機(jī)的時(shí)候,配置過程很簡單,只需在圖形界面下執(zhí)行asecfg就可以按界面的提示進(jìn)行了,這部分相信一般大家都不會(huì)出錯(cuò)!于是,我也以為輕松搞定,在 isql中執(zhí)行xp_cmdshell 'date'以測試是否可行,結(jié)果卻報(bào)11018 ("XP Server must be up for ESP to execute" 錯(cuò)誤!但檢查interfaces文件卻并沒有發(fā)現(xiàn)什么錯(cuò)誤,sp_helpserver也可以看到xp_server相關(guān)信息,于是進(jìn)一步查找相關(guān)資料,結(jié)果錯(cuò)誤原因可能由此造成:Error 11018 is raised when Adaptive Server is unable to contact XPServer to execute an ESP. Check that your interfaces file (UNIX) or sql.ini file (NT) has the correct entry for XP Server; the XP Server name must be in all upper case letters and have the format SERVER_NAME_XP ,此時(shí)才恍然大悟,原來我得測試庫名是dbtest為小寫,而xp server名字為dbtest_XP名字不符合要求,其實(shí)這個(gè)問題以前也發(fā)現(xiàn)過,但是時(shí)間長了,就給忘了!所以有些小細(xì)節(jié)如果不注意的話,可能會(huì)出現(xiàn)讓你摸不著頭腦的問題。
接下來的就是調(diào)整服務(wù)名了,由于是測試庫,不太擔(dān)心數(shù)據(jù)的丟失,但是,再做之前,還是按正規(guī)步驟進(jìn)行,養(yǎng)成好的習(xí)慣!
1.1、備份數(shù)據(jù)庫
use master
go
dump database master to '/home/backup/master_dump.dat'
go
dump database jfk to '/home/backup/jfk_dump.dat' with truncate_only
go
1.2、修改interfaces文件,將相關(guān)服務(wù)名都改為大寫!
1.3、重起數(shù)據(jù)庫
數(shù)據(jù)庫啟動(dòng)正常,但是執(zhí)行xp_cmdshell結(jié)果還是報(bào)錯(cuò)
這時(shí)才發(fā)現(xiàn)只改interfaces文件無效,在master庫的表sysservers中的信息并未發(fā)生變化。(其實(shí)此時(shí)只需修改該表的服務(wù)名的大小寫就可以了,但是我卻走了一步彎路,最后卻走回來了,請(qǐng)看下面的操作)!
于是我想,干脆重建master庫算了。于是進(jìn)行如下操作!
2.1、備份/home/dev/master.dat ,/home/dev/jfk.dat等數(shù)據(jù)文件
2.2、刪除/home/dev/master.dat,/home/dev/sysproc.dat文件
2.3、使用asecfg重建server,這時(shí)所有服務(wù)名都采用大寫!
注意設(shè)備的路徑和大小要和以前的一致,或者略小于以前也可以
2.4、重起數(shù)據(jù)庫
一切著正常
但這時(shí)測試數(shù)據(jù)庫找不到了,于是關(guān)閉數(shù)據(jù)庫,用2.1中的備份maser.dat覆蓋現(xiàn)有的master.dat再重起,可以找到數(shù)據(jù)庫,但執(zhí)行xp_cmdshell還是一樣的故障,以下的操作就回到1.3的解決步驟了,那就是說如果涉及到更改數(shù)據(jù)庫服務(wù)名,則需要修改master.sysservers中的信息和interfaces文件中的信息。
當(dāng)然修改前還需執(zhí)行如下操做:
sp_configure 'allow updates', 1
然后:
update sysservers set srvname = 'JFKTEST_XP' where srvid =2
...
...
修改完畢之后重新啟動(dòng)數(shù)據(jù)庫后,再執(zhí)行xp_cmdshell時(shí)還報(bào)錯(cuò)!不過這次的信息不一樣了,這次的xp_server已經(jīng)啟動(dòng),只是需要修改一下數(shù)據(jù)庫參數(shù)了,須錯(cuò)誤信息如下:
User access denied. Failed to change the user context.
sp_configure 'xp_cmdshell context',0
默認(rèn)的是1,不可執(zhí)行操作系統(tǒng)命令!改為0就可以了!
驗(yàn)證一把:
xp_cmdshell 'date'
go
Thu Feb 27 11:13:04 EAT 2003
配置完成!
以上寫的可能有點(diǎn)羅索!歸結(jié)一下有以下幾點(diǎn):
1、使用xp server服務(wù)名要采用合法格式SERVER_NAME_XP
2、要通過 xp_cmdshell調(diào)用系統(tǒng)操作需要打開開關(guān)
sp_configure 'xp_cmdshell context',0 |
|