11

Crystal Reports XIr2 を使用してレポートを作成し、アプリケーションのデータベースからの情報を報告しました。これはクロス集計レポートであり、ストアド プロシージャの実行から返されたさまざまなデータをレポートします。

このレポートが実行されるアプリケーションについて簡単に説明します。これは VB6 で記述されたアプリケーションです。アプリケーションをロードすると、SQL サーバーで SQL ログインとして構成されているユーザー名とパスワードの入力を求められます。 SQL サーバー セキュリティに対して認証しているアプリケーション。

このレポートは Crystal Reports でまったく問題なく動作していますが、顧客サイトのアプリケーション内からこのレポートを起動すると、このレポートで奇妙な動作が発生します。「sa」レベルのデータベース アクセス権を持つすべてのユーザーに対して正常に機能しますが、他のユーザーとして実行すると次のエラーが発生します。

エラーメッセージ

アプリケーション内で上記のエラーが発生するユーザーとしてデータベース サーバーに直接接続すると、ストアド プロシージャを手動で実行してもエラーは発生しません。

アプリケーション内でエラーが発生しているユーザーに SQL サーバーの「sa」権限を与えると、エラーは発生しなくなります。

問題のストアド プロシージャに関連するすべての実行権限を確認しましたが、前述のとおり、SQL Server に手動で接続してプロシージャを実行すると、上記のリンクのエラーは表示されません。

このエラーが発生したユーザーがこのレポートの前に別のレポートを実行した場合は機能しますが、このエラーが発生した後にレポートを実行すると、すべてのレポートが機能しなくなり、アプリケーションの再起動が必要になります。

アイデアはありますか?

4

2 に答える 2

1

問題を報告しているユーザーに対して、データベースのユーザー マッピングの既定のスキーマが dbo に設定されていることを確認することをお勧めします。そのためにデータベース ロールを使用することもお勧めします。

于 2013-01-10T03:54:05.793 に答える
0

実行パーミッションの付与は必ずしもそれだけではありません。場合によっては、オブジェクトのパーミッション ブロックの可能性を確認する必要があります。ユーザーのログインを使用して手順を手動で実行したと言うとき、ユーザーの資格情報がデータベースへの接続に使用するものであることも確かですか?

おそらく、アプリケーションが使用するより汎用的な sql ログインを使用できます。この方法では、複数のユーザーのアクセス許可を追跡する必要はありません (単なる提案です!:))

于 2013-01-29T05:25:01.313 に答える