分散システムとポエム

Windowsのシステムエラー1219の対応策

Windowsでネットワークドライブに接続する際に発生するシステムエラー1219について解決策を探ってみたのでメモしておく。

Windowsでエラー(1219)が発生

問題が起きたのは、クライアント(Windows7 Pro 32bit)からサーバ(Centos 6.5 32bitで動くsamba3.x)へアクセス時。

Windowsのコマンドプロンプトへ次のnet use コマンドを打ち込んでネットワークドライブを割り当て(マウント)をしてみる。

[shell]

net use N: \192.168.0.10share password /USER:user01

[/shell]

通常であれば「コマンドは正常に終了しました」と表示される。また、認証に問題がある場合は「システムエラー5が発生しました。」と表示される。だが、「システムエラー1219が発生しました。」と表示された。

システムエラー1219とは一体何か

エラーメッセージには次のように書かれている。

システム エラー 1219 が発生しました。

同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。

つまり、「コンピュータの1ユーザから1台のサーバへ複数の認証情報(ユーザ名とパスワード)でアクセスしようとしていること」に対するエラーを表している。しかし、現象が起きた時はメッセージに書かれているようにあらかじめnet useコマンドで切断を行っていた。

[shell]

net use N: /DELETE

[/shell]

原因はWindows

切断を行っているのに認証情報が残ってしまうのはWindowsが原因として考えられた。何が原因なのか断言できないが個人的にはWindowsのキャッシュが影響している可能性が考えられた。

@ITの記事にも「smbプロトコルの仕様ではない。クライアント側の制限によるもの。」と書かれていた。

基礎から学ぶWindowsネットワーク:第21回 ファイル共有プロトコルSMB/CIFS(その2) (3/3) – @IT

解決策

調べてみたものの根本的に解決する方法(切断して別の資格情報で再接続)が見つからなかった。見つかった解決策は名前解決で別サーバとして認識させること。

〇lmhostを編集してホスト名を割り当てる(管理者権限が必要)

Windowsにはコンピュータごとにホスト名をIPに対して割り当てられるのでこれを使う。編集の方法は検索すれば出てくる。

〇DNSサーバでホスト名割り当てる

特にコンピュータの台数が多い場合は個々のコンピュータの設定を変更せずに可能。一般の家庭向けルータでDNS機能があるものは少ないと思う。

〇NetBIOSで名前解決してアクセスする

サーバ側で事前に設定が必要。Sambaでファイルサーバを構築しているならsmb.confにnetbios nameで設定可能。UDP/137の解放をすることも忘れずに。

最近のWindowsだとこの現象が起きないからバージョンとかアップデートの兼ね合いもあるのかもしれない。自分でも起きる条件がつかみきれていない昨今。難しい。

“Windowsのシステムエラー1219の対応策” への1件のコメント

  1. 武田 北斗のアバター
    武田 北斗

    接続先のServerでNET FILE Commandを実施して、接続歴があるものを削除するとエラー回避出来るようになりました
    NET FILE ID /CLOSE

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です