2009-03-10 10 views
0

新しいデータベース(Microsoft SQL Server 2005)でいくつかの新しいテーブルを作成しました。これで、これらのテーブルは、クライアントユーザーがSystem DSN ODBCオブジェクト(SQL認証を使用)を使用してAccess 2003を表示する準備が整いました。私がやったことは、データベースにロールとスキーマを作成し、SQLサーバーのデフォルトのログインユーザーにデータベースとスキーマ名を作成することでした。アクセス許可を表示、追加、削除するTSQL

問題は、クライアントが作成したテーブルだけでなく、データベース内のシステムビューオブジェクトも表示できることです。私は、SQLログインユーザ、スキーマ、およびロールを設定して自分のテーブルだけを表示できるようにするにはどうすればよいのでしょうか?デフォルトでログイン・ユーザーにシステム・ビュー・オブジェクトが表示される理由がわかりません。

もう1つの代替方法として、現在私が許可しているパーミッションをクリーンアップすることができます。私はいくつかのシステムビューオブジェクト(非常に長いリスト)をチェックしました。それらはすべてパブリックスキーマで作成したスキーマのパーミッションを持っています。 T-SQLスクリプトを使用して、これらのシステムビューオブジェクトのスキーマに関連付けられた権限を表示してから削除する方法はありますか?その後、同様のスクリプトを使用して、作成したテーブルに自分のスキーマの権限を追加する必要があります。

答えて

1

デフォルトでは、新規ユーザーは「パブリック」サーバーとデータベースロールのメンバーになります。 sys内のオブジェクト。およびINFORMATION_SCHEMAスキーマは、パブリックロールのメンバーに表示されます。

これらのスキーマへの独自のロールアクセスを明示的に拒否することも、ログインユーザーからパブリックロールを削除することもできます。

マーク

関連する問題