Значение базы данных SQL повторно используется? - PullRequest
1 голос
/ 09 июня 2019

Когда я запускаю запрос ниже, я получаю поле database_id для каждой базы данных.У меня сложилось впечатление, что значение используется повторно.Например, я удаляю базы данных, затем я восстанавливаю новые базы данных.Значение database_id для некоторых из этих недавно восстановленных баз данных может быть старым.Это возможно?Можно ли это изменить?

Причина, по которой я спрашиваю, заключается в следующем.Я выполняю запрос по каждой БД на сервере SQL.Я хотел бы исключить некоторые БД, и я использую поле database_id для определения тех, которые я хочу пропустить в запросе.Однако, если database_id используется повторно, я должен регулярно обновлять запрос.Спасибо.

SELECT *
FROM sys.databases

Ответы [ 2 ]

2 голосов
/ 09 июня 2019

Database_id может измениться, поэтому вы должны использовать функцию DB_ID для получения правильного значения перед выполнением любого типа сравнения.

DB_ID

Эта функция возвращает идентификационный номер (ID) базы данных указанной базы данных.

DB_ID ( [ 'database_name' ] )  

Например:

SELECT *
FROM sys.master_files
WHERE database_id = DB_ID('my_database_name');

-- instead of
SELECT *
FROM sys.master_files
WHERE database_id = 18;  -- database_id may not exists or point to different db
0 голосов
/ 09 июня 2019

Вот что я сделаю и решу мою ситуацию.

Используя решение, предложенное в этой теме , я выполню подзапрос и создам список всех баз данных, в которых существует целевая таблица. Затем я выполняю запрос по всем тем БД, которые доступны в этом списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...