Vývojářský blog Tomáše Jechy

  Poslední články
  Období

RSS Feed RSS Feed

.NET Tips   2D   3D   Aplikace   ASP.NET   C#   C++   HTML+CSS   Internet   Javascript   Office   Silverlight   SQL   VB.NET   VB6   VbNet.cz   Vista   VS   Život, vesmír a vůbec   Všechny články

Více SqlConnection v TransactionScope

Poslední dva dny jsem se vztekal při hledání důvodu problémů, které nastávaly při použití technologie pro řízení transakcí (System.Transactions) v .NET Frameworku. Většinou o ní slýcháváme díky třídě TransactionScope, která zastupuje blok kódu, jehož běh má být transakční.

K čemu slouží TransactionScope?

Řízení transakcí je implementováno v řadě technologií obsažených v .NET Frameworku – příkladem může být WCF nebo klient pro komunikaci s databází. Zároveň je dobré zmínit, že pokud komponenta neimplementuje komunikaci s transakčním jádrem, není kód transakcí nijak ovlivněn. Jako asi největší výhodu využití vidím v distribuovaných systémech. Transakci je totiž možné propagovat i skrze komunikační kanál WCF.

Pokud se transakce propaguje skrz služby mezi více počítačů, je nutné mít na obou počítačích aktivní MSDTC službu s povoleným vzdáleným přístupem a správně nastavený firewall. Důležitý je fakt, že při samotné komunikaci zahajuje volání počítač, který jako první vyžaduje od toho druhého nějaké informace o transakci. Oba stroje tedy musí mít možnost přímého spojení pomocí NETBIOS jména (doménové jméno nefunguje). Pro zjištění, zda je vše správně nastaveno lze využít jednoduchou aplikaci Microsoft DTC Ping.

Více spojení k databázi v jednom TransactionScope

[Pokračování článku]

Datum: 5. 1. 2012 18:55
Diskuse: 0
Hodnocení: Hodnocení: 4,5/5Hodnocení: 4,5/5Hodnocení: 4,5/5Hodnocení: 4,5/5Hodnocení: 4,5/5     Zobrazeno: 1264x

Kategorie: SQL, VB.NET, C#        

Hádanka - SQL Server a zpracování dotazů

Dnes mě napadla jedna hádanka týkající se optimalizace dotazů v SQL Serveru. Tady je:

Máme tabulku se sloupci:

  • Id (primary key, clustered index)
  • Data1 (nonclustered index)
  • Data2 (bez indexu)

Otázka zní:
Proč se v dotazu select Id from Tabulka použije scanování podle indexu nad sloupcem Data1 a ne nad primárním klíčem Id?


Řešení:

[Pokračování článku]

Datum: 27. 4. 2011 20:22
Diskuse: 5
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 2524x

Kategorie: SQL        

Demo a prezentace z přednášky “Novinky pro vývojáře v SQL Server 2008”

Zde stáhnete demo z přednášky o Microsoft SQL Serveru 2008. V balíčku je prezentace, SQL scripty a projekty dem.

Novinky pro vývojáře v SQL Server 2008

[Zobrazit článek]

Datum: 23. 4. 2010 19:31
Diskuse: 0
Hodnocení: Hodnocení: 3/5Hodnocení: 3/5Hodnocení: 3/5Hodnocení: 3/5Hodnocení: 3/5     Zobrazeno: 2405x

Kategorie: SQL        

.NET Tip #31: Pozor na datum v SQL Serveru

Dnes tu budu psát o 2 chuťovkách, které mohou vývojáře překvapit při psaní Transact-SQL scriptů pro Microsoft SQL Server. Obě by se daly označit oblíbeným tagem “na mém počítači to funguje, tak proč ne na serveru u zákazníka?!”.

První problém je s parsováním data. Pokud píšete SQL scripty, často narazíte na nutnost zadat datum textově. Možná už tušíte, že na každém serveru může být formát jiný. Ty se liší pořadím jednotlivých složek (m = měsíc, y = rok, d = den). V SQL Serveru existují následující: mdy, dmy, ymd, ydm, myd, dym. Formát lze ale snadno nastavit příkazem SET DATEFORMAT formát. Takže pokud chcete používat datum ve formátu ‘2009-05-17’ bylo by dobré před zadáváním zavolat:

-- formát datumů ROK, MĚSÍC, DEN
set dateformat ymd

Jak to tak bývá, tak většinou je zadávání data bez problémů, ale lepší je formát vždy upřesňovat. Více informací na MSDN: http://msdn.microsoft.com/en-us/library/ms189491.aspx

Druhý zádrhel může nastat při zjišťování čísla dne v týdnu funkcí DATEPART(dw, ‘datum’). Ta vrací rozsah mezi 1-7. Pokud nekouknete do dokumentace a pouze si zkusíte, jaké čísla to vrací pro jaký den, můžete si myslet, že čísla jsou pro jednotlivé dny pevně dány. Bohužel ale první den může být kterýkoliv v závislosti na nastavení. Proto je i zde lepší před zjišťováním dne v týdnu použít funkci SET DATEFIRST číslo_dne. Jako parametr předáte číslo dne, který má být označován jako první (1 pro pondělí, 7 pro neděli).

[Pokračování článku]

Datum: 3. 7. 2009 11:22
Diskuse: 5
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 3761x

Kategorie: SQL, .NET Tips        

.NET Tip #22: JOIN (obrázek inside)

Skoro každý se setkal s jazykem SQL a jedním z jeho příkazů JOIN pro spojení řádků dvou tabulek do jedné. Bohužel ne všichni mají 100% jasno jak příkaz používat a jak využít jeho varianty v Microsoft SQL Serveru.

Základní syntaxe příkazu je:

SELECT * FROM Tabulka1 JOIN Tabulka2 ON Tabulka1.Sloupec = Tabulka2.Sloupec

Ta vybere kombinace řádků z tabulky Tabulka1 a Tabulka2, které mají shodnou hodnotu sloupce Sloupec. Místo klíčového slova JOIN však můžeme použít i LEFT JOIN, FULL JOIN nebo RIGHT JOIN. Každá z těchto variant může ovlivnit počet i hodnotu výsledků. Celé to lze znázornit jako průniky množit hodnot:

Join poster

[Pokračování článku]

Datum: 3. 11. 2008 15:24
Diskuse: 1
Hodnocení: Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5Hodnocení: 5/5     Zobrazeno: 2659x

Kategorie: SQL, .NET Tips        

 Strana 1 z 2 (článků: 6) 12Další »»» 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.