Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как работи ORIGINAL_DB_NAME() в SQL Server

В 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 инструмент за команден ред за свързване към SQL Server. Частта, която ни интересува, е -d Music . Това указва, че първоначалната база данни трябва да бъде базата данни за музика. С други думи, след като се свържа със SQL Server, текущата ми база данни ще бъде Музика.

Така че след като изпълня този код (и успешно се свържа със 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_VALUE() Примери в SQL Server (T-SQL)

  2. 6 проблемни заявки, които значително забавят вашата база данни

  3. Мога ли да използвам ADFS 2.0 за удостоверяване на определени потребители срещу SQL Server?

  4. Как да използвате RANK() в SQL Server

  5. Първа публична визуализация на SQL Server 2019:CTP 2.0