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がパスワードを失っているあなたに
パスワードは正しいですか? 'sa'ユーザはログインできますか? –
データベースに対する正しい権限をユーザに与えますか? – Flatlineato
@PatrickHofmanはい、ユーザーはDBMS –