Her er et par T-SQL-metoder, du kan bruge til at returnere servernavnet i SQL Server.
@@SERVERNAVN
@@SERVERNAME
konfigurationsfunktionen er designet specifikt til at returnere navnet på den lokale server, der kører SQL Server.
For at få servernavnet skal du blot vælge det ved hjælp af en SELECT
erklæring.
SELECT @@SERVERNAME;
Resultat på mit system:
mssql2019_1
Dette fortæller mig, at mit servernavn er mssql2019_1
.
SERVERPROPERTY(Servernavn)
SERVERPROPERTY()
Metadata-funktionen kan også bruges til at returnere servernavnet, såvel som mange andre egenskaber.
For at returnere servernavnet skal du sende ServerName
som et argument.
SELECT SERVERPROPERTY('ServerName');
Resultat:
mssql2019_1
I mit tilfælde er det det samme output.
Forskellen mellem disse to funktioner
De to funktioner ovenfor producerer det samme output på min maskine, men du vil måske opleve, at de producerer lidt anderledes output på din.
De to funktioner er ens, men lidt forskellige. Her er forskellen:
@@SERVERNAVN
giver det aktuelt konfigurerede lokale servernavn.Servernavn egenskaben giver Windows-serveren og instansnavnet, der tilsammen udgør den unikke serverinstans.
Så for eksempel på et Windows-system, hvis dit computernavn er Felix
, og din SQL Server-instans hedder sql1
, der kører SERVERPROPERTY('ServerName')
kan returnere Felix\sql1
.
Maskinnavnet og instansnavnet
SERVERPROPERTY()
funktionen kan også bruges til at returnere maskinnavnet såvel som SQL Server-forekomstnavnet.
De resultater, du får, vil dog afhænge af et par ting (nævnt nedenfor).
Her er, hvad jeg får på min Mac, der kører SQL Server til Linux via en Docker-beholder.
SELECT
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('InstanceName') AS InstanceName;
Resultat:
+---------------+----------------+ | MachineName | InstanceName | |---------------+----------------| | mssql2019_1 | NULL | +---------------+----------------+
Først Maskinnavn
egenskaben returnerer maskinnavnet. Microsofts forklaring er, at den returnerer Windows-computernavnet, som serverforekomsten kører på.
Microsoft udtaler også, at "For en klynget forekomst, en forekomst af SQL Server, der kører på en virtuel server på Microsoft Cluster Service, returnerer den navnet på den virtuelle server".
For så vidt angår InstanceName
egenskaben går, returnerer den navnet på forekomsten til hvilken
brugeren er tilsluttet.
Det returnerer dog NULL
hvis forekomstnavnet er standardforekomsten, hvis inputtet ikke er gyldigt, eller fejl.
I mit tilfælde er instansnavnet standardinstansen, og jeg fik NULL
.