2016-04-13 21 views
0

SQLHelperクラスを使用して更新ストアドプロシージャを実行する際に問題があります。 SQLHelper.ExecuteNonQueryのパラメータとしてSqlTransactionを使用しています。SQLException:SQLHelper ExecuteNonQueryを使用しているときにユーザー「xx」のログインに失敗しました

これは私のコードです:それはSQLHelper.csで、このコードに達したときに

// Create SQLTransaction 
public bool Delete() 
{ 
    SqlConnection oConn = tsoDAL.OpenConnection(); 
    SqlTransaction oTrans = oConn.BeginTransaction(); 

    try 
    { 
     if (Delete(oTrans)) 
     { 
      oTrans.Commit(); 
      return true; 
     } 
     else 
     { 
      oTrans.Rollback(); 
      return false; 
     } 
    } 
    catch (SqlException ex) 
    { 
     oTrans.Rollback(); 
     throw (ex); 
    } 
    finally 
    { 
     tsoDAL.CloseConnection(ref oConn); 
    } 
} 

// Call SQLHelper 
public bool Delete(SqlTransaction p_oTrans) 
{ 
     try 
     { 
      SqlParameter[] oParams = new SqlParameter[1]; 
      oParams[0] = new SqlParameter("@p_iSalesSoId", m_iSalesSoId); 

      int iRowAffected = SqlHelper.ExecuteNonQuery(p_oTrans, "uspTSO_DeleteSalesOrder",oParams); 

      return iRowAffected >= 0; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
} 

コードは、エラーがスローされます示しています

private static SqlParameter[] DiscoverSpParameterSet(string connectionString, string spName, bool includeReturnValueParameter) 
{ 
     using (SqlConnection cn = new SqlConnection(connectionString)) 
     using (SqlCommand cmd = new SqlCommand(spName,cn)) 
     { 
      cn.Open(); // error happens here 
      cmd.CommandType = CommandType.StoredProcedure; 

      SqlCommandBuilder.DeriveParameters(cmd); 

      if (!includeReturnValueParameter) 
      { 
       cmd.Parameters.RemoveAt(0); 
      } 

      SqlParameter[] discoveredParameters = new SqlParameter[cmd.Parameters.Count];; 

      cmd.Parameters.CopyTo(discoveredParameters, 0); 

      return discoveredParameters; 
     } 
    } 

エラーは、ログインユーザーのために

失敗されます'sa'。

私はこの問題の解決策を探していましたが、私の問題を解決できる解決策はまだありませんでした。私はあなたの助けが必要

は、私は問題をトレース持っており、実際には問題はのSqlTransactionのConnectionStringがパスワードを失っているあなたに

+0

パスワードは正しいですか? 'sa'ユーザはログインできますか? –

+0

データベースに対する正しい権限をユーザに与えますか? – Flatlineato

+0

@PatrickHofmanはい、ユーザーはDBMS –

答えて

0

に感謝します。だから私の接続ストリングに私は Persist Security Info=true;と私の問題を解決することを追加しました。ありがとうございます

+0

接続文字列がパスワードを失うことはありません。設定ファイルから読み込む代わりに*他のクラスの*から接続文字列をコピーしましたか?これは、 'Persist Security Info = true'が何らかの影響を与える唯一のケースです。 –

+0

@PanagiotisKanavos私は設定ファイルからそれを読む –

関連する問題