Уникальный идентификатор базы данных SQL Server
Есть много баз данных SQL Server, созданных из того же .BAK
файл. Мне нужно получить уникальный идентификатор каждого из них. Получение UID DBfiles возвращает везде одно и то же значение.
Другая ситуация с Oracle. Он имеет уникальный идентификатор каждой службы БД.
Пожалуйста, дайте мне знать, какой трюк или метод будет использоваться в моем случае? Это должен быть только один запрос SQL.
Благодарю.
1 ответ
Это должно сделать это:
Select * from Sys.Databases
В твоем случае я думаю тебе нужно name
, database_id
а также owner_sid
столбцы, не уверен, что они все имеют отношение к вашему вопросу.
Мне нужно было получить уникальный идентификатор базы данных по причинам лицензирования продукта, и в конце концов я выбрал service_broker_guid
. Например
SELECT db.service_broker_guid FROM sys.databases db WHERE db.name = 'MyDatabase';
Результат: ED2E8477-CDC3-49DF-ABEE-341B3E9277DF
ПРИМЕЧАНИЕ. Обычно это значение 00000000-0000-0000-0000-000000000000
для баз данных, где is_broker_enabled = 0
. В нашем случае, однако, мы просто искали первое значение, которое не было нулем:
SELECT TOP(1) service_broker_guid FROM sys.databases WHERE service_broker_guid <> '00000000-0000-0000-0000-000000000000' ORDER BY database_id;
Я думаю, с этим вы в полной безопасности, если только база данных не будет перемещена или воссоздана, но я не проверял это полностью. (Мы просто выдадим новый лицензионный ключ в случае проблемы с клиентом.)