Получить имя текущей таблицы в запросе - PullRequest
0 голосов
/ 31 октября 2019

Можно ли получить имя таблицы в операторе выбора?

Пример:

SELECT Id, "Users" as TableName
FROM Users

Я не хочу писать "Users" вручную, но определить его на основе FROM Statement.

Я делаю некоторые миграции из одной базы данных в другую (с другой структурой), и у меня есть таблица сопоставления, в которой хранятся старые имена таблиц, поэтому мне это нужно (это менее подвержено ошибкам).

1 Ответ

2 голосов
/ 31 октября 2019

Вы можете использовать следующий подзапрос для получения этой информации (работает на SQL Server 2012 +):

SELECT  *,
(select object_name(ind.object_id)
from sys.fn_PhysLocCracker(%%physloc%%) plc
INNER JOIN SYS.DM_DB_DATABASE_PAGE_ALLOCATIONS(DB_ID(),null,null,null,null) ind
ON ind.allocated_page_file_id = plc.file_id
AND ind.allocated_page_page_id = plc.page_id) as table_name
FROM [your table]

Это мучительно медленно, кэширование при размещении на боковой странице ускорит процесс.

...