Web アプリをインストールする Web セットアップ プロジェクトがあります。カスタム アクションで、SQL スクリプトを実行してデータベースを構築しています。
シンプルで、ほとんどが MS のサンプル コードです。正常に動作します。
private void ExecuteSql(string serverName, string dbName, string Sql)
{
System.Data.SqlClient.SqlConnection masterConnection = new System.Data.SqlClient.SqlConnection();
masterConnection.ConnectionString = "Server=" + serverName + "; Database=" + dbName + ";Integrated Security=SSPI";
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, masterConnection);
Command.Connection.Open();
Command.Connection.ChangeDatabase(dbName);
try
{
Command.ExecuteNonQuery();
}
finally
{
Command.Connection.Close();
}
}
問題は、SQL Server に送信されるユーザーが「AMBER\corwin」ではなく「AMBER\CHAOS$」のように「DOMAIN\MACHINENAME$」であることです。
SQL Server のログインとして "AMBER\CHAOS$" を追加し、ユーザーに十分な権限を与えると、すべて正常に動作します。それは最終環境では不可能です。
では、Web セットアップを "AMBER\CHAOS$" ではなく "AMBER\corwin" として SQL サーバーに接続するには、どうすればよいでしょうか?