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

SQL ServerのDB_NAME()とORIGINAL_DB_NAME():違いは何ですか?

    SQL Serverで使用可能な2つのメタデータ関数には、DB_NAME()が含まれます。 およびORIGINAL_DB_NAME() 。どちらの関数も、データベースの名前を返すという点で似ています。しかし、それらも異なります。目的が異なるため、この2つを混同しないでください。

    一言で言えば、各機能は次のように機能します。

    • DB_NAME() 指定されたデータベースの名前を返します。データベースを明示的に指定しない場合は、現在のデータベースが返されます。
    • ORIGINAL_DB_NAME() データベース接続文字列でユーザーが指定したデータベース名を返します。

    例1-初期接続

    次の接続文字列について考えてみます。

    mssql-cli -S localhost -U sa -P bigStrongPassword!!! -d WideWorldImporters
    

    これは、 mssql-cliを使用するときに提供した接続文字列です。 SQLServerに接続するためのコマンドラインツール。

    この接続文字列には、-d WideWorldImportersが含まれます 、これは、WideWorldImportersデータベースが初期データベースになることを意味します。 SQL Serverに接続すると、現在のデータベースはWideWorldImportersになります。

    上記の接続文字列を使用してログインした後、両方の関数を実行すると、次のようになります。

    SELECT 
      DB_NAME() AS [Current Database],
      ORIGINAL_DB_NAME() AS [Original Database],
      DB_NAME(5) AS [Another Database];
    

    結果:

    +--------------------+---------------------+--------------------+
    | Current Database   | Original Database   | Another Database   |
    |--------------------+---------------------+--------------------|
    | WideWorldImporters | WideWorldImporters  | MyDB               |
    +--------------------+---------------------+--------------------+
    

    例2–データベースの切り替え

    別のデータベースに切り替えてステートメントを再度実行すると、次のようになります。

    USE Music;
    SELECT 
      DB_NAME() AS [Current Database],
      ORIGINAL_DB_NAME() AS [Original Database],
      DB_NAME(5) AS [Another Database];
    

    結果:

    +--------------------+---------------------+--------------------+
    | Current Database   | Original Database   | Another Database   |
    |--------------------+---------------------+--------------------|
    | Music              | WideWorldImporters  | MyDB               |
    +--------------------+---------------------+--------------------+
    

    現在のデータベースは変更されますが、元のデータベースは同じままです。同じデータベースID(5)を指定したため、3番目の列も同じままです。 )DB_NAME()を呼び出す場合 。

    例3–デフォルトのデータベース

    接続文字列でデータベースを明示的に指定しないと、次のようになります。

    mssql-cli -S localhost -U sa -P bigStrongPassword!!!
    

    次に、ORIGINAL_DB_NAME()を実行します :

    SELECT 
      DB_NAME() AS [Current Database],
      ORIGINAL_DB_NAME() AS [Original Database],
      DB_NAME(5) AS [Another Database];
    

    結果:

    +--------------------+---------------------+--------------------+
    | Current Database   | Original Database   | Another Database   |
    |--------------------+---------------------+--------------------|
    | master             | master              | MyDB               |
    +--------------------+---------------------+--------------------+
    

    そのユーザーのデフォルトデータベースが使用されます。この場合はマスターデータベースです。


    1. Androidの再発イベントの期間がNULLになるのはなぜですか?

    2. MariaDBGaleraクラスター間で非同期レプリケーションをセットアップする方法

    3. 数値を小数点以下2桁にフォーマットします

    4. mySQL-3つのテーブルのデータと列を使用して新しいテーブルを作成する