15

ユーザーが SQL Server のデータベース ロールのメンバーであるかどうかを確認するには、T-SQL ステートメントが必要です。具体的には、ユーザーが dbo ロールのメンバーであるかどうかを知る必要があります。これは、そのユーザーに追加の権限を付与する必要がないためです。

ユーザーが dbo のときに追加の権限を追加しようとすると失敗し、スクリプトが失敗します...

4

4 に答える 4

20

IS_ROLEMEMBER?

IF IS_ROLEMEMBER ('db_owner') = 1
BEGIN
    PRINT 'Is owner'
END

または、別のユーザーを照会する場合:

IF IS_ROLEMEMBER ('db_owner','other user') = 1
BEGIN
    PRINT 'Is owner'
END
于 2012-10-30T14:50:53.843 に答える
8

IS_MEMBER関数に関する MSDN ページの例を次に示します。

-- Test membership in db_owner and print appropriate message.
IF IS_MEMBER ('db_owner') = 1
   PRINT 'Current user is a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') = 0
   PRINT 'Current user is NOT a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') IS NULL
   PRINT 'ERROR: Invalid group / role specified'
于 2012-10-30T15:01:21.087 に答える
3

これが私がやったことです:(コメントに基づいて編集)

DECLARE @ISSYSADMIN INT
SET @ISSYSADMIN = (SELECT COUNT(1) 
                   FROM sys.syslogins 
                   WHERE sysadmin = 1 AND loginname = '$(ContentAccount)')

$(ContentAccount) はもちろん、ユーザーのドメインと名前を持つパラメーター化です!

新しいデータベースをデプロイするときに権限を手動で割り当てるため、これで問題が解決します。しかし、追加しようとするユーザーがすでに sysadmin である開発環境では失敗します。そのため、開発サーバーのシナリオをカバーするのに十分な sysadmin メンバーシップを確認すると.

次に、メンバーシップを確認するためにこれを行います。

IF (@ISSYSADMIN = 0)
BEGIN
  -- Add authority
END
于 2012-10-30T17:18:59.307 に答える
2

IS_SRVROLEMEMBER欲しい機能です。

IF IS_SRVROLEMEMBER ('sysadmin','myuser') = 1 PRINT 'Is SysAdmin'

IF IS_SRVROLEMEMBER ('serveradmin','myuser') = 1 PRINT 'Is ServerAdmin'

参照

于 2014-07-09T14:31:22.047 に答える