SQL Server中是否有一种唯一标识数据库的方法?

时间:2010-06-02 11:32:21

标签: sql-server

有没有办法唯一识别数据库?

如果我们要将数据库复制到另一台机器,则假定此实例不同。我检查了主表,但无法识别任何可以识别此信息的信息。

4 个答案:

答案 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()