SQL Server数据库实例是否有任何独特之处,可以检测到它已被恢复。如果客户端正在使用数据库并决定在另一台服务器上恢复并运行同一数据库的另一个副本 - 有没有办法用t-sql查询来区分这两个数据库?
答案 0 :(得分:5)
有几种方法可以将数据库标识为另一个数据库的还原/副本:
service_broker_guid
通常是最简单的方法。它是在创建数据库时生成的,并在还原/附加操作期间保留。它可以使用ALTER DATABASE ... SET NEW_BROKER;
显式更改,因此不同的GUID不一定意味着不同的DB。但是相同的GUID意味着数据库的共同起源。如您所见,有几种方法,所需的专业水平和他们提供的篡改证据的程度各不相同。它归结为您的要求和实际用例。最后,请记住SQL Server 不是DRM产品。如果您有一些您认为非常有价值并且必须受到保护的代码/设计,那么您应该将该应用程序作为托管服务提供,以便这种感知到的IP永远不会离开您的物理控制环境。
答案 1 :(得分:0)
数据库开发人员和管理员经常使用GUID作为数据库表的主键,以确保数据库之间的唯一性。这篇材料涉及比较GUID:http://msdn.microsoft.com/en-us/library/ms254976.aspx