【问题标题】:How to get an unique id from sql server如何从 sql server 获取唯一的 id
【发布时间】:2014-12-08 08:53:54
【问题描述】:
有没有办法让普通用户(客户端)在服务器上没有提升权限(没有特殊的数据库权限、本地管理员或任何类型)从服务器获取任何类型的唯一 ID(MAC 地址、数据库安装 ID、服务器硬件 ID)或任何类似的东西?
基本上,我正在寻找一个 ID 来验证安装。我知道我可以通过将某种 ID 写入注册表和数据库来安装服务器端来做到这一点,但是有没有办法在不安装任何东西的情况下做到这一点?最低要求是我从带有 Linux 和 Windows 的 MySQL 和 SQL Server 获得。
我目前的研究表明没有这样的事情。如以下评论所示:
我认为任何答案都需要 xp_cmdshell ,因为它是独一无二的
硬件信息不直接暴露给 SQL Server
【问题讨论】:
标签:
sql-server
linux
windows-server
【解决方案1】:
我认为您不能直接从 Sql-Server 获取硬件详细信息。它可能会抛出可以与 sql-server 和您的系统硬件一起贡献的其他程序。
sql server 中有一个预定义函数,它会为您提供唯一且随机的 id 。
create table TableName
(
id varchar(max) default newid()
)
【解决方案2】:
我能找到的最好的方法是您可以使用来自sys.database_files 的file_guid。您只需要以公共角色执行此操作,并且每个数据库应该是唯一的。如果您创建或删除数据库文件,您会遇到麻烦,而且它不会验证您是否在同一台服务器上。
请注意,如果您的数据库是在 SQL Server 2005 之前创建的,则该值将为空,因为它不存在。