Posted in サーバ運用 on 03/11/2010 12:10 pm by nukesaku
いつの間にかサーバの空き容量が20%を切っててびっくり。
調べたらpagefile.sysとhiberfil.sysだけで20GB近く食ってる。ページングファイルは別としてもハイバネーションはいらんだろ。サーバーをサスペンド状態にしておく運用ってなにさ。
コントロールパネル内にある電源オプションから変更できるのかとおもいきや、実はコマンドラインで設定する必要があるとのこと。Vista以降そうなったらしいのだけれど、そうだったかなあ。
powercfg.exe /hibernate off で無効
powercfg.exe /hibernate on で有効
いつもどおりマイクロソフトの仕様です。
Windows を実行しているコンピューター上で休止状態を無効にする方法および再度有効にする方法
http://support.microsoft.com/kb/920730/ja
- [スタート] ボタンをクリックし、[検索の開始] ボックスに「cmd」と入力します。
- 検索結果の一覧で、[cmd] を右クリックし、[管理者として実行] をクリックします。
- ユーザー アカウント制御からメッセージが表示される場合は、[続行] をクリックします。
- コマンド プロンプトで、「powercfg.exe /hibernate off」と入力します。
- 「exit」と入力し、Enter キーを押します。
念のためサーバは再起動させました。必要なかったかもしれないけれど、念のため。
Posted in アプリ開発, サーバ運用 on 03/05/2010 01:52 pm by nukesaku
結論から言うとUNC (\\サーバ名\フォルダ名)でアクセスしなさい、という事です。
もくろんでいたのは、別システムがsambaの共有ディレクトリ上に定期的に吐きだすテキストデータを、SSISパッケージ化したタスクで取得&データベースに取り込むというシナリオでした。その際にsambaの共有ディレクトリをQ:ドライブにマップして「Q:\hogehoge\Datafile.txt」という形式でアクセスしてやれと。
ところがSSISタスクを作成し手動で実行すると問題なく動作するのに、SQL Serverエージェントの定期ジョブに登録&実行するとエラーで停止してしまうんです。その際に表示されるエラーはこんな感じで、なんというか、決して親切ではないですね。
開始: xx:xx:xx
エラー: 20xx-xx-xx xx:xx:xx.xx
コード: 0xC002F304
ソース: ファイル システム タスク ファイル システム タスク
説明: エラーが次のエラー メッセージで発生しました: “パスの一部が見つかりません。”。 エラー終了
DTExec: パッケージの実行から返されました DTSER_FAILURE (1)。
試行錯誤の末、ローカル上に置いたファイルであれば問題ない事が判明。ネットワーク経由でのファイルアクセスが原因だという事になり、アクセス権限やらSSISパッケージのProtectionLevelの変更やら、いろいろ試したけど全部ダメ。
結局ネットワークドライブがそもそも使えねんじゃね?という結論にたどり着きました。
Windows Server 2000の関連資料としてこんな記述を見つけましたが、Windows Server 2008でも同じ現象が起きます。
ネットワーク ドライブの削除、再利用ができない
http://support.microsoft.com/kb/417903/ja
上記資料の「原因」の欄にある「SMB (Server Message Block)セッションは、ログオンとユーザー アカウント毎に管理されます。」というのがすべてを物語っています。つまりドライブレターの割り当ては、アカウント固有というわけではなくアカウントかつそのセッション固有のものである、と。
探してみたら同じような事しようとしてハマった人を発見。
フォーラムとはいえ、回答者によって「できる」「できない」で真っ二つに分かれているのがなんとも。
今回の件でいえば「ちゃっぴ」さんが正解です。
ネットワークドライブへのバックアップ
http://social.msdn.microsoft.com/Forums/ja-JP/sqlserverja/thread/d81f3dbc-9235-45e4-9743-2f854e5647d9