web-dev-qa-db-ja.com

データセットのSSRSクエリの実行に失敗しました

プロジェクトをレポートサーバーに展開しました。

そのサーバー上のデータベースに存在するビューを参照している複数のデータセットがあります。

レポートパーツにアクセスしようとすると、次のメッセージが表示されます。

An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset 'dataset1'. (rsErrorExecutingCommand)
For more information about this error navigate to the report server on the local server machine, or enable remote errors 

誰でも助けることができますか?

25
JsonStatham

リモートエラーを有効にして問題を特定しました。

特定のデータセット(私のビューの1つ)の列がエラーをスローしていることを特定しました。

そこで、「SQL Delta」というツールを使用して、データベースの開発バージョンとレポートサーバー上のライブバージョンを比較しました。ビューの1つに、開発サーバー上に追加の列があり、dbのライブバージョンではないことに気付きました。

SQL Deltaは、ライブデータベースのビューを更新するために実行する必要があるスクリプトを生成しました。

私はこのスクリプトを実行し、レポートを再実行しましたが、すべてうまくいきました。

10
JsonStatham

同様のエラーメッセージが表示されました。リモートエラーを有効にせずに修正できました。

レポートビルダー3.0で実行ボタンを使用してレポートを実行すると、エラーアラートが表示され、

An error has occurred during report processing. (rsProcessingAborted)
[OK] [Details...]

詳細ボタンを押すと、このテキストを見たテキストボックスが表示されました。

For more information about this error navigate to the report server
on the local server machine, or enable remote errors
----------------------------
Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)

レポートに「DataSet1」という名前のデータセットがなかったため、混乱してイライラしました。 .rdlファイルをテキストエディターで開いて確認しました。しばらくして、テキストボックス内の読み取り可能なテキストの下にさらにテキストがあることに気付きました。完全なエラーメッセージは次のとおりです。

For more information about this error navigate to the report server
on the local server machine, or enable remote errors
----------------------------
Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)

----------------------------
The execution failed for the shared data set 'CustomerDetailsDataSet'.  
(rsDataSetExecutionError)
----------------------------
An error has occurred during report processing. (rsProcessingAborted)

Ididには「CustomerDetailsDataSet」という名前の共有データセットがあります。 SQL Server Management Studioでクエリ(テキストモードで入力された完全なSQLクエリ)を開き、そこで実行しました。使用していた列の名前が変更されて変更された特定のテーブルを明確に指すエラーメッセージが表示されました。

その時点から、新しい列で動作するようにクエリを変更し、その変更を共有データセット 'CustomerDetailsDataSet'に貼り付け、レポートビルダーでレポートをナッジして、共有データセット。

この修正後、レポートでこのエラーが発生しなくなりました。

8
Jim DeLaHunt

同じ問題が発生しましたが、それはテーブルの一部にセキュリティが付与されていないことに関連していました。ユーザーがレポートで使用するデータベース/テーブル/ビュー/機能などにアクセスできるかどうかを確認します。

4
user3715198

私はちょうどこの同じ問題に対処しました。クエリにショートカットを使用せずに完全なソース名がリストされていることを確認してください。 Visual Studioはショートカットを認識できますが、レポートサービスアプリケーションは、データの取得元のテーブルを認識できない場合があります。お役に立てば幸いです。

3
Dave

エラーを示す同様の問題がありました

このエラーの詳細については、ローカルサーバーマシンのレポートサーバーに移動するか、リモートエラーを有効にしてください。データセット 'PrintInvoice'のクエリ実行に失敗しました。

解決策:1)場合によってはデータセットにエラーがある可能性があります。データセットプロパティに移動し、「クエリデザイナ」を選択して「実行」を試すことで、データセットが期待どおりのデータを生成しているかどうかをいつでも確認できます期待するフィールドを正常にプルできれば、データセットに問題がないことを確認できます。これにより、次の解決策に進みます。

2)「データセットの実行に失敗しましたクエリ」というエラーメッセージが表示される場合でも、データソース接続に別の可能性があります。必要なテーブルがある正しいデータソースに接続し、そのデータソースにアクセスする権限があることを確認してください。

3
Sri Harsha

ここの他の多くの人と同様に、私は同じエラーがありました。私の場合は、使用するストアドプロシージャの実行許可が拒否されたためです。データソースに関連付けられているユーザーにそのアクセス許可が与えられたときに解決されました。

3
SteveC

私の状況では、データセット用の新しいSSRSレポートと新しいストアドプロシージャを作成しました。ストアドプロシージャを実行する権限を持つデータベースロールに追加するのを忘れました。 EXECUTEを使用してSQLデータベースロールにアクセス許可を追加すると、すべてがうまくいきました!

ユーザーが検出したエラーメッセージは「クライアントレンダリング中にエラーが発生しました。レポート処理中にエラーが発生しました(rsProcessingAborted)。データセット「DataSet1」のクエリ実行に失敗しました。(rsErrorExecutingCommand)For more information ...」

2
Doreen

私にとっての解決策は GShenanigan

詳細については、SSRSサーバー上のログファイルをチェックアウトする必要があります。 「C:\ Program Files(x86)\ Microsoft SQL Server\MSRS10_50.DEV\Reporting Services\LogFiles \」のような場所になります。

ビューが参照しているデータベーステーブルで、ビューがある場所とは異なるアクセス許可の問題を見つけることができました。私はビューのデータベースのパーミッションに焦点を合わせていたので、これはエラーの場所を正確に特定するのに役立ちました。

2
casilvis

この問題は、孤立したSQLログインが原因で発生しました。お気に入りのsp_fixusersスクリプトを実行すると、エラーは解決しました。ログを見るための上記の提案は良いものでした...そしてそれは私の答えにつながりました。

1
Lee

BIGHAP:この問題の簡単な作業。

DataSourceとしてSharePointリストを操作するときに同じ問題に遭遇し、上記の非常に役立つブログを読みました。 Visual StudioのDataSourceおよびDataオブジェクトの名前とクエリフィールドの両方を変更し、Visual Studioでクエリが機能するようにしました。レポートをSharePointに展開できましたが、レポートを開こうとすると同じエラーが表示されました。

問題は、レンダリングツールの変更がすべて同期されるように、DataSourceとDataSetの両方をSharePointに再展開する必要があることだと思いました。

DataSource、DataSet、およびレポートをsharePointに再デプロイしましたが、うまくいきました。ブログの1つが述べたように、Visual Studioはデータセットとデータソースで行った変更を許可しましたが、レポートを展開するときにデータソースとデータセットを自動的に再展開するようにVisual Studioを設定していない場合(これは他のこれらのオブジェクトを共有するレポート)このエラーが発生する可能性があります。

そのため、当然のことながら、この場合、データソース、データセット、およびレポートを再展開して問題を解決する必要があります。

1
user4541411

この素晴らしい記事を見つけてとても感謝しています。私の場合、ストアドプロシージャを実行しているユーザーにはEXECUTE権限がありませんでした。解決策は、ストアドプロシージャの最後に以下のコードを追加して、ストアドプロシージャ内のユーザーにEXECUTE権限を付与することでした。

GRANT EXECUTE ON dbo.StoredProcNameHere TO UsernameRunningreports
GO
1
zymos

同じエラーが発生しましたが、これで問題は解決しました

レポートが分析サーバーに接続されている場合、分析サーバーのモデルのユーザー(レポートを表示するためにレポートサーバーにアクセスしているユーザー)に必要な権限を付与します。これを行うには、モデルまたはキューブのロールにユーザーを追加します、モデルを分析サーバーにデプロイします。

1
Vipin Bihari

また、非常によく似たエラーメッセージで非常に似た問題がありました。私の問題は、データベースに接続できなかったことです。この例では、データベースをミラーリングしており、接続文字列にフェールオーバーパートナーが指定されていません。そのため、データベースが接続できなかった場合、ミラーにアクセスすることはなく、このエラーがスローされていました。データソースの接続文字列でフェールオーバーパートナーを指定すると、問題は解決しました。

1
bunggo

私も同じ問題に直面していました-この問題を修正するために以下のことを確認しましたが、

  • data-sourceのポインティングデータベース名を最近変更した場合
    まず、そのレポートのすべてのストアプロシージャが変更されたデータベースに存在することを確認します。

  • メインレポートに複数のサブレポートがある場合は、各レポートが個別に完全に実行されていることを確認してください。

  • セキュリティパネルも確認-ユーザーはそのレポートのデータベース/テーブル/ビュー/機能にアクセスできる必要があります。

時々、_dataset1_-ストアドプロシージャもチェックする必要があります。 _user1_でレポートを表示しようとしており、このユーザーが提供された_(dataset1 database)_データベースのaccess(rights)を持っていない場合、上記と同じエラーがスローされるため、ユーザーがSQL Serverでdbreaderにアクセスできることを確認してください。

また、そのストアプロシージャに他のデータベースが含まれている場合(Database2) like

_Select * from XYZ inner join Database2..Table1 on ... where...
_

次に、ユーザーはこのデータベースのアクセス権も持っている必要があります。

注:詳細については、このパスのログファイルを確認できます。

_C:\Program Files\Microsoft SQL Server\MSRS11.SQLEXPRESS\Reporting Services
_
1
pedram

SSRS、レポートビルダー3.0、MSSQL 2008、およびOracle 11Gデータベースへのクエリを使用して、Oracleストアドプロシージャが正常に実行され、エラーのない一貫した結果が生成されることがわかりました。データをSSRSに取り込むと、OPのクエリにリストされているエラーが表示されました。パラメーターを削除した場合にのみデータがロードされ表示されることがわかりました(良い考えではありません)。さらに調査すると、データセットのプロパティ>パラメータの下で、開始日をparameterName P_Startに、パラメータValueを@P_Startに設定していることがわかりました。

[@P_Start]としてパラメーター値を追加すると、問題が解消され、パラメーターが設定された状態でデータが適切にロードされます。

1
Joe

これは、ビューまたはストアプロシージャの権限の問題である可能性があります

1
Kiran.Bakwad

上記の答えに加えて、欠落しているSQLストアドプロシージャまたはSQL関数が原因である可能性があります。たとえば、これは、非prodリージョンから本番(prod)リージョンに機能が移行しないことが原因である可能性があります。

0
JosephDoggie