Windows サービス アプリケーションで接続文字列を定義する際に問題があります。SQL サーバーと Windows サービスは異なるドメインにあり、それが問題です。ただし、このパラメーターを使用してターミナルで runas.exe を使用しても問題はないため、これが可能であることはわかっています。
%windir%\system32\runas.exe /noprofile /netonly /user:DOMAIN1\%USERNAME% "ssms -nosplash -S SQLServerName -E"
したがって、問題は接続文字列にあるはずです。同じ方法でサーバーにアクセスするように接続文字列を変更するにはどうすればよいですか? 私の接続文字列はこれでライトに見えます:
<connectionStrings>
<add name="MyEntities" connectionString="metadata=res://*/DataAccess.MyDatabase.csdl|res://*/DataAccess.MyDatabase.ssdl|res://*/DataAccess.MyDatabase.msl;
provider=System.Data.SqlClient;provider connection string="data source=SQLServerName;
initial catalog=MyDatabase;Trusted_Connection=yes;User Id=DOMAIN1\USERNAME;Password=*****;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
アップデート
runas.exe コマンドを正確に複製することはできないようです。podiluska が説明したように、なりすましを使用しようとしました。ただし、これは、ユーザーが現在のドメインで実行できる場合にのみ機能します。私の場合、そのユーザーは現在のドメインにログオンできないため、データベースに接続するときにWindows資格情報をパラメーターとして送信したいと思います。これが不可能であることを誰かが確認できますか?