• 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

To se tak člověk někdy vychytá, když narazí na proceduru, kterou udělal někdo před ním ...

A to je ideální stav si vysvětlit rozdíl mezi @@IDENTITY a SCOPE_IDENTITY.

Obě tyto funkce vracejí ID posledního záznamu, který procedurou vytvoříme. Např. v proceduře použijeme příkaz, kterým vkládáme do určité tabulky data a následně potřebujeme zjistit ID posledního námi vloženého záznamu, abychom s ním mohli dále pracovat. ID posledního záznamu můžeme samozřejmě zjistit tím, že nad danou tabulkou zavoláme SELECT MAX (ID) FROM ..... nebo SELECT IDENT_CURRENT( 'Tabulka' )  Pozor, to nám ale vrátí poslední ID v tabulce, takže pokud někdo chvilku po nás udělá také INSERT do dané tabulky, budeme mít ID posledního záznamu a ne toho našeho vloženého, tedy není omezeno relací nebo scope.

Použijeme tedy jednu z výše uvedených funkcí, ale pozor na jejich fungování.

SCOPE_IDENTITY vrací ID posledního záznamu v dané transakci a daném scope, takže pouze z tabulky, do které děláme procedurou INSERT

Kdežto @@IDENTITY vrací ID posledního záznamu, kterým procedura ID vyvolá nějaký INSERT. Takže když je nad tabulkou TRIGGER, který udělá na základě vašeho Insertu také Insert (třeba i do jiné tabulky), tak dostanete ID toho záznamu vytvořeného triggem !!

Můžete si říci: dobře, já triggery používat nebudu. To si taky asi řekl ten, kdo udělal proceduru nad tabulkama, kde jsem já dodatečně vytvořil trigger :-) a pak jsem hledal, proč se mě přestaly správně dělat vazby nad záznamy, kde byl použit právě @@IDENTITY

Doporučením je tedy používat SCOPE_IDENTITY

 

 

Tímto skriptem lze v SQL databázi vyhledat objekty, ve kterých se objevuje určitá část kódu nebo příkaz. Např.nedávno jsem musel kvůli určitým změnám vyhledat a změnit procedury a trigery, kde je použit příkaz Raiserror.

SELECT OBJECT_NAME(object_id), definition
FROM sys.sql_modules
WHERE definition LIKE N'%Raiserror%'

Určitě jste někdy bádali nad tím, kdy byla naposledy updatovaná nějaká tabulka. Já dosti často u tabulek vytvářím 2 pole, jeden pro datum a čas insertu záznamu a druhý pro datum a čas posledního updatu. Jsou ale tabulky kde taková data nevyužijete a proto je tam nemáte a pak je třeba tyto informace zjišťovat jinak.

Níže  uvedený script vypíše některé zajímavé informace o tabulce vč.data posledního updatu. Ten je ve sloupci last_user_update

Vysvětlení příkazu: 

OBJECT_NAME(OBJECT_ID) - vrací název tabulky
DB_ID('NazevDB') - vrací ID databáze
OBJECT_ID('NazevTabulky') - vrací ID tabulky 

Pokud v klauzuli WHERE vynecháte název tabulky, vypíší se kompletně všechny tabulky v dané databázi  

USE [CvicnaDB]
GO

SELECT OBJECT_NAME(OBJECT_ID) AS NazevTabulky,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'CvicnaDB')
AND OBJECT_ID=OBJECT_ID('NypTabLogMailu')

 

Výsledek:

Nedávno jsem si lámal hlavu s instalací nového bezpečnostního řešení na firemní stanice. I po odinstalaci stávajícího Esetu a dokonce i po použití speciální utility od Esetu pro odinstalaci v nouzovém režimu, který ve většině případů vyřeší obdobné problémy stále nové řešení tvrdilo, že na počítači je nainstalován jiný antivir a proto nedovolí další instalaci rezidentní ochrany.

Zjistil jsem, že problém je v tom, že v registrech Windows zůstanou instance s nastavením stávajícího antiviru v Security Centru.

Jak z toho ven? Jedna z možností je prohledávat registry a mazat dané klíče. 

Mnohem rychlejší a bezpečnější však je použít příkazový řádek, připojit se k rozhraní WMI (Windows Managment Interface) a dané instance vymazat. Nebo použít nástroj WBEM a provést to stejné v grafickém režimu. Dále popíšu oba postupy

 

1 . Použití příkazové řádky

- Spusť příkazový řádek jako správce CMD.EXE
- Spusť příkaz WMIC
- Zadej /namespace:\\root\SecurityCenter2 PATH AntiVirusProduct get * a spusť
- Vypíší se instance antiviru

- Zkopíruj si GUID dané instance. V mém případě to jsou 2 instance {885D845F-AF19-0124-FECE-FFF49D00F440} a {EC1D6F37-E411-475A-DF50-12FF7FE4AC70}. V dalším kroku je budeš potřebovat
- Vymazej dané instace příkazem /namespace:\\root\SecurityCenter2 PATH AntiVirusProduct WHERE instanceGuid='{885D845F-AF19-0124-FECE-FFF49D00F440}' DELETE (druhou a další instanci vymazej stejně použitím dalších GUID)
- Windows Defender nemazej !!!

 

Outlook se při archivaci řídí informací kdy byla daná zpráva do pst souboru uložena/archivována nikoliv podle data odeslání nebo přijetí zprávy. V některých případech např.když používáte synchronizaci zpráv může být toto datum modifikováno na novější a archivace pak dle nastavených kritérií (datum) nefunguje.

Toto se týká všech Outlooků od verze 2007 po 2019 a O365.

Chování se dá změnit nastavením v registrech, kde se musí změnit klíč ArchiveIgnoreLastModifiedTime na hodnotu 1

 

Cesta ke klíči pro danou verzi Office:

Outlook 2007:
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Preferences
Outlook 2010:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Preferences
Outlook 2013:
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preferences
Outlook 2016, Outlook 2019 a Office 365
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences

Pro Outlook 2007 možná budete muset stáhnout ještě opravu KB2412171, pro Outlook 2010 KB2516474

V editoru registru nalezněte v dané cestě klíč  ArchiveIgnoreLastModifiedTime a změňte hodnotu na 1

 

 Pokud daný klíč ve větvi není, vytvořte jej

 

 a modifikujte hodnotu z 0 na 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