私はWinformsで構築されたC#アプリケーションを開発中です。アプリケーションはSQLデータベースに接続し、データを取得してからMySQLデータベースに挿入します。アプリケーションは完全に2つの別々の環境で動作しますが、展開して実行しようとすると、認証エラーが発生します。エラーは、一致しないユーザー名とパスワードに関連しています。奇妙なことは、返されるユーザー名は接続文字列のユーザー名ではなく、ユーザーのActive Directoryログインの詳細であり、アプリケーションに格納されているユーザー名ではないということです。Winフォーム/ SQL Server認証エラー
これはどうなるのか混乱しており、トラブルシューティングの支援に感謝します。 Windows認証よりもSQL認証を強制する方法はありますか?それも問題ですか?
私の接続文字列は、フォーム上の入力をオフに基づいており、これらの入力は、彼らが空白でないかどうかを確認するために検証され、その後、接続をテストするために、このメソッドに渡されます。
// test the inputs as a connection string - can we connect to the SQL DB?
public bool validateSQLconnection(string host, string user, string db, string pass)
{
bool connection = false;
string connstring = "Database=" + db + ";Server=" + host + ";Password=" + pass + ";User id=" + user + ";Trusted_Connection = yes;connection timeout=5";
SqlConnection myConnection = new SqlConnection(connstring);
try
{
myConnection.Open();
connection = true;
var response = MessageBox.Show("Connected to SQL DB:" + db + " Successfully");
if (response.ToString() == "OK")
{
myConnection.Close();
SFConnectionString = connstring;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return connection;
}
接続文字列がそのenvで変更されている可能性があります。 App.configとmachine.configの違いを追跡する必要があります。接続の試行前に使用した接続文字列を印刷してログに記録して、それが確実であると確かめます。 –
実際にあなたの質問に接続文字列(実際のユーザー名とパスワードは省略)とデバッグを表示して、正しい接続文字列がアプリケーションで利用されることを確認する必要があります。 – mason
接続文字列でユーザー名とパスワードを使用し、Windows認証ではない場合はSQL認証です。 Windows認証を使用する場合は、接続文字列にWindows Authenticantionを受け入れるように構成する必要があります。 Active Directoryユーザーグループがある場合は、このグループをSQLとDBのセキュリティに追加します。 – M84