Här är ett par T-SQL-metoder som du kan använda för att returnera servernamnet i SQL Server.
@@SERVERNAME
@@SERVERNAME
konfigurationsfunktionen är utformad specifikt för att returnera namnet på den lokala server som kör SQL Server.
För att få servernamnet väljer du det helt enkelt med en SELECT
uttalande.
SELECT @@SERVERNAME;
Resultat på mitt system:
mssql2019_1
Detta säger mig att mitt servernamn är mssql2019_1
.
SERVERPROPERTY(Servernamn)
SERVERPROPERTY()
Metadatafunktionen kan också användas för att returnera servernamnet, liksom många andra egenskaper.
För att returnera servernamnet måste du skicka ServerName
som argument.
SELECT SERVERPROPERTY('ServerName');
Resultat:
mssql2019_1
I mitt fall är det samma utdata.
Skillnaden mellan dessa två funktioner
De två funktionerna ovan ger samma utdata på min maskin, men du kanske upptäcker att de producerar något annorlunda utdata på din.
De två funktionerna är lika, men något olika. Här är skillnaden:
@@SERVERNAME
tillhandahåller det för närvarande konfigurerade lokala servernamnet.ServerName
egenskapen tillhandahåller Windows-servern och instansnamnet som tillsammans utgör den unika serverinstansen.
Så till exempel på ett Windows-system, om ditt datornamn är Felix
, och din SQL Server-instans heter sql1
, kör SERVERPROPERTY('ServerName')
kan returnera Felix\sql1
.
Maskinnamnet och instansnamnet
SERVERPROPERTY()
funktionen kan också användas för att returnera maskinnamnet såväl som SQL Server-instansens namn.
Men resultatet du får beror på ett par saker (som nämns nedan).
Det här är vad jag får på min Mac som kör SQL Server för Linux via en Docker-behållare.
SELECT
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('InstanceName') AS InstanceName;
Resultat:
+---------------+----------------+ | MachineName | InstanceName | |---------------+----------------| | mssql2019_1 | NULL | +---------------+----------------+
Först, MachineName
egenskapen returnerar maskinnamnet. Microsofts förklaring är att den returnerar Windows-datornamnet som serverinstansen körs på.
Microsoft säger också att "För en klustrad instans, en instans av SQL Server som körs på en virtuell server på Microsoft Cluster Service, returnerar den namnet på den virtuella servern".
Så långt som InstanceName
egenskapen går, returnerar den namnet på instansen till which
användaren är ansluten.
Den returnerar dock NULL
om instansnamnet är standardinstansen, om inmatningen inte är giltig eller fel.
I mitt fall är instansnamnet standardinstansen och jag fick NULL
.