0

ユーザーがデータベースの所有者であるかどうかを確認する必要があります。

私は2つの方法を見つけました:

  • 「exec sp_helprolemember」出力テーブルを見てください
  • select count(*) from (select DbRole = g.name, MemberName = u.name, MemberSID = u.sid from sys.database_principals u, sys.database_principals g, sys.database_role_members m where g.principal_id = m.role_principal_id and u .principal_id = m.member_principal_id および g.name='db_owner') の出力 where MemberName='user_to_be_checked'

あなたの意見では、最も長期的にサポートされている方法はどれですか? つまり、Microsoft がシステム テーブル構造やストアド プロシージャの構文/出力に設計変更をコミットする可能性は高くなりますか? また、SQL Server のバージョン間で最も移植性が高いのはどれですか?

thnx

ラフ

4

3 に答える 3

0

exec sp_helprolememberシステム ストアド プロシージャ - - は長期的にサポートされる方法だと思います。

ソースコードを調べたところ、exec sp_helprolemember内部的には2番目の方法で行っているチェックがあります(逐語的ではありませんが、他の条件もあります)。

さらに、Microsoft が提供するシステム ストアド プロシージャを使用して情報を取得することをお勧めします。ただし、既存のプロシージャでは必要な情報がすべて得られない場合を除きます。その場合は、さらに深く掘り下げて、システム テーブルと関数に対して独自のクエリを作成します。

于 2013-11-07T16:06:31.287 に答える