2010-06-02 2 views
7

Есть ли способ уникальной идентификации базы данных?Есть ли способ в SQL Server однозначно идентифицировать базу данных?

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

+0

Я ищу то же самое - ни один из этих ответов не работает для меня, поскольку цель заключается в том, что идентификатор не будет действительным, если база данных будет перенесена на другой компьютер. –

+0

Это старый пост, но я искал одно и то же, и я нашел контрольную сумму (созданную при установке), которая уникальна для любого SQL Server и работает, даже если это экспресс-версия. Он находится на HKLM \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Setup. ОДНАКО Я не уверен, что изменение этой контрольной суммы вредит SQL Server ... –

ответ

3

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

+0

+1. Красота взлома: o) –

+0

Если я копирую базу данных, я не уверен, можем ли мы определить, изменилась ли база данных. Не уверен, что я что-то упустил, можете ли вы подробнее рассказать подробнее? – sraj

+0

, который изменяет формулировку. Вы имеете в виду способ распознавания db на другой машине или способ изменения db при копировании на другую машину или способ подтверждения того, что db каким-то образом изменилось на другой машине? –

1

Создать скалярную функцию, которая возвращает номер ID/Версия:

create function fnGetThisDBID() returns varchar(32) as begin 
    return ('v1.1,origin=server1') 
end 

select 'version is: ' + dbo.fnGetThisDBID() 
3

Вы можете поместить информацию в расширенной собственности, связанной с самой базой данных:

USE AdventureWorks2008R2; 
GO 
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'AdventureWorks2008R2 Sample OLTP Database'; 
GO 

http://msdn.microsoft.com/en-us/library/ms190243.aspx

В вашем случае, я хотел бы использовать что-то вроде этого:

EXEC sys.sp_addextendedproperty 
@name = N'UniqueID', 
@value = N'10156435463'; 

select objname, [name], [value] 
from fn_listextendedproperty (null, null, null, null, null, null, null) 
3

service_broker_guid в sys.databases подходит к тому, что вы просите. Это уникальный идентификатор, созданный при создании базы данных и сохраняется при перемещении базы данных (отсоединение и подключение, резервное копирование и восстановление, переименование сервера и т. Д.). Он может быть явно изменен с помощью ALTER DATABASE ... SET NEW_BROKER;.

+0

Нам будет нужно прямо противоположное тому, что я думаю. Если база данных скопирована на новый сервер, это должно быть отмечено уникальным. Если я объединять имя сервера и идентификатор, это может сделать его уникальным. – sraj

Смежные вопросы