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

ORIGINAL_DB_NAME()がSQLServerでどのように機能するか

    SQL Serverでは、ORIGINAL_DB_NAME()を使用できます。 データベース接続文字列でユーザーが指定したデータベース名を返す関数。

    この関数をDB_NAME()と混同しないでください。 関数。特定のデータベースまたは現在のデータベースのいずれかを返します。

    SQL Serverに最初に接続するときに、初期データベースを指定するオプションがあります。たとえば、 sqlcmdなどのコマンドラインインターフェイスを使用する場合 、-dを使用できます 初期データベースを指定するパラメーター。このパラメータを使用しない場合、ログインのデフォルトデータベースが初期データベースになります。

    接続すると、別のデータベースに切り替えることができますが、元のデータベースは常に同じになります。つまり、ORIGINAL_DB_NAME() 別のデータベースに切り替えた場合でも、セッション全体で常に同じデータベースが返されます。

    例1-基本的な使用法

    これが基本的な例です。

    SELECT ORIGINAL_DB_NAME() AS [Original Database];
    

    結果:

    +---------------------+
    | Original Database   |
    |---------------------|
    | master              |
    +---------------------+
    

    例2–さまざまな接続文字列

    この例は、ORIGINAL_DB_NAME()の出力がどのように行われるかを示しています。 機能は接続文字列によって決定されます。

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

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

    ここでは、 mssql-cliを使用します SQLServerに接続するためのコマンドラインツール。私たちが興味を持っているのは-d Musicです。 。これは、初期データベースがMusicデータベースであることを指定します。つまり、SQL Serverに接続すると、現在のデータベースはMusicになります。

    したがって、そのコードを実行した後(そして、SQL Serverに正常に接続した後)、ORIGINAL_DB_NAME()を実行できます。 :

    SELECT ORIGINAL_DB_NAME() AS [Original Database];
    

    結果:

    +---------------------+
    | Original Database   |
    |---------------------|
    | Music               |
    +---------------------+
    

    次に、別の接続を開きますが、今回は別のデータベースを指定します:

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

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

    SELECT ORIGINAL_DB_NAME() AS [Original Database];
    

    結果:

    +---------------------+
    | Original Database   |
    |---------------------|
    | WideWorldImporters  |
    +---------------------+
    

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

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

    USE Music;
    SELECT ORIGINAL_DB_NAME() AS [Original Database];
    

    結果:

    Changed database context to 'Music'.
    +---------------------+
    | Original Database   |
    |---------------------|
    | WideWorldImporters  |
    +---------------------+
    (1 row affected)
    

    元のデータベースは同じままです。

    ここでも、DB_NAME()と比較した場合です。 機能:

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

    結果:

    Changed database context to 'Music'.
    +--------------------+---------------------+
    | Current Database   | Original Database   |
    |--------------------+---------------------|
    | Music              | WideWorldImporters  |
    +--------------------+---------------------+
    (1 row affected)
    

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

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

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

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

    SELECT ORIGINAL_DB_NAME() AS [Original Database];
    

    結果:

    +---------------------+
    | Original Database   |
    |---------------------|
    | master              |
    +---------------------+
    

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


    1. PostgreSQL一時テーブル

    2. count(*)列でエイリアスを使用して、have句で参照できないのはなぜですか?

    3. PostgreSQL DigitalOceanのパフォーマンスと価格の比較–ScaleGridとDigitalOceanマネージドデータベース

    4. CREATE TABLE ASを使用して他のテーブルからデータを選択し、新しいテーブルを作成します