O kategoriích

PowerShell

Členství uživatele ve skupinách AD

Zjištění resp. výpis skupin, jejichž je uživatel členem není zcela triviální a není možné se na tuto informaci dotázat, jako na vlastnost objektu uživatele. Je potřeba to trochu obejít. Musíme tedy nejprve projít všechny skupiny Active Directory a zjistit, jestli je daný uživatel jejich členem, následně si vypíšeme skupiny, v nichž je daný uživatel zařazen.
Celý článek >>

MS SQL Server

Přidání skupiny Administrators do SQL Serveru

Od verze SQL Serveru 2008 již není lokální skupina Administrators defaultně nastavena jako Login SQL Serveru.
Pokud potřebujeme přidat lokální skupinu uživatelů jako Login do SQL server je potřeba ji však zadat jako:

BUILTIN\Administrators

Pokud skupinu zadáme např. přes Management studio a vyhledáme ji přes Vybrat objekt, je tato skupina označena jako NAZEV_PC\Administrator a SQL Server ji nedokáže najít a následuje chyba:

Create failed for Login 'NAZEV-PC\Administrators'. (Microsoft.SqlServer.Smo)
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Windows NT user or group 'NAZEV-PC\Administrators' not found. Check the name again. (Microsoft SQL Server, Error: 15401)

Tento princip platí pro zadání jakékoli lokální vestavěné skupiny jako Loginu do SQL Serveru.

MS SQL Server

Promazávání starých databází na SQL Serveru

Před nějakou dobou jsem narazil na problém se specifickými uživateli MS SQL Serveru. Specifické bylo v tomto případě to, že z důvodu své pracovní náplně vytvářeli tito uživatelé velké množství databází na SQL Serveru, které vždy dočasně použili, ale poté samozřejmě nesmazali. Vzhledem k tomu, že nad jednotlivými databázemi spolupracovalo více lidí a doba použití byla mezi jedním dnem až zhruba třemi měsíci, nebylo možné uživatele administrativně donutit po sobě “uklízet”. Na druhou stranu každá databáze si brala nějaké prostředky databázové serveru a tomu se to při počtu několika desítek databází moc nezamlouvalo.
Celý článek >>

MS SQL Server

Komprimované zálohy databází

Microsoft SQL Server nabízí od verze 2008 možnost vytvářet přímo komprimované zálohy. Od verze 2008 R2 je toto možnost již od edice Standard.

Jelikož je komprimovaná záloha podstatně menší než nekomprimovaná, zapisuje se méně dat a tím se výrazně snižuje potřeba diskových I/O operací. Z tohoto důvodu je provedení komprimované zálohy ve výsledku rychlejší než u běžné zálohy. Celý článek >>

MS SQL Server

Změna názvu počítače s instalovaným SQL Serverem

Pokud je na počítači nainstalován Microsoft SQL Server není možné změnit jeho název, resp. je, ale následně se k SQL Serveru nepůjde připojit. Po změně názvu počítače je nový název SQL Serverem při startu rozpoznán, je ale potřeba změnit i systémová metadata uložená v sys.servers.
Změnu metadat je nutné provést před změnou názvu počítače. Celý článek >>

Oracle

Konfigurace SQL Developer z Oracle 11g

Po instalaci klienta Oracle 11g se mi (již na několikátý pokus) nepodařilo spustit SQL Developer.

SQL Developer chce po spuštění zadat cestu k souboru JAVA.EXE a to i přesto, že na počítači je JAVA již nainstalována.
Navíc si nepomůžeme, ani pokud najdeme a vybereme soubor JAVA.EXE z disku (na disku je jich hned několik).
SQL Developer se podaří rozchodit pouze s nainstalovaným Java SDK, takže je potřeba jej stáhnout a nainstalovat a to vždy 32 bitovou verzi, bez ohledu na nainstalovaného klienta Oracle. Poté je potřeba vybrat soubor JAVA.EXE z adresáře, kde je
Java SDK nainstalován, standardně C:\Program Files (x86)\Java\jdk1.7.0_04 (podle verze).

Pokud jsme již zadali cestu k JAVA.EXE, SQL Developer se již znovu na tuto cestu neptá. Konfiguraci má uloženu v souboru sqldeveloper.config v podadresáři klienta oracle…\sqldeveloper\sqldeveloper\bin\ . Nastavení je v řádku např:

SetJavaHome C:\Program Files (x86)\Java\jdk1.6.0_35

Pokud řádek smažeme, při dalším spuštění se SQL Developer znovu zeptá na zadání cesty k JAVA.EXE.

MS SQL Server

Přesun souborů databáze

Čas od času je potřeba změnit umístění databázových souborů databází uložených na fyzických discích MS SQL Serveru, např. z důvodů zvýšení kapacity (přidání nového disku pro data) nebo z důvodů zvýšení výkony a bezpečnosti (oddělení úložiště souborů dat a logů).

Jakým způsobem je možné toto provést? Celý článek >>

MS SQL Server

Mapování databázového usera na serverový login

V Microsoft SQL Serveru existují na úrovni serveru Loginy, které zajišťují přístup k databázovému serveru. Tyto loginy jsou následně mapovány na databázové uživatele (users) v jednotlivých databází, kteří pak zajišťují přistup k daným databázím a objektům v nich.

Vzhledem k tomu, že databázový User je vždy uložen v databázi, je s ní i zálohován, resp. je její součástí i při odpojení [Detach] a přenosu na jiný server. Pokud tedy obnovujeme databázi na jiném stroji, nebo ji na jiném stroji připojujeme [Attach] zůstane v databázi user, který není namapován na odpovídající  login v serveru (to platí i pokud v serveru existuje login se stejným názvem). Celý článek >>

PowerShell

Parametry -ErrorAction a -ErrorVariable

Tyto velice zajímavé parametry cmdletů v Powershellu umožňují ovlivnit chování při výskytu chyby. Jde o tzv. common parametry, které jsou dostupné u všech cmdletů.

Pomocí následujícího cmdletu můžeme zjistit o Commonparametrs více:

PS C:\> Get-Help about_CommonParameters

Parametr -ErrorAction

Parametr -ErrorAction umožňuje ovlivnit chování Powershellu při výskytu chyby. Parametr může nabývat následujících hodnot:

  • Continue [Default] – cmdlet vypíše chybu a pokračuje dále
  • Stop – cmdlet vypíše chyby a ukončí se
  • SilentlyContinue – cmdlet chybu nevypíše a pokračuje dále
  • Inquire – cmdlet se pozastaví a dotáže se, jak má pokračovat

Použití parametru si můžeme vyzkoušet na následujících příkladech. Pokusíme se zastavit služby, která neexistují:

PS C:\> Stop-Service neznama, neexistujici

Stop-Service : Cannot find any service with service name 'neznama'.

At line:1 char:13

+ stop-service <<<<  neznama, neexistujici

+ CategoryInfo          : ObjectNotFound: (neznama:String) [Stop-Service], ServiceCommandException

+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StopServiceCommand

Stop-Service : Cannot find any service with service name 'neexistujici'.

At line:1 char:13

+ stop-service <<<<  neznama, neexistujici

+ CategoryInfo          : ObjectNotFound: (neexistujici:String) [Stop-Service], ServiceCommandException

+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StopServiceCommand

Cmdlet se pokusil zastavit službu neznama, ale protože taková služba neexistuje, vypsal chybu a pokračoval dále, pokusil se zastavit službu neexistující, ale protože ta také neexistuje, opět vypsal chybu.

PS C:\> Stop-Service neznama, neexistujici -ErrorAction stop

Stop-Service : Cannot find any service with service name 'neznama'.

At line:1 char:13

+ stop-service <<<<  neznama, neexistujici -ErrorAction stop

+ CategoryInfo          : ObjectNotFound: (neznama:String) [Stop-Service], ServiceCommandException

+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StopServiceCommand

Cmdlet se pokusil zastavit službu neznama, ale protože taková služba neexistuje, vypsal chybu a ukončil se. Zastavit službu neexistující se cmdlet již nepokouší.

PS C:\> Stop-Service neznama, neexistujici -ErrorAction SilentlyContinue

Cmdlet nevypsal žádnou chybu a to ani přesto, že se evidentně vyskytla.

PS C:\> Stop-Service neznama, neexistujici -ErrorAction Inquire

Confirm

Cannot find any service with the service name 'neznama'.

[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):h

Cmdlet se při výskytu chyby zeptá, co má dělat. Můžeme tedy sami rozhodnout, jak se bude pokrčovat. Yes v tomto případě znamená Continue, Halt Command vypíše chybu a cmdlet ukončí a Suspend cmdlet ukončí bez výpisu chyby.

Parametr -ErrorVariable

Tento parametr umožňuje chyba zapsat do proměnné. Tedy například:

PS C:\> Stop-Service neznama -ErrorVariable err

PS C:\> $err

Stop-Service : Cannot find any service with service name 'neznama'.

At line:1 char:13

+ stop-service <<<<  neznama

+ CategoryInfo          : ObjectNotFound: (neznama:String) [Stop-Service], ServiceCommandException>

+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StopServiceCommand

Chyby se do proměnné v tomto parametru přidávají, takže pokud se vyskytne v cmdletu více chyb je jich více zapsaných i v proměnné. Počet chyb je možné zjistit následujícím způsobem.

PS C:\> $err.Count

Jednotlivé chyby pak můžeme vypisovat následovně:

PS C:\>$err[0]

PowerShell

Confirmation v PowerShellu

Všechny cmdlety v Powershellu, které nějakým způsobem mění nastavení systému mají parametr -confirm. Pokud spustíme cmdlet s parametrem -confirm, dotáže se cmdlet, zda chceme opravdu akci provést.

Cmdlety, které mají parametr -confirm, mají také většinou nastavenu úroveň učinku. Tato úroveň je jednoduše Low, Medium a High, podle toho, jak autor cmdletu vyhodnotil jeho potenciální riziko na systém. Powershell sám má vestavěnou proměnou $ConfirmPreference, která zajišťuje, že cmdlet, jehož účinek je stejný nebo vyšší než proměnná $ConfirmPreference, se bude na potvrzení dotazovat i pokud nebude parametr zadán. Zjištění úrovně účinku:

PS C:\> $ConfirmPreference

Pokud chceme donutit cmdlet, aby nevyžadoval potvrzení, přestože jej automaticky požaduje, můžeme použít následující:

PS C:\> Remote-Item test.txt -confirm:$false

Stejně tak můžeme donutit cmdlet, aby potvrzení požadoval i v případě, kdy jej automaticky nepožaduje:

PS C:\> Remote-Item test.txt -confirm