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

时间:2016-03-10 22:23:16

标签: sql sql-server tsql sql-server-2012 sql-server-2008-r2

如何将服务器名称和命名实例与@@ servername分开。我知道我可以使用serverproperty来收集机器名称或实例名称,但我正在处理两个表,我必须在表名上加入。 Table1只有服务器名称为“TESTDB01”,Table2具有服务器名称,实例名称为TESTDB01 \ InstanceName。

当我将这些表连接在一起时,任何带有命名实例的内容都将被遗漏,因为它具有“\ InstanceName”,只会获取默认实例。

See Attached Pic

2 个答案:

答案 0 :(得分:2)

你可以用这个:

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

但是你最好在你的桌子中将它们分开,以使你的查询更加可靠。使用这些字符串函数的连接条件经常(通常)导致查询性能较差。 LEFT()RIGHT() 可以使用索引,但通常不会; SUBSTRING()不能。

答案 1 :(得分:0)

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

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