středa 20. března 2019

Jak zaregistrovat vlastní event do EventVieweru

  • Expand HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog
  • Find the Application key and create a new key for your application: MyApp
  • In MyApp, right-click the right side window in the blank area and select New > Expandable String Value. This will create a REG_EXPAND_SZ entry. Give it the name EventMessageFile.
  • Double-click the new entry to set a value. For the value, enter: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\EventLogMessages.dll Select OK.
  • Leave the (Default) string value alone with its (value not set) value.
  • Repeat two more times by replacing CurrentControlSet with ControlSet001 and ControlSet002.

pondělí 26. června 2017

Jak smazat obsah databáze bez databáze

Když je potřeba smazat vše z databáze, ale databázi zanechat.

PRINT 'Dropping whole database'
GO

------------------------------------------
-- Drop constraints
------------------------------------------
DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT DISTINCT sql = 'ALTER TABLE ['+tc2.CONSTRAINT_SCHEMA+'].[' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + ']'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME

OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql

WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @Sql
Exec (@Sql)
FETCH NEXT FROM @Cursor INTO @Sql
END

CLOSE @Cursor DEALLOCATE @Cursor
GO


------------------------------------------
-- Drop views
------------------------------------------

DECLARE @sql VARCHAR(MAX) = ''
, @crlf VARCHAR(2) = CHAR(13) + CHAR(10) ;

SELECT @sql = @sql + 'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(v.name) +';' + @crlf
FROM sys.views v

PRINT @sql;
EXEC(@sql);
GO
------------------------------------------
-- Drop procs
------------------------------------------
PRINT 'Dropping all procs ...'
GO

DECLARE @sql VARCHAR(MAX) = ''
, @crlf VARCHAR(2) = CHAR(13) + CHAR(10) ;

SELECT @sql = @sql + 'DROP PROC ' + QUOTENAME(SCHEMA_NAME(p.schema_id)) + '.' + QUOTENAME(p.name) +';' + @crlf
FROM [sys].[procedures] p

PRINT @sql;
EXEC(@sql);
GO

------------------------------------------
-- Drop tables
------------------------------------------
PRINT 'Dropping all tables ...'
GO
EXEC sp_MSForEachTable 'DROP TABLE ?'
GO

------------------------------------------
-- Drop sequences
------------------------------------------

PRINT 'Dropping all sequences ...'
GO
DECLARE @DropSeqSql varchar(1024)
DECLARE DropSeqCursor CURSOR FOR
SELECT DISTINCT 'DROP SEQUENCE ' + s.SEQUENCE_SCHEMA + '.' + s.SEQUENCE_NAME
FROM INFORMATION_SCHEMA.SEQUENCES s

OPEN DropSeqCursor

FETCH NEXT FROM DropSeqCursor INTO @DropSeqSql

WHILE ( @@FETCH_STATUS <> -1 )
BEGIN
PRINT @DropSeqSql
EXECUTE( @DropSeqSql )
FETCH NEXT FROM DropSeqCursor INTO @DropSeqSql
END

CLOSE DropSeqCursor
DEALLOCATE DropSeqCursor
GO

------------------------------------------
-- Drop Schemas
------------------------------------------


DECLARE @schemas as varchar(1000) = 'StaticData,Ird,DataImport,Collateral,Report,Cds,CommonTrade,MarketData,TypeCode'
DECLARE @schemasXml as xml = cast((''+replace(@schemas,',' ,'')+'') as xml)

DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
SELECT sql = 'DROP SCHEMA ['+schemaName+']' FROM
(SELECT CAST(T.schemaName.query('text()') as VARCHAR(200)) as schemaName FROM @schemasXml.nodes('/schema') T(schemaName)) as X
JOIN information_schema.schemata S on S.schema_name = X.schemaName

OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql

WHILE (@@FETCH_STATUS = 0)
BEGIN
PRINT @Sql
Exec (@Sql)
FETCH NEXT FROM @Cursor INTO @Sql
END

CLOSE @Cursor DEALLOCATE @Cursor
GO

pátek 23. června 2017

Nelze přidávat knihy do Calibre

Mám knihovnu na připojeném disku NASu a přestalo mi fungovat přidávání knih v Calibre. Našel jsem funkční řešení: v adresáři knihovny Calibre smazat soubor "metadata_db_prefs_backup.json".

čtvrtek 21. ledna 2016

Povolení CLR

Ve výchozím stavu je podpora CLR zakázaná (MS SQL 2014 Express) a je potřeba ji povolit.
Spuštěním následujícího:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO

sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO

Pravděpodobně se bude muset ještě nastavit právo pro uživatele. Ve vlastnostech uživatele "Securables" zaškrtnout "Grant" na Permisson "View server state".
Případně  takto:
USE [master]

GO

GRANT VIEW SERVER STATE TO "Login/Group name"

Pro tato nastavení musí být uživatel asi sysadmin.

úterý 5. května 2015

Kontrola platnosti certifikátu

Zkontrolovat platnost certifikátu lze pomocí následujícího příkazu:
certutil -dump cesta_k_certifikátu
Zkontroluju tím i platnost certifikátu pro VPN :-)

pondělí 27. října 2014

Chyba při použití ConditionOperator.In a pole hodnot

Potřeboval jsem omezit výběr dat v QueryExpression podle jednoho atributu (EntityReference), který mohl nabývat (pole) hodnot. Ale dostal jsem chybovou hlášku "...expected argument(s) of type 'System.Guid' but received 'System.Guid[]". Chyba je způsobena ve zjednoduššení volání "AddCondition" ve tvaru
filter.AddCondition("acm_portfolioid", ConditionOperator.In, portfolios.Select(item => item.Id).ToArray());

Použije-li se varianta
filter.AddCondition(new ConditionExpression("acm_portfolioid", ConditionOperator.In, portfolios.Select(item => item.Id).ToArray()));
tak k chybě nedojde a vše proběhne jak má.

Změna hesla na RDP v RDP

Nejjednodušší je využít "On-Screen Keyboard". Na starších systémech např. "All Programs -> Accessories -> Ease of Access". Na novějších asi vyhledat dle názvu.
Na fyzické klávesnici se stiskne Ctrl+Alt a na obrazovce jen Del a je hotovo :-)