一般情况下,人们识别SQL Server实例是通过“@@servername”配置功能。它会返回SQL Server运行其上的服务器名称,和当前的SQL Server实例名。然而,我最近读到了一篇文章,是关于有人想给他的SQL Server实例设置GUID类型的识别符,这是为了使每个实例都能区别于其它实例,而不用管所在的计算机名称。 要做到这一点,按照他人的理论,一种基本做法是简单地为数据库中的第一个物理文件使用“file_guid”属性(也就是说,与主数据库分开)。
这不是一种完美的解决方案,而且这种做法有些缺陷值得商榷,但是它可以很好地达到我们的目的。 要提取“file_guid”属……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
一般情况下,人们识别SQL Server实例是通过“@@servername”配置功能。它会返回SQL Server运行其上的服务器名称,和当前的SQL Server实例名。然而,我最近读到了一篇文章,是关于有人想给他的SQL Server实例设置GUID类型的识别符,这是为了使每个实例都能区别于其它实例,而不用管所在的计算机名称。
要做到这一点,按照他人的理论,一种基本做法是简单地为数据库中的第一个物理文件使用“file_guid”属性(也就是说,与主数据库分开)。这不是一种完美的解决方案,而且这种做法有些缺陷值得商榷,但是它可以很好地达到我们的目的。
要提取“file_guid”属性,你可以简单地运行如下查询。它会返回应该普遍适用的一个GUID:
select top 1 [file_guid] from [sys].[database_files] |
create procedure [dbo].[Server:GetGUID] as begin select top 1 [file_guid] from [sys].[database_files] end |
这种方法的另一个好处是它给你提供了通用接口,你可以实现你自己的程序并根据需要进行扩展。例如,你可以返回更多的列(比如:“@@servername”属性),或者在你不需要获得严格GUID格式的结果时把多个属性字符串拼接。
利用主数据库主文件GUID可能不顺利的一个原因是因为可能有些情况并不会有值赋给它。例如,从之前的版本升级的SQL Server实例会有“NULL”值(参见“sys.master_files” 参考了解更多信息)。
要避免这个问题,你可以简单地利用有GUID的第一个文件:
create procedure [dbo].[Server:GetGUID] as Begin select top 1 file_guid from [master].sys.master_files where file_guid is not null end |
采用这种技术时,要记住的另一件事是:“file_guid”属性往往是非常持久的,即便你备份了数据库然后在另一台计算机上恢复了它,该属性也可能还不变。因此,在这个问题上,GUID比服务器方式更能准确地识别数据库。
这种情况可能很少会用到,但是值得一提。假定你有大量数据库服务器,它们是由恢复空数据库模板备份创建的,而不是利用T-SQL脚本生成的(不管怎么说,你都应该这么做)。那些数据库就会带有“file_guid”属性。正如我在上面提到的,另一种解决办法是利用“file_guid”以相同的方式连接服务器名称,来生成一个部分是GUID,部分是其他独特内容的合并串。
作者
Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。