270 likes | 432 Vues
Radek Špinka. Přepínače MSSQL výběr. značí konec dávky T-SQL příkazů nástrojům SQL serveru, které zajistí její vykonání není to příkaz T-SQL, je to příkaz sqlcmd ,nebo oqsl , SQL Server MSC editoru nesmí být na stejné řádce jako T-SQL příkaz. GO.
E N D
Radek Špinka Přepínače MSSQLvýběr
značí konec dávky T-SQL příkazů nástrojům SQL serveru, které zajistí její vykonání není to příkaz T-SQL, je to příkaz sqlcmd,nebo oqsl , SQL Server MSC editoru nesmí být na stejné řádce jako T-SQL příkaz GO
v DB se dá zjistit, dle Serverové proměnné Collation – vyjadřuje řazení znaků, jazykové nastavení • nastavuje se při vytváření nové databáze Vyčtení : SELECT SERVERPROPERTY ('Collation') GO Eg : Czech_CI_AS – kde : • CI = case insensitive, CS = case sensitive • AI = accentinsensitive, AS = accent sensitive Case sensitivita
Pokud je přepínač QUOTED_IDENTIFIER(viz dále) nastaven na OFF lze uzavřít konstanty do obou typů uvozovek(tzn. “” nebo ’’), jinak lze použít jen jednoduché uvozovky • Apostrof v literálu : ‘O’’Reilly’ odpovídá O’Reilly Uvozovky
Umožňuje měnit obsah lokální proměnné, u. def. vlastnosti, u. def. veřejné pole,…. Nastavuje specifické informace pro současnou session – přepínače SET
Dateandtimestatements Lockingstatements Miscellaneousstatements QueryExecutionStatements ISO Settingsstatements Statisticsstatements Transactionsstatements Dělení Přepínačů
SET DATEFIRST { number | @number_var } nastaví první den v týdnu od 1 do 7, kde 1 Pondělí a 7 Neděle, Default je 7 pro U.S English Dateandtimestatements
SET DATEFIRST 7; SELECTCAST('1999-1-1' AS datetime) ASSelectDate ,DATEPART(dw, '1999-1-1') ASDayOfWeek; -- 1. Leden, 1999 je pátek. Protože U.S. English obecně -- používá Neděli jako první den v týdnu, funkce DATEPART 1999-1-1 -- vrací hodnotu 6, Protože pátek je šestý den v týdnu -- když týden začíná Nedělí a její hodnota je 1. SET DATEFIRST 3; -- Jelikož středa je nyní považována za první den v týdnu -- DATEPART nyní vrací, že 1999-1-1 (Pátek) je třetí den v týdnu. SELECT CAST('1999-1-1'AS datetime) ASSelectDate ,DATEPART(dw, '1999-1-1') ASDayOfWeek; GO Příklad DATEFIRST
SET LOCK_TIMEOUT timeout_period nastaví dobu, po kterou se čeká na uvolnění zámku (ms) Lockingstatements
SET QUOTED_IDENTIFIER { ON | OFF } identifikátory mohou být uzavřeny v složených závorkách a literály musí být uzavřeny jednoduchými uvozovkami ON INSERT INTO dbo."Test" VALUES (7, 'Text with a single '' quote') OFF INSERT INTO dbo.Test VALUES (7, "Text with a single ' quote") Miscellaneousstatements
ON - Umožnuje vložit explicitní hodnoty do identitních sloupců tabulky Právě jedna tabulka v session může mít tuto vlastnost nastavenou na ON SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
SET PARSEONLY { ON | OFF } pokud je ON tak se nevykonávají příkazy, jen se provede syntax check QueryExecutionStatements
SET ANSI_NULLS { ON | OFF } Specifikuje chování operátorů rovnosti(=) a nerovnosti(<>) dle ISO, když jsou používány na hodnotě NULL ISO Settingsstatements
Všechna porovnání proti hodnotě NULL se vyhodnotí jako UNKNOWN Příkaz select, který používá WHERE nazev_sloupce = NULL vrací 0 řádků i když jsou zde null hodnoty ve sloupci nazev_sloupce. Příkaz select, který používá WHERE nazev_sloupce <> NULL vrací 0 řádků i když jsou zde nonnull hodnoty ve sloupci nazev_sloupce. SET ANSI_NULLS ON
všechna porovnání proti hodnotě NULL se vyhodnotí jako TRUE pokud je hodnota NULL operátory rovnosti a nerovnosti se nedrží standartu ISO Příkaz select, který používá WHERE nazev_sloupce = NULL vrací řádky které mají null hodnoty ve sloupci nazev_sloupce Příkaz select, který používá WHERE nazev_sloupce <> NULL vrací řádky s nonnull hodnotami ve sloupci nazev_sloupce. Takže, příkaz SELECT s klauzulí WHERE nazev_sloupce <> hodnota_XYZvracívšechnyřádky, kterénejsourovnyhodnota_XYZ a nejsou NULL SET ANSI_NULLS OFF
Mějme tabulku test se dvěma sloupci: ID Intprimarykey,Nazevnchar(10) NULL. Naplněnou daty: Příklad ANSI_NULLS
Dotaz : select * from test whereNazev= NULLVýsledek:ID Nazev0 řádků Dotaz : select * from test whereNazev<> NULLVýsledek:ID Nazev0 řádků Příklad SET ANSI_NULLS ON
Dotaz : select * from test whereNazev= NULLVýsledek:ID Nazev2 NULL Dotaz : select * from test whereNazev<> NULLVýsledek:ID Nazev1 Ahoj Příklad SET ANSI_NULLS OFF
v budoucí verzi MS SQL Serveru bude tato hodnota vždy ON a pokus o nastavení na OFF vyhodí chybu SET ANSI_NULLS { ON | OFF }
SET STATISTICS TIME { ON | OFF } ON – zobrazí počet milisekund potřebných k rozboru, kompilaci, a výkonu každého příkazu v okně Messages Statisticsstatements
SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }[ ; ] nastaví úroveň izolacetransakcí Transactionsstatements
SELECT @@Option_NameGO Čtení nastavení Přepínačů
Na dalších dvou slidech je zobrazeno jak nastavit přepínače pro celý dotaz Nastavení Query
Použitá literatura : http://msdn.microsoft.com Konec