• 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

Dobrý večer pane Koutský,

potřebujeme, abyste nám znovu zaslal cca 1000 souborů, protože nedošlo k automatickému spárování se systémem. Seznam požadovaných souborů je v příloze.

 

TVL vážně? Je pátek 19:00 a ten adresář má 97 tisíc souborů, jak z toho mám vykopírovat 1049 souborů ?? 

Vždycky je řešení . Výpověď, přehodit to na kolegyni, ... A nebo si napsat skript pro SQL :-) 

 

Níže uvedený script počítá, že csv soubor má jeden sloupec s názvem souboru. Pro vícesloupcový soubor si jednoduše upravte temp tabulku, skript s více sloupci počítá (oodělovač, akorát název souboru musí být ve sloupci Soubor

 Pochopitelně musíte mít povolené a nakonfigurované použití XP_CMDSHELL a BULK INSERT

 

-- deklarace proměnných
DECLARE
@soubor nvarchar(50), 
@From nvarchar(50) = '\\ds02\atesty\', 
@To nvarchar(50) = '\\ds02\atesty\copy\',
@SQL nvarchar(500)

--vytvoreni pomocne tabulky
CREATE TABLE #TabImport (soubor nvarchar(50))

-- import z csv do pomocne tabulky
BULK INSERT #TabImport 
FROM '\\ds02\atesty\import.csv' 
	WITH (
	      FIELDTERMINATOR =',',
          ROWTERMINATOR ='\n',
	      FIRSTROW = 1,	
          CODEPAGE = 'ACP'
	     )        	

-- kolik to bude souboru? Řeší i duplicitu. Pro kontrolu
SELECT COUNT (DISTINCT(soubor)) FROM #TabImport

-- cyklus pro nazev souboru
DECLARE cur_vypocet CURSOR FOR
-- nacteni nazvu souboru z pom.tab					
SELECT DISTINCT(soubor) FROM #TabImport
-- otevreni kurzoru
OPEN cur_vypocet
FETCH NEXT FROM cur_vypocet INTO @soubor
WHILE @@FETCH_STATUS=0						
  BEGIN
     -- sestaveni prikazu pro kopii souboru
	 SET  @sql = 'copy ' + @From + @soubor + ' ' + @To + @soubor
	 -- zavolani procedury s parametrem kopirovani pro dany soubor
	 EXEC master.dbo.xp_cmdshell @SQL
	 -- pokracuj na dalsi soubor
    FETCH NEXT FROM cur_vypocet INTO @soubor
  END   
-- uzavreni kurzoru
CLOSE cur_vypocet 
-- uvolneni pameti
DEALLOCATE cur_vypocet

-- promazani pomocne tabulky
DELETE FROM #TabImport
-- zruseni tabulky
DROP TABLE #TabImport

 A jde se na pivo :-)

 

 

 

Možností, kvůli kterému přestane fungovat vyhledávání je více ať již problémy s indexováním nebo službou windows search atd.

Mě přestalo v jednu chvíli vyhledávání fungovat na více počítačích a to na některých i přímo při práci (fungovalo a za chvíli již ne)

 

Pomohla mě úprava v registrech:

Najdi v registru větev Počítač\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search

Zde vytvoř položku D-WORD(32bit) s názvem BingSearchEnabled a hodnotou 0

Poté zkontroluj v této větvi ještě položku CortanaConsent která by měla mít také hodnotu 0.

Po restartu by mělo vyhledávání fungovat.

Jak zjistit jestli je číslo sudé nebo liché?

Lze využít jednoduchou fintu s početní operací MODULO, která vrací zbytek po dělení. Jednoduše tedy zjistíme modulo po dělení dvěma a pokud je výsledek 0 tak je číslo sudé a pokud ne tak liché.

V SQL se modulo zjišťuje takto:

 

DECLARE @Cislo numeric(16,0)
SET @Cislo = 17

SELECT @Cislo % 2 AS Modulo2, @Cislo % 3 AS Modulo3

První číslo zobrazuje modulo po dělení 2 a druhé po dělení 3 

 

Pokud chcete pomoci SQL serveru odesílat emaily např.logy a události, musíte tuto funkcionalitu nejprve nakonfigurovat (profil a účet) - toto jsem popisoval SQL - nastavení DB mailu

Emaily pak můžete posílat pomocí systémové procedury sp_send_mail 

Když budete chtít odesílání mailů zpřístupnit i uživatelům musíte provést určitá nastavení, protože defaultně je volání procedury sp_send_mail omezeno. 

Uživatel při volání této procedury dostane odpověď The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'

Možností jak povolit tuto funkcionalitu i pro uživatele je více, ale vždy jsem narazil na nějakou nevýhodu daného řešení např.udělování práv jednotlivým uživatelům znamená při založení uživatele pamatovat na to, že mu musím přidělit nějaká další práva, přidání uživatele k databázi msdb je obdobný problém navíc ne zcela bezpečný,....

 

Toto řešení danou problematiku řeší

Tímhle fíglem lze výsledky dotazu zformátovat do jednoho sloupce.

Klasický dotaz zobrazí výsledky v řádcích

SELECT Posta
FROM TabPSC

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