PowerShell e o dia a dia do DBA – VIIII


Continuação VIIII – Listar os Logins com permissão de SA (sysadmin server role) em todos os servidores

Todos os scripts eu criei um database chamado DBA no meu servidor central e um schema diario. As tabelas sermpre serão criadas neste schema e database.

Para todos os scripts, gerar um txt com os nomes dos servidores  envolvidos. Eu o chamei de servidores.txt e fica assim :

SERVER1\MSSQLSERVER_1
SERVER2\MSSQLSERVER_2
SERVER3\SQL2005

Os dois primeiros são 2008 e o terceiro 2005

Eu o gravo numa pasta chamada c:\dadosps, vocês irão ver esta chamada em todos os scripts

Segurança

Checar Lista de Membros SA em todos servidores.

Bom pessoal, com este script eu varro os servidores previamente cadastrados em servidores.txt e procuro por quem está na role sysadmin e gravo na tabela.

Cria a Tabela

Create table diario.tb_listaSA(servidor varchar(50),data datetime,ListadeSA XML)

Script PS

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null

$datas =  get-date -format "yyyy-MM-dd hh:mm:ss"

##########################################################
#Atribui o Dabatase e Server central que receberão os dados
##########################################################

$ServidorCentral = "SERVER1\MSSQLSERVER_1"
$DatabaseCentral = "DBA"

$sql = "truncate table diario.tb_listaSA"
Invoke-Sqlcmd -ServerInstance $ServidorCentral -Database $DatabaseCentral -Query $sql

foreach ($svr in get-content "C:\dadosps\servidores.txt" )
{
   $ListadeSA =""

   $servidor=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr"
   $SA = $servidor.Roles | where {$_.Name -eq ‘sysadmin’}
   $SA.EnumServerRoleMembers() | export-clixml "c:\dadosps\ListaSA.xml"

   $ListadeSA = Get-Content "c:\dadosps\ListaSA.xml"
   $ListadeSA = $ListadeSA -replace "’", "”"

   $sql = "insert into diario.tb_listaSA (servidor,data,ListadeSA) values (‘$svr’,’$Datas’,’$ListadeSA’)"
   Invoke-Sqlcmd -ServerInstance $ServidorCentral -Database $DatabaseCentral -Query $sql

   del "c:\dadosps\ListaSA.xml"

}

 

Ta ai galerinha….vou também colocar um que nao esta listado no check list, mas é interessante principalmente pra quem trabalha    24x 7 e tem turnos de DBA´s. Um script para verificar novos logins.

 

I´ll  be back

About Laerte Junior

Laerte Junior Laerte Junior is a SQL Server specialist and an active member of WW SQL Server and the Windows PowerShell community. He also is a huge Star Wars fan (yes, he has the Darth Vader´s Helmet with the voice changer). He has a passion for DC comics and living the simple life. "May The Force be with all of us"
This entry was posted in Powershell. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s