有没有办法唯一识别数据库?
如果我们要将数据库复制到另一台机器,则假定此实例不同。我检查了主表,但无法识别任何可以识别此信息的信息。
答案 0 :(得分:3)
您可以使用唯一名称在其中创建一个表,然后只需对其进行查询。这确实是一个黑客攻击,但它确实有用......
答案 1 :(得分: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)
答案 2 :(得分:3)
sys.databases
中的{p> service_broker_guid
非常接近您的要求。它是在创建数据库时生成的唯一事件,并在数据库移动时保留(分离和附加,备份和还原,服务器重命名等)。可以使用ALTER DATABASE ... SET NEW_BROKER;
明确更改它。
答案 3 :(得分:1)
创建一个返回ID /版本号的标量函数:
create function fnGetThisDBID() returns varchar(32) as begin
return ('v1.1,origin=server1')
end
select 'version is: ' + dbo.fnGetThisDBID()