2012-08-07 15 views
11

Crystal Reports XIr2を使用してレポートを作成し、アプリケーションのデータベースの情報を報告しました。これは、クロス・タブ・レポートであり、ストアド・プロシージャの実行によって返されるさまざまなデータをレポートします。テーブル[tablename]が見つかりませんでした-2147189180

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

Crystal Reportsでレポートが正常に機能していますが、顧客のサイトでアプリケーション内からこのレポートを起動すると、このレポートに何らかの不具合が発生しています。 'sa'レベルのデータベースアクセスを持つすべてのユーザーには問題なく動作しますが、他のユーザーとして実行すると次のエラーが発生します。 Iがエラーなしに動作し、手動でストアドプロシージャを実行して、アプリケーション内で上記のエラーを取得するユーザとして直接データベースサーバに接続する場合

Error message

SQLサーバー上のアプリケーション 'sa'の権限内でエラーが発生したユーザーには、エラーが発生しなくなります。

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

このエラーが発生したユーザーは、このレポートより前に別のレポートを実行すると動作しますが、このエラーが発生した後でレポートを実行すると、すべてのレポートが機能しなくなり、

どのようなアイデアをお願いしますか?

+0

レポートを開いてくださいフィールドエクスプローラで影響を受けるテーブルを検索します。テーブルを右クリックし、 "Set Datasource Location ..."を選択します。影響を受けるテーブルの下のツリーを展開し、そのプロパティを表示します。 オーナーは誰ですか? – Dorian

+0

@X所有者はdboです –

+0

ストアドプロシージャはデータベースに書き込みを行いますか?あるいは 'Select'文を実行しているだけですか?あなたはSQL Serverへのアクセス権があると仮定します。データベースのプロパティ>アクセス許可で、プロシージャを実行しようとしているユーザーまたはロールに権限がありますか? – Dorian

答えて

1

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

0

実行許可を与えても必ずしもそこで終了するとは限りません - 時には、その中のオブジェクトの可能なパーミッションブロックをチェックする必要があります。プロシージャを手動で実行するためにユーザーのログインを使用したとしたら、ユーザーの資格情報はデータベースに接続するために使用するものであることは確かですか?

おそらく、あなたは、アプリケーションが使用するより普遍的なSQLログインに使用することができます - (!ちょうど提案:))あなたは、複数のユーザの権限を追跡する必要はありませんこの方法を

関連する問題