<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sessions &#8211; SQLpowered.com</title>
	<atom:link href="https://sqlpowered.com/tag/sessions/feed/" rel="self" type="application/rss+xml" />
	<link>https://sqlpowered.com</link>
	<description>SQL Server + BI</description>
	<lastBuildDate>Mon, 15 Jun 2020 22:55:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://sqlpowered.com/wp-content/uploads/2020/07/FavIcon-e1594067873682-99x100.png</url>
	<title>sessions &#8211; SQLpowered.com</title>
	<link>https://sqlpowered.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Jazykové nastavení připojení</title>
		<link>https://sqlpowered.com/jazykove-nastaveni-pripojeni/</link>
					<comments>https://sqlpowered.com/jazykove-nastaveni-pripojeni/#respond</comments>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Mon, 11 May 2015 06:01:54 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sessions]]></category>
		<guid isPermaLink="false">https://sqlpowered.com/?p=652</guid>

					<description><![CDATA[Pro každé připojení (session) můžeme nastavit jejích výchozí jazyk a toto nastavení následně určuje některé charakteristiky daného připojení, např. v jakém jazyce se budou zobrazovat systémové zprávy nebo různé formáty data, dny v týdnu a podobně. Než se pustíme do změny jazyka připojení, podívejme se,  jak můžeme zjistit aktuální nastavení:...]]></description>
										<content:encoded><![CDATA[<p>Pro každé připojení (session) můžeme nastavit jejích výchozí jazyk a toto nastavení následně určuje některé charakteristiky daného připojení, např. v jakém jazyce se budou zobrazovat systémové zprávy nebo různé formáty data, dny v týdnu a podobně. Než se pustíme do změny jazyka připojení, podívejme se,  jak můžeme zjistit aktuální nastavení:</p>
<pre class="lang:tsql decode:true">SELECT @@LANGID
SELECT @@LANGUAGE
GO

EXEC sp_helplanguage @@LANGUAGE
GO

SELECT * FROM sys.syslanguages WHERE langid = @@LANGID
GO</pre>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-2911" src="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1.png" alt="" width="1376" height="242" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1.png 1376w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-150x26.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-300x53.png 300w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-768x135.png 768w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-1024x180.png 1024w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-160x28.png 160w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-320x56.png 320w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-520x91.png 520w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-720x127.png 720w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-980x172.png 980w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_1-1320x232.png 1320w" sizes="(max-width: 1376px) 100vw, 1376px" /></p>
<p>Nastavení aktuálního jazyka připojení tedy můžeme zjistit pomocí systémových proměnných @@LANGID nebo @@LANGUAGE, kdy první vrací <em>langid</em> ze systémového pohledu <em>sys.syslanguages</em> a druhá přímo název daného jazyka z téhož systémového pohledu.</p>
<p>Pro zjištění detailů o daném jazyku pak slouží buď systémová procedura <em>sp_helplanguage</em> nebo se můžeme dotázat přímo do výše uvedeného systémového pohledu.</p>
<p>Pokud chceme změnit jazyk daného připojení, např. zobrazovat uživatelům z uložených procedur chybové zprávy v lokálním jazyce, můžeme nastavení upravit pomocí SET LANGUAGE klauzule. A rovnou se můžeme podívat, jak se bude chovat např. funkce DATENAME():</p>
<pre class="lang:tsql mark:1,10 decode:true ">SET LANGUAGE 'English'
GO

SELECT @@LANGUAGE CurrentLanguage
GO

SELECT DATENAME(MONTH, GETDATE()) LocalMonthName
GO

SET LANGUAGE 'Czech'
GO

SELECT @@LANGUAGE CurrentLanguage
GO

SELECT DATENAME(MONTH, GETDATE()) LocalMonthName
GO</pre>
<p><img decoding="async" class="alignnone size-full wp-image-2913" src="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_2.png" alt="" width="173" height="210" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_2.png 173w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_2-82x100.png 82w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_2-132x160.png 132w" sizes="(max-width: 173px) 100vw, 173px" /></p>
<p>Podle nastavení jazyka se nyní názvy měsíců zobrazují buď v angličtině nebo v češtině.</p>
<p>Obdobným způsobem má toto nastavení vliv na jazyk, ve kterém se budou zobrazovat systémové zprávy:</p>
<pre class="lang:tsql decode:true ">SET LANGUAGE 'English'
GO

SELECT @@LANGUAGE CurrentLanguage
GO

SELECT 1/0
GO

SET LANGUAGE 'Czech'
GO

SELECT @@LANGUAGE CurrentLanguage
GO

SELECT 1/0
GO</pre>
<p><img decoding="async" class="alignnone size-full wp-image-2914" src="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_3.png" alt="" width="302" height="94" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_3.png 302w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_3-150x47.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_3-300x93.png 300w, https://sqlpowered.com/wp-content/uploads/2015/05/Language_Settings_3-160x50.png 160w" sizes="(max-width: 302px) 100vw, 302px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sqlpowered.com/jazykove-nastaveni-pripojeni/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SET DATEFORMAT</title>
		<link>https://sqlpowered.com/set-dateformat/</link>
					<comments>https://sqlpowered.com/set-dateformat/#respond</comments>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Sun, 10 May 2015 06:01:14 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sessions]]></category>
		<guid isPermaLink="false">https://sqlpowered.com/?p=650</guid>

					<description><![CDATA[Stává se poměrně často, že potřebujeme převést datum uložený jako textový řetězec na některý z datových typů určených přímo pro ukládání data a času (např. datetime, datetime2, date, etc.). Jak ale zajistíme, aby SQL Server správně rozuměl textovému řetězci a poznal zejména to, v jakém pořadí jsou v něm uloženy...]]></description>
										<content:encoded><![CDATA[<p>Stává se poměrně často, že potřebujeme převést datum uložený jako textový řetězec na některý z datových typů určených přímo pro ukládání data a času (např. datetime, datetime2, date, etc.). Jak ale zajistíme, aby SQL Server správně rozuměl textovému řetězci a poznal zejména to, v jakém pořadí jsou v něm uloženy měsíce a dny, protože do 12. dnes v měsíci nám vše bude fungovat skvěle (např. datum 12.12.2019), neboť nezáleží na tom, na jaké pozici jsou dny a kde měsíce. Jakmile ale počet dnů bude 13 a výše, může se lehce stát, že naše konverze z řetězce na datumový typ selže, protože si SQL Server bude myslet, že převádí z dané pozici číselnou hodnotu na měsíce, ale ouha, ony jsou na této pozici uloženy dny a cokoliv větší než 12 na měsíce převést nelze. Jak se můžeme této nečekané situaci vyhnout si ukážeme pomocí SET DATEFORMAT, kterým pro dané připojení určíme, jak má SQL Server interpretovat textový řetězec při převodu na některý z datumových datových typů.<span id="more-650"></span>Nejprve  jednoduchý příklad:</p>
<pre class="lang:tsql decode:true">SET DATEFORMAT dmy
GO

DECLARE @Date DATETIME 
SET @Date = '31/12/2018 10:00:00'
SELECT @Date
GO</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3000" src="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1.png" alt="" width="170" height="39" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1.png 170w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1-150x34.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1-160x37.png 160w" sizes="auto, (max-width: 170px) 100vw, 170px" /></p>
<p>Zde vidíme, že vše dobře dopadlo. SQL Serveru jsme řekli, že na první pozici v řetězci se nacházejí dny a na druhé měsíce, a nebyl tedy s převodem žádný problém.  Hodnota 31 se správně převáděla na dny.</p>
<p>Nyní zkusme SQL Server zmást:</p>
<pre class="lang:tsql decode:true">SET DATEFORMAT dmy
GO

DECLARE @Date DATETIME 
SET @Date = '12/31/2018 10:00:00'
SELECT @Date
GO</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-3001" src="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR.png" alt="" width="652" height="32" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR.png 672w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR-150x7.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR-300x15.png 300w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR-160x8.png 160w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR-320x16.png 320w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_2_ERROR-520x26.png 520w" sizes="auto, (max-width: 652px) 100vw, 652px" /></p>
<p>Zmatení se podařilo a nastala chyba, která neznamená nic jiného, než že zkrátka a dobře mají-li na druhé pozici v řetězci být měsíce, nemůže se tam ocitnout hodnota 31, protože maximální možné číslo měsíce je 12.</p>
<p>Ponechme tedy datum uložený v řetězci v původní podobě, ale změňme nastavení SET DATEFORMAT tak, aby odpovídalo skutečnému uspořádání řetězce, kdy měsíce přesuneme na první pozici před dny:</p>
<pre class="lang:tsql decode:true">SET DATEFORMAT mdy
GO

DECLARE @Date DATETIME 
SET @Date = '12/31/2018 10:00:00'
SELECT @Date
GO</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3000" src="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1.png" alt="" width="170" height="39" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1.png 170w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1-150x34.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_1-160x37.png 160w" sizes="auto, (max-width: 170px) 100vw, 170px" /></p>
<p>Vše proběhlo správně.</p>
<p>Pro každodenní použití je podstatné si uvědomit, že změny chování dosahujeme použitím SET příkazu pro celé aktivní připojení k SQL Serveru a platí všechny podmínky uvedené <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/set-statements-transact-sql?view=sql-server-2017" target="_blank" rel="noopener noreferrer">zde</a>.</p>
<p>Pokud potřebujeme zjistit, jaké je aktuální stavení DATEFORMAT pro naše připojení (@@SPID), máme dvě možnosti: použít DBCC USEROPTIONS příkaz nebo dohledat příslušné nastavení daného připojení v systémových pohledech:</p>
<pre class="lang:tsql decode:true ">DBCC USEROPTIONS;
GO
SELECT date_format FROM sys.dm_exec_requests WHERE session_id = @@SPID
GO</pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3002" src="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_3_DBCC_USER_OPTIONS.png" alt="" width="247" height="137" srcset="https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_3_DBCC_USER_OPTIONS.png 247w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_3_DBCC_USER_OPTIONS-150x83.png 150w, https://sqlpowered.com/wp-content/uploads/2015/05/SET_DATEFORMAT_3_DBCC_USER_OPTIONS-160x89.png 160w" sizes="auto, (max-width: 247px) 100vw, 247px" /></p>
<p>V obecné rovině lze doporučit takové zacházení s datumovými hodnotami, aby nikdy nebylo nutné měnit nastavení DATEFORMAT, protože změnou nastavení připojení si vnášíme do systému určitou zbytečnou míru entropie, se kterou je třeba dále počítat.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sqlpowered.com/set-dateformat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CONTEXT_INFO()</title>
		<link>https://sqlpowered.com/context_info/</link>
					<comments>https://sqlpowered.com/context_info/#respond</comments>
		
		<dc:creator><![CDATA[Jan Dvořák]]></dc:creator>
		<pubDate>Tue, 26 Aug 2014 15:07:39 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sessions]]></category>
		<guid isPermaLink="false">https://sqlpowered.com/?p=371</guid>

					<description><![CDATA[Session context information enables applications to set binary values of up to 128 bytes that can be referenced in multiple batches, stored procedures, triggers, or user-defined functions operating on the same session. You can set a session context value by using the SET CONTEXT_INFO statement and retrieve it later by...]]></description>
										<content:encoded><![CDATA[<p>Session context information enables applications to set binary values of up to 128 bytes that can be referenced in multiple batches, stored procedures, triggers, or user-defined functions operating on the same session. You can set a session context value by using the SET CONTEXT_INFO statement and retrieve it later by using CONTEXT_INFO() function as in the sample code below.</p>
<pre class="lang:tsql decode:true ">SELECT CONTEXT_INFO()

DECLARE @ci VARBINARY(128)

SET @ci = CAST('HELLO WORLD' AS VARBINARY)

SET CONTEXT_INFO @ci

-- read CONTEXT_INFO()
SELECT CAST(CONTEXT_INFO() AS VARCHAR(20))

-- read from DMV
SELECT session_id, CAST(context_info AS VARCHAR(20)) [context_info]
FROM sys.dm_exec_sessions 
WHERE session_id = @@SPID</pre>
<p>More on <a href="http://msdn.microsoft.com/en-us/library/ms189252.aspx" target="_blank" rel="noopener noreferrer">MSDN</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sqlpowered.com/context_info/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
