Wanneer u SQL Server gebruikt, bevat uw huidige verbinding een aantal opties die zaken bepalen zoals de taal, datumnotaties, enz. Deze kunnen worden ingesteld op wat de standaard is, maar ze kunnen ook tijdens de sessie worden overschreven door een SET
verklaring.
Het datumformaat is van invloed op de interpretatie van tekenreeksen, aangezien deze worden geconverteerd naar datumwaarden voor opslag in de database. Als de taal is ingesteld met SET LANGUAGE
, wordt de instelling van het datumformaat impliciet dienovereenkomstig ingesteld. Dit kan expliciet worden overschreven met de SET DATEFORMAT
verklaring.
In ieder geval kunt u het huidige datumformaat vinden met behulp van de DBCC USEROPTIONS
opdracht. Deze opdracht retourneert de SET
opties die zijn ingesteld voor de huidige verbinding.
Syntaxis
De syntaxis gaat als volgt:
DBCC USEROPTIONS [ WITH NO_INFOMSGS ]
De optionele NO_INFOMSGS
argument onderdrukt alle informatieve berichten met een ernstniveau van 0 tot 10.
Voorbeeld
Hier is een voorbeeld van het uitvoeren van de opdracht en de resultaten die ik krijg op mijn huidige testmachine:
DBCC USEROPTIONS;
Resultaat:
+-------------------------+----------------+ | 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 | +-------------------------+----------------+
Zoals vermeld, kunt u deze opties wijzigen met de SET
verklaringen.
Hier is een voorbeeld van het wijzigen van de taal van de huidige sessie en het opnieuw uitvoeren van de opdracht:
SET LANGUAGE German; DBCC USEROPTIONS;
Resultaat:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | 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 | +-------------------------+----------------+ Die Spracheneinstellung wurde in Deutsch geändert.
We kunnen dus zien dat niet alleen de taal is veranderd, maar ook het datumformaat.
Als dit echter niet het gewenste datumformaat is, kan het datumformaat expliciet worden gewijzigd met SET DATEFORMAT
.
Zoals dit:
SET DATEFORMAT mdy; DBCC USEROPTIONS;
Resultaat:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | Deutsch | | dateformat | mdy | | 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 | +-------------------------+----------------+
En we kunnen zien dat het datumformaat is gewijzigd zoals gespecificeerd, terwijl we de taal laten zoals het is.
De sys.dm_exec_requests-weergave
U kunt ook de datumnotatie retourneren die in het huidige verzoek wordt gebruikt door de sys.dm_exec_requests
op te vragen. systeem bekijken. Deze weergave geeft een mooi groot aantal kolommen terug, maar u kunt het beperken tot alleen die kolommen waarin u geïnteresseerd bent. In ons geval zijn we alleen geïnteresseerd in één kolom:de date_format
kolom:
SELECT r.date_format FROM master.sys.dm_exec_requests r WHERE r.session_id = @@SPID;
Resultaat:
+---------------+ | date_format | |---------------| | mdy | +---------------+
Ik heb de vraag ook beperkt tot alleen het huidige verzoek. Ik deed dit met behulp van @@SPID
, die de sessie-ID van het huidige gebruikersproces retourneert.