Следующий запрос возвращает имя текущей базы данных:
USE [DB1]
SELECT DB_NAME() AS Current_DB
FROM [dbo].[TblName]
Результат:
Current_DB
----------
DB1
Я вижу очень странные результаты при использовании DB_NAME()
с запросами, которые ВЫБРАТЬ ИЗ таблицы в формате [DBName].[SchemaName].[TblName]
:
T-SQL
USE [DB1]
SELECT DB_NAME() AS Current_DB
FROM [DB1].[dbo].TblName
UNION
SELECT DB_NAME() AS Current_DB
FROM [DB2].[dbo].TblName
UNION
SELECT DB_NAME() AS Current_DB
FROM [DB3].[dbo].TblName
UNION
SELECT DB_NAME() AS Current_DB
FROM [DB4].[dbo].TblName
Результат:
Current_DB
----------
DB1
T-SQL
USE [DB1]
SELECT DB_NAME() AS Current_DB
FROM [DB1].[dbo].TblName
UNION ALL
SELECT DB_NAME() AS Current_DB
FROM [DB2].[dbo].TblName
UNION ALL
SELECT DB_NAME() AS Current_DB
FROM [DB3].[dbo].TblName
UNION ALL
SELECT DB_NAME() AS Current_DB
FROM [DB4].[dbo].TblName
Результат:
Current_DB
----------
DB1
DB1
DB1
... (632,788 rows of DB1 !!!)
Даже если я опускаю USE [DB1]
изВ запросе T-SQL я получаю те же результаты - база данных, выбранная в раскрывающемся меню «Цель запроса» SSMS, является той, которая появляется в результатах.
Как получить правильный DB_NAME()
для нескольких запросов, используя [DBName].[SchemaName].[TblName]
формат?