2017-08-01 11 views
0

私は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; 
} 
+1

接続文字列がそのenvで変更されている可能性があります。 App.configとmachine.configの違いを追跡する必要があります。接続の試行前に使用した接続文字列を印刷してログに記録して、それが確実であると確かめます。 –

+0

実際にあなたの質問に接続文字列(実際のユーザー名とパスワードは省略)とデバッグを表示して、正しい接続文字列がアプリケーションで利用されることを確認する必要があります。 – mason

+0

接続文字列でユーザー名とパスワードを使用し、Windows認証ではない場合はSQL認証です。 Windows認証を使用する場合は、接続文字列にWindows Authenticantionを受け入れるように構成する必要があります。 Active Directoryユーザーグループがある場合は、このグループをSQLとDBのセキュリティに追加します。 – M84

答えて

0

はこれを試してみてください:

string connstring = "Database=" + db + ";Server=" + host + ";Password=" + pass + ";User id=" + user + ";Integrated Security=false;connection timeout=5"; 
「統合セキュリティ= false」にして

あなたは、接続文字列に接続するためのユーザーを定義し、このlink

希望にこのヘルプを参照してください!

関連する問題