Category Archives: Database

Tipy a triky T-SQL – Slides a dema [TechEd Praha 2012]

Slides a dema z přednášky na konferenci TechEd DevCon Praha 2012:

Záznam z přednášky nebyl pořizován.

Návrh schématu DB – Slides a záznam [MS Fest 2011]

Slides z přednášky pro MS Fest Praha 2011:

Záznam z přednášky najdete na našem YouTube Channel:

MSSQL: Neměňte „Maximum server memory (in MB)“ na 0

Dneska jsem se nechal unést a chtěl jsem vypnout na MS SQL 2008 R2 horní mez využité paměti, kterou jsme měli na serveru staženou na 2.5 GB.

Nu což, vlezl jsem do SQL Management Studia, dal jsem si vlastnosti serveru, koukám do nastavení Memory a změnil jsem nastavení vlastnosti „Maximum server memory (in MB)“ z 2500 na 0 (velmi naivně jsem předpokládal, že stejně jako jinde to bude interpretováno jako „no limit“).

Omyl, to nezkoušejte. Poslední, co jsem ještě záhledl bylo, že si to SQL sám změnil na 16 (MB) a to bylo na dlouho všechno, co jsem z SQL serveru viděl.

Následný pokus změny na vyšší hodnotu už SQL Management Studio neprovedlo, nové připojení na SQL Management Studio už neúspěšné (ani nevytvořil connection).

Zůstal viset ve stavu, kdy si nechal asi 500 MB paměti a bral 25% CPU, což nekleslo ani po odpojení zátěže (kterou již stejně neodbavoval).

Stop service nic, takže kill procesu z task manageru.

Nový start service, zabraná paměť procesem 70 MB, bez šance na připojení z Management Studia.

Zkouším OSQL, sp_reconfigure, nic, hlášky typu „There is insufficient system memory in resource pool ‚internal‘ to run this query.“, nebo se vůbec nevytvoří connection.

Nakonec jsem to vybojoval na několikátý pokus (vždy těsně po startu service) přes „sqlcmd -A -E“ (Dedicated Administrator Connection) a volby

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 2147483647;
GO
RECONFIGURE;
GO

…horká půlhodinka.

VaDo said:

Nepomohlo nastartovat SQL server z command line? http://msdn.microsoft.com/en-us/library/ms190737.aspx

David Hlaváček said:

Právě pro tyto stavy je k dispozici DAC (Dedicated Administrator Connection). Je to vyhrazené připojení pro systémového administrátora, které má přednostní právo v přidělení prostředků. V praxi se SQL Server z důvodu nedostatku paměti může dostat do stavu, který je ve článku posán.

Management Studio dokáže DAC použít také, tam je to o změně connection stringu kdy v před název serveru se uvede ADMIN: tedy „ADMIN:SQLServer1“.

DAC je standardně zapnuto pouze lokálně tzn. protokol Shared memory. Pokud by se tedy celý server dostal do problémů s pamětí, DAC není nic platné, když ho lokálně nevytvoříme. Proto je možné zapnout DAC s možností vzdáleného přístupu, což je vlastnost, která je po instalaci standardně zablokována a je nutné ji povolit.

Návrh schématu databáze – Slides a ukázkové DB [TechEd Praha 2011]

Slides a vzorové DB z přednášky pro TechEd Praha 2011:

Záznam z přednášky nebyl pořizován, jiná verze téže přednášky však byla prezentována pro MS Fest Praha 2011 a k té záznam existuje.

Český stemmer do MSSQL 2008 R2 x64

Dneska se budu s laskavým svolením chlubit cizím peřím, uvádím postup (mnou neověřený, ale z důvěryhodného zdroje – od Roberta Kindla z firmy EXEC), jak do MS SQL 2008 R2 x64 dostat český stemmer pro fultextové vyhledávání:

****

musis nainstalovat Microsoft Search Server 2010 Express – to by melo byt zdarma a cesky stemmer to obsahuje

bohuzel je ale ten stemmer dostupny jen v tom Sharepointu (neregistruje se to do systemu)

takze jsem vlasnimi silami vyhackoval toto:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSearch\Language\ces]
„TsaurusFile“=“tsces.xml“
„Locale“=dword:00000405
„WBreakerClass“=“{468bfc77-3876-4a47-a6ff-f5f6e8ea7968}“
„StemmerClass“=“{f51b7203-9bf9-4c39-b655-18fad8fa8a9a}“
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSearch\CLSID\{f51b7203-9bf9-4c39-b655-18fad8fa8a9a}]
@=“c:\\Program Files\\Microsoft Office Servers\\14.0\\Bin\\mswb7.dll“
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSearch\CLSID\{468bfc77-3876-4a47-a6ff-f5f6e8ea7968}]
@=“c:\\Program Files\\Microsoft Office Servers\\14.0\\Bin\\mswb7.dll“
toto konkretne zaregistruje ten cesky stemmer z Microsoft Search Server 2010 Express do MSSQL 2008 R2 (pro MSSQL 2008 a MSSQL 2005 by to zrejme slo podobne)

pak uz staci jen
exec sp_fulltext_service ‚update_languages‘;
exec sp_fulltext_service ‚restart_all_fdhosts‘;

overeni instalace (vypise se stemmer) s lcid 1029
exec sp_help_fulltext_system_components wordbreaker
SELECT * FROM sys.fulltext_languages order by lcid

sklonovat to umi:
select * from sys.dm_fts_parser(‚FORMSOF(INFLECTIONAL, květina)‘, 1029, 0, 0)

++++

jeste je asi treba tohle:
copy „c:\Program Files\Microsoft Office Servers\14.0\Data\Config\tsces.xml“ „c:\MSSQL2008R2\FTData“ (do slozky k ostatnim ts???.xml)
Noise Words, ktere jsou v Sharepointu 2010 ulozeny v c:\Program Files\Microsoft Office Servers\14.0\Data\Config\noiseces.txt by se na MSSQL 2008 R2 mely konfigurovat pres CREATE FULLTEXT STOPLIST

Tipy a triky T-SQL z praxe – Slides a dema [TechEd Praha 2010]

Slides a dema z přednášky na konferenci TechEd Praha 2010:

Záznam z přednášky nebyl pořizován.

Optimalizace databázových aplikací – Slides, dema, záznam [SQL DevCon 2009, MS Fest 2009]

Slides a další materiály z přednášky na konferenci SQL DevCon 2009 a MS Fest 2009 (na obou konferencích byla prezentována velmi podobná verze):

Z přednášky byl pořizován záznam, který je k dispozici na našem YouTube Channelu:

Podobná přednáška v rozsáhlejší podobě se záznamem byla prezentována i pro WUG Praha v březnu 2013.

Transaction log narůstá, backup nepomáhá, shrink neúčinný

Na MSSQL serveru se občas stává, že backupování přestane truncatovat transaction log a ten narůstá a narůstá.

Z nějakého důvodu je potřeba udělat sekvenci shrink-backup-shrink, aby bylo dosaženo požadovaného účinku:

1) Run this code:

DBCC SHRINKFILE(pubs_log, 2)

2) Run this code if you want to truncate the transaction log and not keep a backup of the transaction log. Truncate_only invalidates your transaction log backup sequence. Take a full backup of your database after you perform backup log with truncate_only:

BACKUP LOG pubs WITH TRUNCATE_ONLY

-or-

Run this code if you want to keep a backup of your transaction log and keep your transaction log backup sequence intact. See SQL Server Books Online topic „BACKUP“ for more information:

BACKUP LOG pubs TO pubslogbackup

3) Run this code:

DBCC SHRINKFILE(pubs_log, 2)

Aktualizace pro SQL 2008

V SQL Serveru 2008 již není BACKUP LOG WITH TRUNCATE_ONLY přepínač použitelný, místo toho je možné přepnout DB do Simple recovery modelu a udělat shrink logu. Pak je možné přepnout zpět na Full.

-nebo-

Update od Martina Falty pro SQL 2008+ (díky)

DBCC SHRINKFILE(pubs_log, TRUNCATEONLY)

Viz http://technet.microsoft.com/en-us/library/ms189493(v=sql.100).aspx

SQL Transakce + mýty – Slides, dema, záznam [SQL DevCon 2008]

Slides a dema z přednášky na konferenci SQL DevCon 2008:

Z přednášky byl pořizován záznam, který najdete na našem YouTube Channelu:

Vytvoření loginu pro doménovou skupinu

V management nástrojích pro SQL Server 2005 nelze založit login pro doménovou skupinu.
Login se mi podařilo založit pomocí příkazu

create login [HAVIT\Development] from windows

kde v našem případě je Development doménovou skupinou.
Další pozorování je, že login doménové skupiny není možné pomocí management studia zakázat:

  • při nastavení Login na Disabled je zobrazena chyba,
  • nastavení Permissions to connect to database engine na Deny je ignorováno.