2012-02-09 7 views
0

いくつかのレコードを選択するWindowsサービスがあります。アップデートと同じ接続を使用しているサーバー上で動作しています

using (SqlConnection conn = new SqlConnection(CMS.SettingsProvider.SqlHelperClass.ConnectionString)) 
{ 
    conn.Open(); 
    SqlCommand command = new SqlCommand("SELECT...", conn); 
    SqlDataReader reader = command.ExecuteReader(); 
    if (reader.HasRows) 
    { 
     while (reader.Read()) 
     { 
      <snip> 
      build item IDs to update 
     } 
     UpdateRecords(conn, itemIDs); 
    } 
} 

EDIT

更新機能:それはこのように動作し、

private void UpdateRecords(SqlConnection Connection, List<int> ItemIDs) 
     { 
      SqlCommand command = new SqlCommand("update table...", Connection); 
      command.ExecuteNonQuery(); 
     } 

私はQAサーバでWindowsサービスとしてインストールし、それがレコードを更新しました。運用サーバーでは、レコードを更新していません。ログは更新手順が呼び出されていないことを示します。理由は何でしょうか?

ありがとうございます!

+0

'UpdateRecords'は何ですか? SQLを実行していますか? –

+0

あなたのコードを編集して、何か試してみて、例外メッセージが何であるか教えてください。また、UdateRecords(conn、itemIDs)がメソッドである場合は、そのメソッドのコードを表示してください – MethodMan

+0

Readerからも更新するアイテムIDを作成すると、UpdateRecords内のフィールドに変数を割り当てていることを確認します。 itemIDsリストまたはString ..?それが文字列なら、whileループの中にUpdateRecords(Conn、itemIDs)を入れる必要があります – MethodMan

答えて

0

予防処置

1. SQL Server Profiler 
2. Code debugging using production Database credentials 

サンプルリファレンス

SQL SERVER – Introduction to SQL Server 2008 Profiler


対処/ Coのデ訂正

using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) 
{ 
    con.Open(); 
    using(SqlCommand cmd = new SqlCommand()) 
    { 
     string expression = "Parameter value"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "Your Stored Procedure"; 
     cmd.Parameters.Add("Your Parameter Name", SqlDbType.VarChar).Value = expression; 
     cmd.Connection = con; 
     using (IDataReader dr = cmd.ExecuteReader()) 
     { 
      if (dr.Read()) 
      { 
      } 
     } 
    } 
} 

作り付けのSQL Serverプロファイラスクリーンショット

enter image description here

+0

ありがとうございます。プロデューサーをプロダクションで実行することはできません。それはMultipleActiveResultSets = Trueと関係がありますか?試してみたところ、どちらもうまくいかなかった – Imran

+0

ok。運用サーバーの資格情報がある場合あなたはURの終わりにアプリケーションを使用してデータベースにアクセスすることによってコードをデバッグできますか? – Pankaj

+0

私は、同じ接続文字列、私の端からそれを実行すると、それは動作します。 QAサーバーで同じ接続文字列を実行すると動作します。 この実動サーバーでデータを読み込むと、whileループが動作します。ログテーブルへのロギングは機能します。更新は – Imran

関連する問題