sql >> Databasteknik >  >> RDS >> Sqlserver

2 sätt att returnera servernamnet i SQL Server (T-SQL)

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 .


  1. Reducerar parametern postgresql.conf, åt gången

  2. Skillnad mellan WITH-sats och underfråga?

  3. Hur man ställer in måndag som första veckodag i SQL Server

  4. returnera värde vid en position från STRING_SPLIT i SQL Server 2016