sql >> データベース >  >> RDS >> Sqlserver

HAS_DBACCESS()–ユーザーがSQLServerのデータベースにアクセスできるかどうかを検出します

    SQLServerにはHAS_DBACCESS()があります ユーザーが指定されたデータベースにアクセスできるかどうかに関する情報を返す関数。

    構文

    構文は次のようになります:

    HAS_DBACCESS ( 'database_name' )

    この関数は1を返します ユーザーがデータベースにアクセスできる場合は、0 ユーザーがデータベースにアクセスできない場合、およびNULL データベース名が有効でない場合。

    0を返します データベースがオフラインまたは疑わしい場合、0を返します データベースがシングルユーザーモードで、データベースが別のユーザーによって使用されている場合。

    デモンストレーションの例を次に示します。

    SELECT HAS_DBACCESS('KrankyKranes');

    結果:

    1

    この場合、1 が返されました。これは、ユーザーがKrankyKranesにアクセスできることを意味します。 データベース。

    存在しないデータベース

    データベースが存在しない場合、結果はNULLになります :

    SELECT HAS_DBACCESS('Oops');

    結果:

    NULL

    すべてのデータベースを確認

    次のクエリを使用して、SQLServerインスタンス内のすべてのデータベースへのアクセスを確認できます。

    SELECT 
        name AS DB,
        HAS_DBACCESS(name) AS HasDBAccess
    FROM sys.databases;

    結果:

    +-----------------------+---------------+
    | DB                    | HasDBAccess   |
    |-----------------------+---------------|
    | master                | 1             |
    | tempdb                | 1             |
    | model                 | 1             |
    | msdb                  | 1             |
    | Music                 | 1             |
    | KrankyKranes          | 1             |
    | Test                  | 1             |
    | WideWorldImporters    | 1             |
    | World                 | 1             |
    | DomainDispute         | 1             |
    | PetHotel              | 1             |
    | StereoSystems         | 1             |
    | NarrowNationExporters | 1             |
    +-----------------------+---------------+

    その場合、私はすべてのデータベースにアクセスできました。

    少ないデータベースにアクセスできるユーザーとしてクエリを実行すると、次のようになります。

    SELECT 
        name AS DB,
        HAS_DBACCESS(name) AS HasDBAccess
    FROM sys.databases;

    結果:

    +-----------------------+---------------+
    | DB                    | HasDBAccess   |
    |-----------------------+---------------|
    | master                | 1             |
    | tempdb                | 1             |
    | model                 | 0             |
    | msdb                  | 1             |
    | Music                 | 0             |
    | KrankyKranes          | 0             |
    | Test                  | 1             |
    | WideWorldImporters    | 0             |
    | World                 | 0             |
    | DomainDispute         | 0             |
    | PetHotel              | 0             |
    | StereoSystems         | 0             |
    | NarrowNationExporters | 0             |
    +-----------------------+---------------+

    1. SQLServerでGUIを使用して列を追加または削除する方法-SQLServer/T-SQLチュートリアルパート39

    2. クエリの説明プランをどのように解釈しますか?

    3. SqlServer:ユーザーのログインに失敗しました

    4. PostgreSQLで利用可能なデータベースダイアグラムツールの概要