繁体   English   中英

如何在SQL Server中将服务器名称和实例名称与@@ servername分开

[英]How to Separate server name and instance name from @@servername in SQL Server

如何将服务器名称和命名实例与@@ servername分开。 我知道我可以只使用serverproperty来收集计算机名称或实例名称,但是我正在使用两个必须在表名称上进行联接的表。 表1仅具有服务器名称作为“ TESTDB01”,而表2具有服务器名称和实例名称作为TESTDB01 \\ InstanceName。

当我将这些表连接在一起时,任何带有命名实例的东西都将丢失,因为它具有“ \\ InstanceName”,只有默认实例会被拾取。

见附件图片

您可以使用此:

LEFT(@@SERVERNAME,CHARINDEX('\',@@SERVERNAME)-1)

但是最好使它们在表中分开以使查询可保留。 使用这些字符串函数的连接条件通常(通常)会导致查询性能下降。 LEFT()RIGHT() 可以使用索引,但是经常不使用; SUBSTRING()不能。

只需在您的加入条件中使用替换

on substring(tbl2.instancename, 1, CharIndex('\', tbl2.instancename) - 1) 
= tbl1.servername

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM