Du ved måske, at når du opretter forbindelse til SQL Server, bestemmes sproget for den session normalt af dit login. Når et login oprettes, tildeles det et standardsprog.
Sessionssproget bestemmer datotidspunktet formater og systemmeddelelser.
Selvom du helt sikkert kan ændre standardsproget for et login, kan du også tilsidesætte standardsproget i en session, hvis du har brug for det. Du kan skifte frem og tilbage mellem sprog, hvis det er nødvendigt. Eller du kan endda åbne to separate forbindelser og anvende et andet sprog på hver af dem.
Denne artikel forklarer, hvordan du ændrer sproget i en session.
INDSTIL SPROG
SET LANGUAGE
sætning giver dig mulighed for at indstille sprogmiljøet for den aktuelle session.
Her er et eksempel.
SET LANGUAGE British;
Det sætter det nuværende sprog til britisk.
Jeg kan bekræfte dette med følgende forespørgsel.
SELECT @@LANGUAGE;
Resultat:
British
Datoformater
Du skal vide, at ændring af sproget i en session også ændrer datoformatet.
Her er en anden forespørgsel til at illustrere dette.
DBCC USEROPTIONS;
Resultat:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | British | | dateformat | dmy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Bemærk, at dateformat
er dmy
og datefirst
er 1
. Dette er i tråd med det britiske datoformat.
Her er, hvad der sker, hvis jeg ændrer sproget til us_english
.
SET LANGUAGE us_english; ....... DBCC USEROPTIONS; Time: 0.738s Changed language setting to us_english. +-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Bemærk, at datoformatet implicit ændres for at overholde amerikansk datoformatering.
Hvis du finder dette problematisk, kan du altid ændre datoformatet uden at ændre sproget.
Indstil sprog på forespørgselsniveau
Nogle funktioner accepterer et "kultur"-argument, der tillader dig at angive et sprog, der kun skal bruges til den forespørgsel. Med andre ord kan du ændre sproget ad hoc i en forespørgsel uden at skulle ændre sproget for din aktuelle session.
Her er et eksempel.
SET LANGUAGE us_english;
SELECT
FORMAT(GETDATE(), 'd') AS [My Default],
FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
FORMAT(GETDATE(), 'd', 'de-DE') AS [German];
Resultat:
+--------------+------------+------------+ | My Default | British | German | |--------------+------------+------------| | 3/29/2020 | 29/03/2020 | 29.03.2020 | +--------------+------------+------------+
Få en liste over sprog
Du kan køre følgende forespørgsel for at få en liste over tilgængelige sprog i SQL Server.
EXEC sp_helplanguage;
Du kan også indsnævre det til et specifikt sprog ved at tilføje det med sprogets navn eller alias.
EXEC sp_helplanguage Italian;