SQL 服务器数据库的唯一 ID

Unique ID of the SQL Server Database

有许多 SQL 服务器数据库是从同一个 .BAK 文件创建的。 我需要获得每个人的唯一 ID 值。获取 DBfiles 的 UID returns 到处都是相同的值。

Oracle 的不同情况。它具有每个数据库服务的唯一 ID。

请让我知道在我的情况下会使用什么技巧或方法? 它应该只是一个 SQL 查询。

谢谢。

应该这样做:

Select * from Sys.Databases

在你的情况下,我认为你需要 namedatabase_idowner_sid 列,不确定它们是否都与你的问题相关。

出于产品许可的原因,我需要获得一个唯一的数据库 ID,最终选择了 service_broker_guid。例如

SELECT db.service_broker_guid FROM sys.databases db WHERE db.name = 'MyDatabase';

结果:ED2E8477-CDC3-49DF-ABEE-341B3E9277DF

注意:对于 is_broker_enabled = 0 的数据库,此值通常为 00000000-0000-0000-0000-000000000000。不过,在我们的例子中,我们只是寻找第一个不是零的值:

SELECT TOP(1) service_broker_guid FROM sys.databases WHERE service_broker_guid <> '00000000-0000-0000-0000-000000000000' ORDER BY database_id;

我认为除非移动或重新创建数据库,否则您对此相当安全,但我尚未对其进行详尽测试。 (如果客户出现问题,我们只会发布新的许可证密钥。)