2012-03-26 10 views
1

SQL Server 2008 R2のデータをCompanyDataというデータベースに格納しています。私は、トランザクションの履歴を持つテーブルをいくつか持っています。SQL Server 2008のビューで詳細を非表示にする方法

特定のレポートユーザーの場合、報告容量はあるものの、多くの詳細は隠しておきたいと思います。

私は先に進んで新しいデータベースDBReportを作成し、テーブルから特定の列のみを選択するビューを作成しました。たとえば、[CompanyData]。[dbo]。[TableA]のSELECT field1、field2、field3 ...

私は新しいユーザーと新規ログインを作成しました(これらの違いは分かりませんが、 DBReportの両方でdb_datareaderロールを使用してReportingUserを呼び出すだけです)。

問題は、この制限されたユーザーとしてレポートを実行すると、現在のセキュリティではこれが起こっていないというエラーが返されるということです。

CompanyDataの有効なユーザーを使用してCompanyDataにログインするためのビューの指定方法が私の質問です。私はCompanyDataでReportingUserを作成することもできますが、それは私が避けたいものです。

は私が...私はので、ここで混乱していないことだ

感謝を願っています!

+0

基本的に*ログイン*はサーバーに属し、*ユーザー*はデータベースに属します(技術的には、すべてのデータベースには独自のユーザーセットがありますが、実際には1つの同じセットになることもあります)。サーバーへのアクセス権(ログイン権)を持ち、特定のデータベースにアクセスすることはできません(ログインに関連付けられたDB内のユーザーはいない)。 –

答えて

2

は、私はあなたの場合の問題点は、オブジェクトの所有者が誰であるかと思い所有権チェーンhere(それは非常に良い説明があります)

について読みました。おそらくDBReportのあなたのビューは、あなたの[CompanyData]。[dbo]。[TableA]テーブルの所有者とは違うでしょう。したがって、ビューに対するアクセス権はありますが、所有者が異なるため、tableAにチェーンされません。

これは、tableAのReportUserにアクセス許可を追加することで解決できます。ユーザーとログインについて

、基本的に 新しいクエリ、ペーストは、ビュー内からSQLにあなたの限られたレポートのユーザーとして接続ログインは、インスタンス・レベルの上にあり、ユーザーが

+0

私の無知を捨てて、ドン・ディエゴ、誰が何を所有しているかをどうやって見ますか?可能であれば、どうすればそれを変更できますか? (私は新しい所有者にオブジェクトを売ることができます:-)) – Amarundo

+0

あなたが所有権のチェーン、btwについて私にくれた素晴らしいリンク。 – Amarundo

+0

喜んで助けてください。このプロシージャは、オブジェクトの所有者を変更することができます:sp_changeobjectowner 'old_owner'、 'new_owner'あなたの場合、dboはTableAオブジェクトの所有者です – Diego

0

は、SQL Server Managerを実行して、データベース・レベルであります。それが何を言うかを見てください。 通常の問題は、テーブル2を見ることが許可されていますが、table1ではなく、外部キーがあるか類似しているという参照です。

udfsやSP(またはそれによって使用される他のビュー)によって参照されるテーブルを含む、ビューが触れたすべてのテーブルを選択して参照するようにしてください。

PSこのレポートはこのビューのみを使用しますか?

関連する問題