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%'
- Napsal Tonda Koutský
- Kategorie: SQL
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:
- Napsal Administrator
- Kategorie: SQL
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 !!!
- Napsal Administrator
- Kategorie: IT
Číst dál: Antivirový program nelze nainstalovat ani po odinstalaci stávajícího antiviru
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
- Napsal Administrator
- Kategorie: IT
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 :-)
- Napsal Administrator
- Kategorie: SQL
Dědek na cestách Počet článků: 3
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.
SQL Počet článků: 39
Zde je můj blog o SQL. Je to takový můj tahák.
IT Počet článků: 13
Moje poznámky z instalací
Strana 3 z 11