ユーザー'(null)'のログインに失敗しました。というエラーが発生した場合の対処法

ASP.NETで、IISSQL Serverが異なるマシンの時にADO.NET の接続文字列を以下の様に記述して、

Dim sqlConn As New SqlConnection
sqlConn.ConnectionString = "packet size=xxxx;integrated security=SSPI;data source=xxxx;persist security info=False;initial catalog=xxxx"

SQL Server に対して Windows 認証で接続しようとした場合に発生するエラーについてのお話です。
仕事でかなり長時間嵌ったので、ノウハウとして記録します。
■ 以下の初期設定時
IIS:    デフォルト
ASP.NET:  特に記述無し
ADO.NET:  Windows 認証で接続
SQL ServerWindows 認証モードで起動

以上の設定時は、表題のエラーが表示されます。

ユーザー '(null)' のログインに失敗しました。
理由 : SQL Server の信頼関係接続に関連付けられていないため。
(null) という表現は、単に認証が失敗して「不明なユーザー」
という意味で使われているそうです。

Windows 認証に失敗する理由
デフォルトでは、ASP.NET のワーカープロセスの実行アカウント
SQL Server への Windows ログインを試みます。
このアカウントは、IIS のバージョンによって異なり、

IIS 5.0: ASPNET
IIS 6.0: NT AUTHORITY\Network Service

です。

Windows 認証に失敗する理由は、「ASPNET」と「Network Service」
アカウントのパスワードが、自動的に管理されており、マシンが異なる
と違うものが設定されるためです。
従って、SQL Server 側に同じユーザーが存在したとしても、パスワードが異なることになり、Windows 認証が失敗することになります。

・エラーの回避方法
IIS 5.0 の場合
IIS 5.0 では以下の方法で行いました。

1. IISSQL Server 上に同じユーザー名/パスワードのアカウントを作成する。
2. Web.Config ファイルで偽装(impersonate)を有効(true)に設定し、1 で作成したユーザー、パスワードを userName、password に指定する。

例.

3. 1 で作成したユーザーに NTFS アクセス権の「読み取り」を付与する。