SQL Serverでログインを検索・一覧表示する方法
SQL Serverで作成済みのすべてのログインアカウントと、その詳細情報を一括で取得できるクエリはあるのでしょうか。実は、SQL Serverには「sys.sql_logins」という仮想カタログ(ビュー、またはシステムテーブル)が標準で用意されています。このビューに対してクエリを実行すれば、SQL Server上に存在するすべてのログインとその詳細情報を簡単に確認できます。
すべてのログインを取得する基本クエリ
SQL Server内のすべてのログインアカウントを取得するには、次のコマンドを実行します。
SELECT *
FROM master.sys.sql_logins;
sys.sql_loginsビューの主な列
sys.sql_loginsビューには、以下の列が含まれています。
| 列名 | 説明 |
|---|---|
| name | CREATE LOGINコマンドで指定したログイン名。 |
| principal_id | 数値型のID。 |
| sid | CREATE LOGINコマンドで指定された一意のセキュリティ識別子(SID)。 |
| type | プリンシパルの種類を示すコード。 |
| type_desc | プリンシパルの種類の説明文。 |
| is_disabled | 0または1。ログインが無効化されているかどうかを示します。 |
| create_date | CREATE LOGINコマンドでログインを作成した日時。 |
| modify_date | ALTER LOGINコマンドによって最後に変更された日時。 |
| default_database_name | CREATE LOGINまたはALTER LOGINコマンドで指定された既定のデータベース。 |
| default_language_name | CREATE LOGINまたはALTER LOGINコマンドで指定された既定の言語。 |
| credential_id | CREATE LOGINまたはALTER LOGINコマンドで関連付けられた資格情報(Credential)のID。 |
| is_policy_checked | 0または1。CREATE LOGINまたはALTER LOGINコマンドで指定された、Windowsパスワードポリシー適用の可否。 |
| is_expiration_checked | 0または1。CREATE LOGINまたはALTER LOGINコマンドで指定された、パスワード有効期限チェックの可否。 |
| password_hash | パスワードのハッシュ値。 |
type列に格納される値
- S = SQL Serverユーザー(SQL認証ログイン)
- U = Windowsユーザー
- G = Windowsグループ
- A = アプリケーションロール
- R = データベースロール
- C = 証明書にマッピングされたログイン
- K = 非対称キーにマッピングされたログイン
type_desc列に格納される値
- SQL_USER
- WINDOWS_USER
- WINDOWS_GROUP
- APPLICATION_ROLE
- DATABASE_ROLE
- CERTIFICATE_MAPPED_USER
- ASYMMETRIC_KEY_MAPPED_USER
旧バージョン(SQL Server 2000)との互換性
古いSQL Serverのバージョンでは、SQL Server 2000互換のシステムテーブルである「sys.syslogins」を使用して、すべてのログイン情報を取得できます。その場合は、以下のコマンドを実行してください。
SELECT *
FROM master.sys.syslogins;
なお、sys.sysloginsは後方互換性のために残されているシステムテーブルであり、新しい環境では前述のsys.sql_loginsの利用が推奨されます。
システムテーブルsys.syslogins(SQL Server 2000)には、以下の列が含まれています。
| 列名 | 説明 |
|---|---|
| sid | CREATE LOGINコマンドで指定された一意のセキュリティ識別子。 |
| status | 現在使用されていない列。 |
| createdate | CREATE LOGINコマンドでログインを作成した日時。 |
| updatedate | ALTER LOGINコマンドによって最後に更新された日時。 |
| accdate | 使用されていません。 |
| totcpu | 使用されていません。 |
| totio | 使用されていません。 |
| spacelimit | 使用されていません。 |
| timelimit | 使用されていません。 |
| resultlimit | 使用されていません。 |
| name | CREATE LOGINコマンドで指定したログイン名。 |
| dbname | 既定のデータベース。 |
| language | 既定の言語。 |
| isntuser | 0または1。Windowsユーザーアカウントかどうか。 |
| isntgroup | 0または1。Windowsグループかどうか。 |
| isntname | 0または1。WindowsユーザーまたはWindowsグループかどうか。 |
| sysadmin | 0または1。sysadmin固定サーバーロールのメンバーかどうか。 |
| securityadmin | 0または1。securityadmin固定サーバーロールのメンバーかどうか。 |
| serveradmin | 0または1。serveradmin固定サーバーロールのメンバーかどうか。 |
| setupadmin | 0または1。setupadmin固定サーバーロールのメンバーかどうか。 |
| processadmin | 0または1。processadmin固定サーバーロールのメンバーかどうか。 |
| diskadmin | 0または1。diskadmin固定サーバーロールのメンバーかどうか。 |
| dbcreator | 0または1。dbcreator固定サーバーロールのメンバーかどうか。 |
| bulkadmin | 0または1。bulkadmin固定サーバーロールのメンバーかどうか。 |
| loginname | CREATE LOGINコマンドで指定したログイン名。 |
-
SQL ServerのSELECT文の使い方を徹底解説!基本構文と実践例まとめ
このチュートリアルでは、SQL Server(T-SQL)におけるSELECT文の使い方を、構文と具体的なサンプルコードとともにわかりやすく解説します。 SELECTは、SQL Serverデータベース内の1つまたは複数のテーブルからデータを取得するために使用される、最も基本的かつ重要なコマンドです。 SELECT文の基本構文 最もシンプルな形式では、SELECT文の構文は以下の通りです。 SELECT 式 FROM テーブル [WHERE 条件]; 一方、すべての機能を含んだ完全な形式のSELECT文は次のように記述します。 SELECT [ALL | DISTINCT] [TOP (先頭
-
MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説
SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ