Powershell skript pro atribut objektu uzivatele

Skript pro zobrazeni urciteho atributu uzivatele v AD (napr. pro Telephone Notes atribut pouzijte INFO, tedy: </p>

return &aduser.info)</font></h2>

function get-ldapuser ($username, $querydc) {
$domain = new-object DirectoryServices.DirectoryEntry ("LDAP://$querydc)
$searcher = new-object DirectoryServices.DirectorySearcher($domain)
$searcher.filter = "(&(objectclass=user)(samaccountname=$username))"
$searcher.findone().getDirectoryEntry()
}
</p>

$prefdc = "DCServerName.DomainName.com"
$lookupid = "loginname"
$aduser = get-ldapuser $lookupid $prefdc

return &aduser.nameoftheobjectattribute

</div> </div> </div>

číst dále...

Microsoft SQL Server 2005 – replikace

sqlserver2005 – existuje i peer-to-peer (pres RPC zapouzdrene do HTTPS)

– synchronizace db (synchronizovane db jsou vsechny online)

– da se nastavit, ze nektere budou jen na read a nektere jen na write

– lepsi je vyuzit replikaci na urovni filesystemu, ale to SQL neumi (melo by to byt na SQL 2008)

– zajistuje autonomii serveru sql, prilblizuje data uzivatelum, redukuje locks na db

– role replikacnich serveru

– publisher – jeho db se zucastnuje replikace (~ sdili db)

– distributor – kopiruje sdilene db na subsriber, muze byt interni (je na stejnem srv jako publisher) nebo externi (na samostatnem serveru)

– subscriber – cil pro db

– muze byt obousmerne tzn. publisher je i subscriber a opacne

– typy replikace

– snapshot – pri zmene jedne radky v tabulce se replikuje cela tabulka (dobre je to na to, ze se da prenest cela db)

– snapshot agent – bezi na publisher srvru

– tranactional– replikuji se i male zmeny (i jen radky), vyuziva t-log

– log reader agent

– merge – oboustranna

– problem je ze pokud vznikne na obou srv stejne radky, tak dojde ke konfliktu (kvuli tomu vznika dat. typ GUID / pokud to ale nechci tak vyrobim sloupec ID serveru – aplikace pak musi resit rozeznani serveru, nebo to udelam na sql serveru pomoci triggeru)

– merge agent

– heterogeneous – replikace mezi sql serverem a jinym typem db serveru

– articles – prenasene data – co publikovat (tabulky, sloupce,…)

– publications – skupiny articles

– distributor

– subscriptions – odkud kam se ma udelat synchronizace

– replikacni agenti jsou soucasti sluzby sql serveru a pouzivaji joby

– mohu nastavit i replikaci pro napr. PDA pomoci compact edition sql

– konfiguruje se pres SSMS server

– replications – configure distribution… (timto se vytvori sys db distribution (sp_adddistributiondb))

– slozku pro snapshot (vytovri se pres bulkcopy) dat na specialni disk, protoze pri jeho vzniku nastane mnoho I/O operaci

– local publications – new publications…

– mohu pouzit filter (~ SELECT s WHERE) – vyberu jen napr. urcite radky ze sloupce

– snapshot – je tam proto, abych mohl prenest ty puvodni data, ale mohu nastavit i schedule

– nastavuji ucty pro agenty – musi mit prava read k replikovanym datum / mohu to nastavit i na ucet SQL Agenta (jako bylo nativne v SQL 2000)

– local subscriptions – new subscription …

– nastvauji push (vyssi zatizeni distributora) nebo pull (~kontinualni replikace => vyskoa latence)

– nadefinuji opet ucty

– typ synchronizace

– kontinualni

– manualni

– nemohu udelat subscriber na publikaci, ktera uz je prenasena

číst dále...

Microsoft SQL Server 2005 – High Availability

sqlserver2005 Server Failover Clustering

– Microsoft Cluster Service (vyzaduje domenu)

– daji se udelat i ve 2 domenach (ale musi byt v jednom forestu, nebo musi mit obousmerny trust) – best practice je mit je v jedne domene (nejlepe aby je overoval jeden DC)

– je pouze na OS Enterprise a na SQL Standard a Enterprise (v 1 licenci 2 cluster nody)

– na W2K3 max. 8 cluster nods

– podminky: supported hw, identicke nody v clusteru (vse!!! ~ hw i sw), sdilene disky (se SCSI identifikaci, = fibre channel (limitovan delkou ~ max. 10/100km), = iSCSI (sitove SCSI))

– postup: nainstaluji cluster service na jeden nod, pote na druhy, pak vytvorim pouze 1 cluster resource grooup (s netbios name, IP adress, min. 1 shared HDD)

– pri presunu clusteru se presouvaji i sys db

– protoze ale startuji i sluzby SQL a dela se restore, tak presun cluster nodu trva dlouho (dle MS do 2 s, ve skutecnosti i 2-3min.)

nebo

Database Mirroring

– kazdy cluster nod ma svuj HDD

– pouze mezi 2 sql servery (principal – mirror)

– pri presunu clusteru se nepresouvaji sys db a userdb, ktere nemaji full recovery model

– presun clusteru je prakticky okamzity

– az od SQL SP1

– identicke verze SQL vyzaduje (pouze witness muze mit jinou)

– vznikla puvodne z log shippingu (backup-restore t-logu zpusob pomoci jobu)

– pouziva tzv. listener a pomoci neho si vymenuji db data (rozdil oproti replikaci je to, ze ten druhy server neni aktivni (=> neplatim dalsi licenci), neco jako active/passive)

– ten neaktivni sql server se nazyva "Hot Standby"

– 3rezimy:

– high availability (vyuziva 3. server, tzv. Witness (svedek), ktery kontroluje stav mirroringu a pripadne zbudi standby server)

=> automaticky failover

– high protection

– high performance

– nastavuji cele pres SSMS pres wizard (pres TSQL: CREATE ENDPOINT) – na kazdem serveru to musim udelat

– vyzadovan FQDN (name+suffix)

– pokud nemam witness server, tak mohu udelat presun manualne pomoci ALTER DATABASE (pokud nemam aktualni data, neprobehl presun dat posledni, tak se da spustit i FORCE)

– vyhodou je to, ze pokud aplikace pouziva SQLAgenta nebo .NET2.0 (a vyssi), tak se aplikace automaticky prepoji na funkcni SQL serverv mirroru

– pri nastavovani musim byt dbo a sysadmin

-1. udelam backup db z principal

-2. udelam restore db na mirroru s option NORECOVERY (non-operational)

-3. na principal dam Database – properties – mirroring – configure security – nakonci dat DO NOT START

-4. po dokonceni wizardu si dat pozor na to co se doplnilo do principal, mirror, witness – musi tam byt FQDN !!!

-5. Start mirroring

– behem mirroringu se tsql provadi i nad mirrorovanou db (ta se zmeni do stavu Synchronizing), v tuto chvili si neda do principal db zapisovat; to se da az mirror db nahlasi ze Synchronized (rezim Full Safety) – presne info na http://download.microsoft.com/download/4/7/a/47a548b9-249e-484c-abd7-29f31282b04d/DBM_Best_Pract.doc , ktere uvadi best practice

– tzn. zjistit jako mam sirku pasma, zajistit si ji pote pomoci QOS a pote zajistit nizkou latency

– po zruseni mirroringu se nesmazou endpointy (musi se odstranit rucne DROP ENDPOINT nebo pres SSMS delete endpoint)

</p>
číst dále...

Microsoft SQL Server 2005 – automating administrative tasks

sqlserver2005

  • SQL Server Agent (~ job server)

    – po instalaci ma manual start, takze je dobre ho dat na automatic

    – zodpovedny za veskerou automatizaci v SQL serveru

    – veskere joby, notifikace a alerty jsou pak v db msdb, takze je dobry ji zalohovat (pokud se poskodi, tak Agent nanastartuje)

    – configurace agenta:

    • mail – konfigurace komponenty databasemail – zapnout pres Surface Area Configuration, nebo pres SSMS – Management – Database Mail – Configure:

      • protoze SMTP umi jen odesilat, tak aby mi lidi neodepisovali na ten mail tak nastavim replymail

      • pocet opakovani odeslani mailu je jako vychozi 1, takze zvysit min. na 3

    • zalozka Alert System – nastavim mnou vytvoreny mail

      • ucet pod kterym se ale posta odesila je ucet agenta a ten nema na to prava (bug) – vyresim pres msdb – security – role – database role – DatabaseMailUserRole – sem pridat ucet SQL agenta

    • pod SQL server agentem je folder Operators – New Operator – vytvorim operatora. Best practice je mit jeste jednoho zalozniho "Fail Safe Operator" a toho nastavim pres Properties SQL agenta v Alert System jako "Enable fail safe operator"

    Job

    – obsahuje Job Steps, coz jsou jednotlive ulohy Jobu / funguje to tak, ze testuje uspesnost jednotliveho kroku a na zaklade toho jde na dalsi step

    – pokud nektery krok potrebuje vyssi prava nez ma SQL agent, tak ho spustim jako Proxy account (ten vyrobim pres Proxies v SQL Agentovi)

    – Job Activity Monitor – jako vychozi obsahuje 1000 jobu history zpet

    – mohu ho spustit kdyz je CPU idle, co je CPU idle nastavim v SQL Agentovi

    – mohu ho spustit i na vice serveru pres Targets – musim ale nakonfigurovat "Multi Server Administration" v SQL Agentovi

    – nastavim Schedule

    – cela konfigurace je v db msdb v tabulce sysjobs (hlavicka jobu) a v tabulce sysjobssteps (telo jobu ~ steps)

    Alerts

    – 3 typy alertu

    – na zaklade vzniku alertu mohu spustit Job (execute job)

    Multiserver Administration

    – MXSOperator

    – da se spravovat nekolik sql serveru z jednoho

    – Master Server Wizard +

    – posilat events na jeden sql ze vsech (event forwarder) ~ SQL agent properties -> Advanced

    </p> </p> </p>
  • číst dále...

    Microsoft SQL Server 2005 – monitoring

    sqlserver2005

    • SSMS SQL Server2005 -> Maintenance -> Activity Monitor
    • pri vytvareni dotazu se delaji zamky nad db
    • pohledy v db – sys.neco jsou staticke pohledy a sys.dm_neco jsou dynamicke pohledy (jsou v db ->views->system views)
    • zjistit fragmentaci indexu pomoci sys.dm_db_index_physical_stats, ktera je ve vsech db
    • moje vlastni dotazy si pak mohu dat do vlastniho reportu, ktery si udelam pomoci nastroje SQL Server Business Intelligence Development Studio, ktery je soucasti instalace SQL server2005 SP2
    • merice v OS Performance pro SQL pouzivat
    • monitorujeme tedy CPU, RAM a HDD (navaznosti napr. pokud je malo RAM, tak o to vic se musi zapisovat na HDD a ten muze prestat stihat)
    • SQL Profiler
      • graf. utilita, instalovat vzdy na PC a ne na srv, vzdy delat vystupy do txt a ne do table (kdyz do table, tak se strasne vytezuje ta db), da se udelat ze zachycenych logu (trace) pak replay na jinem serveru a na nem se pak podivat co se delo; taky se da s timto tracem pustit Tuning Advisor a zjistit workload
      • spustim ho pres Tools – SQL Profiler; dulezite je vybrat sloupce starttime a endtime (da se pak pouzit i vuci perf logu) – to udelam tak, ze v trace properties dam SHOW ALL COLUMNS a vyberu ty sloupce; vyberu i db, kterou chci monitorovat – to udelam v TRace properties pres Filter
      • spustim OS Performance a udelam v perf.logach counterlog na performance – ten pak mohu po otevreni trace v Profileru, dat v Profileru import perf.logu a dostanu vukon vuci dotazum – SKVELA VEC!!!
      • </ul> </li>

      Triggers

      • SQL se deli na
        • DDL – Data Definition Language – prikazy CREATE/ALTER/DROP
        • DML – Data Manipulation Language – prikazy SELECT/INSERT/UPDATE/DELETE
        • DCL – Data Control Language – prikazy GRANT/DENY/REVOKE
        • </ul>
        • vse se konfiguruje pres TSQL -bez grafickeho rozhrani
        • nalezaji se v sys.tabulce db sys.triggers
        • jsou fakticky sp, ale je spousteny systemem
        • vznikne po udalosti, ktera ho odpali (je reaktivni), ale je soucasti transakce, takze muze pak na konci pouzit napr. rollback, aby operaci vratil
        • DML trigger (startovan prikazy INSERT/UPDATE/DELETE) – vztahuje se k table/view
        • DDL trigger (startovan prikazy CREATE/ALTER/DROP) – vztahuje se k server/db – je to udelane takto – protoze, napr. kdyz udelam create login, tak tento DDL trigger je vlastne DML triggerem nad systemovou tabulkou (v tomto pripade nad db master nad syslogins), (na co se da vsechno delat je v sql books online v DDL triggers v event groups used for firing)
        • akce, na ktere je povesen trigger, generuje EventData – na ktere se mohu pak dotazovat v tele triggeru
        • pokud zakazu v triggeru i DROP, tak ovsem samotny trigger dropnout mohu – to je vyjimka
        • prikaz triggeru:
        • </ul>

          USE UserDB

          GO

          CREATE TRIGGER UserDB_Safety

          ON DATABASE

          FOR DDL_DATABASE_LEVEL_EVENTS

          AS

          DECLARE @TSQLCommand nvarchar(max)

          SELECT EVENTDATA().value(‚(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]‘,’nvarchar(max)‘)

          WHERE EVENTDATA().value(‚(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]‘,’nvarchar(max)‘) LIKE ‚%STATISTICS%‘

          IF @@rowcount = 0 ROLLBACK

          GO

          CREATE TABLE dbo.myTable (Id INT IDENTITY PRIMARY KEY, eventDetail xml NULL);

          UPDATE STATISTICS dbo.UsageLog

          –SELECT * FROM sys.triggers WHERE is_disabled = 0

          ENABLE TRIGGER UserDB_Safety

          ON DATABASE

          Event Notifications

          • vse se konfiguruje pres TSQL -bez grafickeho rozhrani
          • vlastne alternativa k SQL profileru
          • vytvori se na zaklade na nejake udalosti
          • vyzaduje sluzbu ServiceBroker
          • ServiceBroker – soucasti SOA – Service Orientated Architecture
            • aplikace obsahuje svoje casti – bloky – a mezi nimi jsou interfaces, ktere umoznuji si vymenovat data, ktere reprezentuji to reseni – jsou to vlastne zpravy, ktere si mezi sebou posilaji ty sluzby tech bloku
            • napr. bloky A a B – A posle zpravu B a B ji musi ulozit do nejake fronty na sobe (~ buffer => async system)
            • B odpovi A a A tuto odpoved ulozi do sve fronty
            • ServiceBroker resi sifrovani teto komunikace a jeste to, ze tyto fronty mohou byt na vice serverech
            • mohu pak tedy do techto front "strkat" EventData z triggeru, ale to je xml, ktere musim umet
            • takovato fronta je pouzita i pri mailovani z SQL – maily se tam hromadi a pokud se treba do 3h neodeslou tak se smazou
            • </ul>
            • postup vyuziti event notif a servicebrokeru
              • 1. vytvorim schemu
              • 2. vytvorim frontu (CREATE QUEUE)
              • 3. vytvorim sluzbu servicebrokeru (CREATE SERVICE) na frontu
              • 4. vytvorim route (CREATE ROUTE), aby sluzba fungovala mistne
              • 5. vytvorim notifikaci
              • cely skript:
              • — Prepare Database for using with Service Broker service instance
              • </ul>

                USE userDB

                GO

                –Create a queue to receive messages.

                CREATE QUEUE NotifyQueue ;

                GO

                –Create a service on the queue that references

                –the event notifications contract.

                CREATE SERVICE NotifyService

                ON QUEUE NotifyQueue

                ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);

                GO

                –Create a route on the service to define the address

                –to which Service Broker sends messages for the service.

                CREATE ROUTE NotifyRoute

                WITH SERVICE_NAME = ‚NotifyService‘,

                ADDRESS = ‚LOCAL‘;

                GO

                –Create the event notification.

                CREATE EVENT NOTIFICATION myDemoEventNotification

                ON SERVER

                FOR Audit_Login, Audit_Logout, Audit_Login_Failed

                TO SERVICE ‚NotifyService‘,

                ‚current database‘ ;

                • v tuto chvili se udeje neco, vygeneruje se zprava a da se do servicebrokerove fronty, z ni to ale potrebuji cist a zapsat do nejake tabulky, takze:
                • udela se to tak, ze nad zapisovanim do fronty (coz je vlastne tabulka – mohu nad ni delat SELECT, jenze zpravy jsou zasifrovane, proto mi SELECT nestaci) se udela trigger a na zaklade neho se to presune do tabulky
                • 1. spustim servicebroker na sql serveru (na masterdb) (pozor nesmi byt session k db)
                • 2. nactu zpravy z fronty (RECEIVE TOP(1) @msg…… ) a toto zacyklim pomoci WHILE (donekonecna … 1=1), abych nacetl vsechny zpravy fronty az do vyprazdneni a teprve za obdrzenim udelam BREAK (vyskok z WHILE) az bude vse precteno
                • 3. po nacteni radky ji zapisuji do tabulky (INSERT INTO …)
                • 4. protoze INSERT muze selhat, bude vlozen do BEGIN TRY a BEGIN TRAN, pricemz COMMIT udelam a bude nasledovat odchyceni chyby pomoci BEGIN CATCH kde pouziji ROLLBACK (a mohu pouzit zobrazeni erroru RAISERROR)
                • 5. cele to ulozim jako ulozenou proceduru (sp) (CREATE PROCEDURE)
                • 6. nastavim frontu tak, aby spoustela tuto proceduru (ALTER QUEUE WITH ACTIVATION …)
                • cely skript:
                • </ul> </li> </li> </li>

                USE Master

                ALTER DATABASE UserDB SET ENABLE_BROKER

                USE UserDB

                GO

                CREATE PROCEDURE dbo.usp_ParseLog

                AS

                DECLARE @msg_body XML

                WHILE (1=1)

                BEGIN

                RECEIVE TOP(1) @msg_body = message_body

                FROM dbo.NotifyQueue

                IF @@rowcount = 0 BREAK

                BEGIN TRY

                BEGIN TRAN

                INSERT INTO dbo.UsageLog (detail) VALUES (@msg_body)

                COMMIT TRAN

                END TRY

                BEGIN CATCH

                –RAISERROR ()

                ROLLBACK

                END CATCH

                END — END WHILE

                GO

                — SELECT * FROM dbo.NotifyQueue

                — EXEC dbo.usp_ParseLog

                ALTER QUEUE dbo.NotifyQueue

                WITH ACTIVATION (

                PROCEDURE_NAME = dbo.usp_ParseLog,

                EXECUTE AS SELF) ;

                • pokud bych chtel logovat audit vseho na celem serveru, pak v options na serveru zapnu ENABLE C2 AUDIT TRACING
                </div>
    číst dále...
    Novější příspěvky | Starší příspěvky