1

私は単純なWindowsサービスを持っており、このサービス内でタイマーブロックでSQLサーバーに接続しようとしています(onStartメソッドで1回だけ接続しようとしました->同じ結果)。

今のところ、次のコードを使用して選択を実行しようとしています。

using (SqlConnection sc = new SqlConnection())
        {
                var sqlConnection = new SqlConnection(_sqlConnectionString);
                string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE                                    Moneda != '' AND SimbolMoneda != ''";
                SqlCommand command = new SqlCommand(commanda, sqlConnection);
                command.CommandType = System.Data.CommandType.Text;
                IDataReader reader;
                sc.ConnectionString = _sqlConnectionString;
                sc.Open();
                reader = command.ExecuteReader(CommandBehavior.CloseConnection);

            }

サービスをデバッグにアタッチしましたが、このコード行を通過していないことに気付きましたsc.Open()

サービスはSQLサーバーと同じマシン上にありませんが、SQLサーバーと同じドメイン内の異なるユーザー、LocalSystem、NetworkService、ユーザーの下にインストールしようとしましたが、結果はありませんでした。

どんな助けでも大歓迎です。

4

3 に答える 3

4

このコードに論理エラーがあるようです。を使用scしていますが、実際に開かれることのないSqlConnectionを使用するコマンド オブジェクトを作成するとき。sqlConnection

この行が問題です:

SqlCommand command = new SqlCommand(commanda, sqlConnection);

代わりに次のことを試してください。

SqlCommand command = new SqlCommand(commanda, sc);

ユーザーのコメントに続いて 10:22 に編集

指示どおりに変更したことを確認するために、コードを再調整しました。次のことを試していただけますか。

using (SqlConnection sc = new SqlConnection())
{
    sc.ConnectionString = _sqlConnectionString;
    sc.Open();

    string commanda = "SELECT Moneda, SimbolMoneda FROM NomMoneda WHERE Moneda != '' AND SimbolMoneda != ''";
    SqlCommand command = new SqlCommand(commanda, sc);
    command.CommandType = System.Data.CommandType.Text;

    IDataReader reader;
    reader = command.ExecuteReader();
}
于 2013-07-30T08:59:14.280 に答える