• aaa

    Poznávačka krás Maďarska - toulání po severu 

  • CAT700

    Non-stop adventure závod přes Katalánsko - z Pyrenejí až k moři

  • Toulání Šumavou
    Toulání Šumavou

    Extrémní non-stop MTB závod

  • 1000 miles
    1000 miles

    Non-stop extrémní adventure závod napříč Československem by Jan Kopka

  • Bohemia Divide 2019

    Non-stop bike packing závod 700km dlouhý z nejjižnějšího do nejsevernějšího místa ČR 

A A A

Občas se stane, že v selectovaných datech jsou skryty znaky pro formátování textu (odřádkování, tabulátory,..) To může být nevhodné pokud tato data exportujete do textového souboru, tisknete apod.

Jedná se hlavně o tyto znaky:

CHAR(9) - tabulátor
CHAR(10) - konec řádku (LF)
CHAR(13) - návrat vozíku (CR)

Lze to vyřešit tím, že znaky vymažeme pomocí funkci REPLACE (defacto je nahradíme za prázdnou hodnotu).

 

DECLARE @Text nvarchar(max)
SET @Text = 'Ahoj ' + CHAR(10) + CHAR(13) + 'Druhy radek'

SELECT REPLACE (REPLACE(@Text,CHAR(10),''),CHAR(13),'')

Tímto skriptem lze exportovat data z určité tabulky do CSV souboru (pokud potřebujete exportovat určitý select, je potřeba vytvořit pomocnou tabulku a tu pak exportovat)

DECLARE 
@SQL nvarchar (MAX),
@CMD nvarchar (500),
@Path nvarchar (200)

-- vytvoření selectu do tabulky TabData
SET @SQL = 'SELECT * FROM ' + DB_NAME()  +'.dbo.TabData'

-- cesta pro uložení + název souboru
SET @Path = (SELECT 'D:\EXPORT\export-file.csv')

-- sestavení celého příkazu
SELECT @CMD =  'bcp " ' + @SQL + ' " queryout ' + @Path  + '  -c -t; -T -S  '

-- export pomocí procedury xp_cmdshell
EXEC master..xp_cmdshell @CMD

 

V následujícím příkladu uvádím možnost jak vytvořit název souboru pomocí datumu a času (např. pro 10.5.2018 v 12 hod 50 min 30 sec to bude 2018-05-10-12-50-30) 

 

DECLARE 
@SQL nvarchar (MAX),
@CMD nvarchar (500),
@Path nvarchar (200)

SET @SQL = 'SELECT * FROM ' + DB_NAME()  +'.dbo.NypTabExportFB'

SET @Path = (SELECT 'D:\EXPORT\' + REPLACE(REPLACE(convert(nvarchar(20),GetDate(),120),':','-') ,' ','-')+'.csv')

SELECT @CMD =  'bcp " ' + @SQL + ' " queryout ' + @Path  + '  -c -t; -T -S  '

EXEC master..xp_cmdshell @CMD

 

Samozřejmostí je nutnost oprávnění pro xp_cmdshell (pozor na bezpečnostní riziko)

 

Tento postup popisuje kroky nutné k nastavení mailové komunikace na SQL serveru.

 

Nastavení lze provést v MS SQL Managment Studiu.

Prvním krokem je spuštění konfiguračního průvodce v menu Managment -> Database Mail

Vybereme první možnost - nastavení db mailu

Pokud nejsou aktivovány služby db mailu v tomto kroku je povolíme.

Pojmenujeme vytvářený mailový profil

Nakonfigurujeme SMTP účet, pomocí kterého budeme odesílat maily přes poštovní server.

Vytvořený profil nastavíme jako výchozí popř.veřejný (je-li žádoucí)

V dalším kroku je možné parametrizovat odesílání popř.nastavit restrikce na typy příloh

Posledním krokem průvodce je shrnutí nastavení.

Potvrzení úspěšného nastavení.

Nyní je možné provést test

 

Pokud chceme používat mailový profil pro zasílání reportů a alertů SQL agentem, je nutné to povolit.

 

Nakonec je ještě třeba nastavit Operátora (kontakt kam budou zprávy zasílány)

 

Nyní už můžeme zasílání alertů nastavit např.na jobech

 

Nejjednodušší způsob jak přenést joby na jiný SQL server je vyskriptování a export jobu v Managment Studiu a následná případná úprava a import (spuštění skriptu) v Mgm studiu na druhém serveru.

Joby je možné uložit jako soubor nebo je otevřít v novém okně MGM studia a pak s nimi dále pracovat.

 

 

 

Občas je zapotřebí do výpočtu použít rozsah prvního a posledního dne v roce. Toto lze získat následujícími skripty.

 

Př.1 - vstupní proměnná je rok ve formátu čísla např. 2016

DECLARE @Rok int
SET @Rok = 2016

-- první den v roce
SELECT  DATEADD(yy, @Rok-1900,0) 

-- poslední den v roce
SELECT  DATEADD(yy, @Rok-1899,0)-1

 

 

 

Př.2 - vstupní proměnná je datum v našem případě aktuální datum

DECLARE @Datum date
-- aktuální datum
SET @Datum = GETDATE()

-- první den aktuálního roku
SELECT DATEADD(yy, DATEDIFF(yy, 0, @Datum),0)

-- poslední den aktuálního roku
SELECT DATEADD(yy, DATEDIFF(yy, 0, @Datum) + 1, -1)

 

Původně to měla být kategorie o cestách, které podniknu na svém starém kole-dědkovi. Pak se mě název zalíbil a říkám si, že jednou budu taky dědek, vlastně syna už na to mám dost velkýho, a tak nadčasově tuto kategorii nechám pojmenovanou takto. Takže zde nalezneš zápisky z cest. 

Zde je můj blog o SQL. Je to takový můj tahák.

Moje poznámky z instalací

Search