一般情况下,人们识别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写专栏。
翻译
TechTarget特邀编辑。2003年入软件行业,熟悉软件过程所有环节,对机构信息化的各方面有深入理解和实践经验。现就职于某互联网创业公司,目前关注互联网分布式系统架构和机器学习。喜欢传统文化社科哲学(尤喜《周易》、《老子》),喜健身喜抓举(具备抱人引体向上的能力),喜欢中国象棋(具备盲棋1对2的能力)。
相关推荐
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
横向扩展SQL Server应用程序:提高工作负载的选项
SQL Server管理员面临的最大挑战之一就是扩展数据库以适应更为繁重的数据处理工作负载。然而事情越发复杂的是,虽然Microsoft提供了许多不同的SQL Server可扩展性选项,但它们并不都适合于每种情况。
-
五大技巧构建首个SQL Server容器
容器的世界庞大而复杂,使用者可能会感到困扰,这里我们将列出一些示例,以便引导您顺利完成SQL Server容器的创建和管理。