セキュリティの壁
2001年2月15日 目覚ましの25分前に起きる
朝ご飯の準備をしていないので何も食べず。
昨日書いてなかった日記を書く。
う????。沈没モード続行中。
会社への行きしなにコンビニに寄って
朝ご飯と昼ご飯の確保。
朝ご飯は揚げぱんとサンドイッチ。
今日も仕事C。
以前、SQL Server の Job で Excel File を
更新するというのを作っていたが、うまく動いていなかった。
で、それを動くようにしようとする。
Job からシェルを介して VBS の Script 実行しているのだが、
どうしてもエラーが発生して動かない。
File にエラーの内容を書き出してそのログを見ると
「424 オブジェクトがありません」というものだった。
で、Excel を再インストールしたりとかして調べたが、
状況はかわらず。
マニュアルとかを見ていると、SQL Server の Job の種類に
「アクティブスクリプトの実行」ってのがあることが判明。
わざわざ シェルを介して WSH を使わなくても VBS が使えるらしい。
知らなかった(^^;
で、CreateObject で Excel の Ojbect を生成しようとしたら
「70 書き込みできません」と出た。う???。違うエラー?
お昼は「ウィダーインゼリー」と「北海道チーズ蒸しケーキ」。
午後になって、エラー424番について調べたら、
原因がいろいろあると書いてあって、その一例に
VBS で CreateObject の返り値を Set 文で受け取ってない
場合ってのがあった。Set 文はちゃんと書いてあったが、
その時に CreateObject した後に
プロパティの設定をした文が入って
その後にエラーがある場合にログにエラーの内容を
書き出すコードを入れていた。
そのプロパティの設定の文をエラー処理の後ろになにげなく移した。
その状態で VBS のスクリプトを SQL Server の Job から 動かしたら
ログに書き出されるエラーが「70 書き込みできません。」に変わった。
当初、なぜか分からなかった。が・・・
*******************************************
On Error Resume Next
Set appXLS = Factory.CreateObject("Excel.Application") <- (1)
appXLS.DisplayAlart = False <- (2)
IF (Err.Num 0) THEN
ts.Write Err.Desc
・・・
*******************************************
(1) でエラー70 が発生し、appXLS の生成失敗し、
で、appXLS が生成されてないから (2) で
エラー424 「オブジェクトが無い」が発生し、
後のエラーがログに書き出されていたのである。
あう?????おおぼけ。
で、問題はエラー70「書き込みできません」に絞られた。
このエラー70、日本語では「書き込みできません」と出るが、
英語だと「Permission Denied」、つまり「権限が無い」で、
書き込み以外の権限に引っかかる場合でもでるようである。
・・・誰がこんな日本語メッセージを用意したんだ。
意味ちゃうやん。
で、試しにジョブ実行のプロキシユーザーの
SQLAgentcmdExec にAdmin権限を与えてみて試したが、駄目だった。
DTS で Shell Command を実行するタスクを用意し、
それをジョブ登録して試したが、やっぱりだめ。(当然だって。)
う?ん、前は実行できてたような気がしたのは気のせいかな?。
で、結局手詰まりであきらめた。
さて、Job で更新できなくても、
資料のための Excel File の方は作らなくてはいけないので、
サーバー側に View を用意し、
Excel File 側でピボットテーブルとデータテーブルを
使って参照するものを作った。
で、今日はおしまい。
先に上司が行っている飲み屋に行く。
日本酒を4合ほど飲んだ。
気分的にはまだ沈没モード。
家に帰ってまた「かえるにょ国にょアリス」をする。
で、日記も書かずに寝る。
明日は休みを取っている。
父の陰謀(おい)に付き合わないと・・・。
=============
2012年11月1日追記
「iis 7 CreateObject excel 70 書き込みできません」でこの日記へのアクセスがあった。。
技術的な問題だけなく、ライセンス的な問題もあるからその道をすすむよりさっさと
Spreadsheet Gear 利用することを勧める。
コードの互換性と配置の容易性と圧倒的な速度とで絶対幸せになれる。
それ以外なら一応 OpenXML SDK とかで頑張るってのもあるが。
Office 2013時代になると on-premise版の Office Web Apps がでるようだから
また状況が変わってくるようなのだが。
朝ご飯の準備をしていないので何も食べず。
昨日書いてなかった日記を書く。
う????。沈没モード続行中。
会社への行きしなにコンビニに寄って
朝ご飯と昼ご飯の確保。
朝ご飯は揚げぱんとサンドイッチ。
今日も仕事C。
以前、SQL Server の Job で Excel File を
更新するというのを作っていたが、うまく動いていなかった。
で、それを動くようにしようとする。
Job からシェルを介して VBS の Script 実行しているのだが、
どうしてもエラーが発生して動かない。
File にエラーの内容を書き出してそのログを見ると
「424 オブジェクトがありません」というものだった。
で、Excel を再インストールしたりとかして調べたが、
状況はかわらず。
マニュアルとかを見ていると、SQL Server の Job の種類に
「アクティブスクリプトの実行」ってのがあることが判明。
わざわざ シェルを介して WSH を使わなくても VBS が使えるらしい。
知らなかった(^^;
で、CreateObject で Excel の Ojbect を生成しようとしたら
「70 書き込みできません」と出た。う???。違うエラー?
お昼は「ウィダーインゼリー」と「北海道チーズ蒸しケーキ」。
午後になって、エラー424番について調べたら、
原因がいろいろあると書いてあって、その一例に
VBS で CreateObject の返り値を Set 文で受け取ってない
場合ってのがあった。Set 文はちゃんと書いてあったが、
その時に CreateObject した後に
プロパティの設定をした文が入って
その後にエラーがある場合にログにエラーの内容を
書き出すコードを入れていた。
そのプロパティの設定の文をエラー処理の後ろになにげなく移した。
その状態で VBS のスクリプトを SQL Server の Job から 動かしたら
ログに書き出されるエラーが「70 書き込みできません。」に変わった。
当初、なぜか分からなかった。が・・・
*******************************************
On Error Resume Next
Set appXLS = Factory.CreateObject("Excel.Application") <- (1)
appXLS.DisplayAlart = False <- (2)
IF (Err.Num 0) THEN
ts.Write Err.Desc
・・・
*******************************************
(1) でエラー70 が発生し、appXLS の生成失敗し、
で、appXLS が生成されてないから (2) で
エラー424 「オブジェクトが無い」が発生し、
後のエラーがログに書き出されていたのである。
あう?????おおぼけ。
で、問題はエラー70「書き込みできません」に絞られた。
このエラー70、日本語では「書き込みできません」と出るが、
英語だと「Permission Denied」、つまり「権限が無い」で、
書き込み以外の権限に引っかかる場合でもでるようである。
・・・誰がこんな日本語メッセージを用意したんだ。
意味ちゃうやん。
で、試しにジョブ実行のプロキシユーザーの
SQLAgentcmdExec にAdmin権限を与えてみて試したが、駄目だった。
DTS で Shell Command を実行するタスクを用意し、
それをジョブ登録して試したが、やっぱりだめ。(当然だって。)
う?ん、前は実行できてたような気がしたのは気のせいかな?。
で、結局手詰まりであきらめた。
さて、Job で更新できなくても、
資料のための Excel File の方は作らなくてはいけないので、
サーバー側に View を用意し、
Excel File 側でピボットテーブルとデータテーブルを
使って参照するものを作った。
で、今日はおしまい。
先に上司が行っている飲み屋に行く。
日本酒を4合ほど飲んだ。
気分的にはまだ沈没モード。
家に帰ってまた「かえるにょ国にょアリス」をする。
で、日記も書かずに寝る。
明日は休みを取っている。
父の陰謀(おい)に付き合わないと・・・。
=============
2012年11月1日追記
「iis 7 CreateObject excel 70 書き込みできません」でこの日記へのアクセスがあった。。
技術的な問題だけなく、ライセンス的な問題もあるからその道をすすむよりさっさと
Spreadsheet Gear 利用することを勧める。
コードの互換性と配置の容易性と圧倒的な速度とで絶対幸せになれる。
それ以外なら一応 OpenXML SDK とかで頑張るってのもあるが。
Office 2013時代になると on-premise版の Office Web Apps がでるようだから
また状況が変わってくるようなのだが。
コメント