4

会社のポリシーに従って、永続的なテーブルを作成し、一連の挿入と更新を実行してすべてのデータを取得するレポート用の SQL クエリを作成しました。私のマシンの SQL Server Management Studio と Crystal Reports 2008 では正常に動作します。ただし、SAP BusinessObjects Central Management Console を使用してサーバー上で実行するようにスケジュールすると、「関連付けられたステートメントが準備されていません」というエラーで失敗します。この永続テーブルを一時テーブルに変更すると、クエリが機能することがわかりました。これはなぜでしょうか?

4

4 に答える 4

1

一部の調査では、実際のエラーではなく、このエラーが送信される場合があることが示されています。それを報告している他の人々は、外部キーと(私も推測しますが)重複キーエラーについて話しています。

私がチェックすること:

  • 永続テーブルに、違反する可能性のある一意の制約がありますか? または、外部キー制約はありますか?
  • テーブルの作成後にテーブルにインデックスを作成していますか?
  • この永続テーブルに対してビューを作成していますか?
  • ジョブが実行される前にテーブルが既に存在する場合はどうなりますか?
  • ジョブが失敗した場合、テーブルはどうなりますか?
  • 追加の一時テーブルまたは永続テーブルを必要とする可能性のある中間ステップ (ストアド プロシージャ内など) はありますか?

ETA: また、永続テーブルが属しているスキーマを確認してください: 通常は "dbo" で作成されますか? それを明示的に指定していますか?アクセス許可の問題が発生する可能性はありますか?

于 2012-04-22T19:56:15.897 に答える
0

コードを見ていないのは推測ですが、レポートを実行するたびに永続的なテーブルを作成しているので、ある時点でテーブルを削除する必要があると思いますか? (または、時間の経過とともに多くのテーブルが構築されます。)

考慮すべきいくつかの角度を提案します。

1) 同時実行/ロックの問題などを懸念している場合は、テーブルにプレフィックスを付けて (おそらくセッション ID などで)、各レポートの実行でそれ自体専用のテーブルが作成されるようにします。

2) 最後にテーブルを削除する場合は、代わりにロジックを調整してテーブルをそのままにしておきます。操作を (再) 開始するとドロップするコードを記述します。レポートがテーブルにしがみついていて、時期尚早に破棄している可能性があります。

于 2012-04-20T02:56:15.890 に答える
0

これは多くの場合、一般的なエラーです。実行予定のアカウントとしてサーバー上で実行できますか? 許可エラーまたは制約の問題である可能性が最も高いです。

于 2012-04-19T13:16:00.047 に答える