質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Transact-SQL

Transact-SQLはSybase ASEとMIcrosoft SQLサーバで対応されているSQLの機能拡張版です。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

1回答

587閲覧

Transact-SQLで特定のユーザの権限設定を確認する方法

hyubyu-n1

総合スコア28

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Transact-SQL

Transact-SQLはSybase ASEとMIcrosoft SQLサーバで対応されているSQLの機能拡張版です。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2022/12/18 16:26

実現したいこと

Azure上でDBを構築しています。

特定のユーザに設定されている権限を確認し、その権限に応じて異なる処理を行おうと考えています。

特定のユーザに設定されている権限を確認する方法を教えてください。

試したこと

Microsoftのドキュメントにある下記のSQLでユーザの一覧およびロールを確認することができます。
https://learn.microsoft.com/ja-jp/sql/relational-databases/system-catalog-views/sys-database-role-members-transact-sql?view=sql-server-ver16

TransactSQL

1#MSのドキュメント抜粋 2SELECT DP1.name AS DatabaseRoleName, 3 isnull (DP2.name, 'No members') AS DatabaseUserName 4 FROM sys.database_role_members AS DRM 5 RIGHT OUTER JOIN sys.database_principals AS DP1 6 ON DRM.role_principal_id = DP1.principal_id 7 LEFT OUTER JOIN sys.database_principals AS DP2 8 ON DRM.member_principal_id = DP2.principal_id 9WHERE DP1.type = 'R' 10ORDER BY DP1.name;

↑のWHERE句を弄って特定のユーザの列のみ選ぶようにすればいいと思うのですが、
SQL文が全く思い浮かびません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

特定のユーザに設定されている権限を確認する方法を教えてください。

やりたいことが読み取れているかわかりませんが、特定のユーザーでフィルタリングできればいいですか?

dboでフィルタリングする例です。(Azureの環境がないのでこちらで検証しました)

sql

1SELECT DP1.name AS DatabaseRoleName, 2 isnull (DP2.name, 'No members') AS DatabaseUserName 3 FROM sys.database_role_members AS DRM 4 RIGHT OUTER JOIN sys.database_principals AS DP1 5 ON DRM.role_principal_id = DP1.principal_id 6 LEFT OUTER JOIN sys.database_principals AS DP2 7 ON DRM.member_principal_id = DP2.principal_id 8WHERE DP1.type = 'R' 9 AND DP2.Name = 'dbo' -- この行を追加 10ORDER BY DP1.name; 11 12-- 結果 13DatabaseRoleName | DatabaseUserName 14db_ower | dbo

リファレンスを載せておきます。

sys.database_principals (Transact-SQL) - SQL Server | Microsoft Learn

列名データ型説明
namesysnameプリンシパルの名前。データベース内で一意です。

投稿2022/12/18 21:04

jhashimoto

総合スコア838

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hyubyu-n1

2022/12/19 01:19

完璧な回答ありがとうございました!! リファレンスもありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問