Script Powershell MSSQL
Este script pode ser usado para importar automaticamente arquivos SQL com mais de 20 minutos para o banco de dados MSSQL. É útil se você habilitar o registro de texto SQL para configurações de alto desempenho. Para executar este script, você deve salvá-lo com a extensão .ps1 e habilitar a execução de scripts PowerShell no Windows através do Editor de Política de Grupo (ou você deve executar o script como Administrador).
Crie a seguinte tabela MSSQL
CREATE TABLE messagereport ( logid int IDENTITY(1,1), messageid varchar(64), fromconnection varchar(64), fromaddress varchar(64), requestedconnection varchar(64), toconnection varchar(64), toaddress varchar(64), messagetext varchar(1024), route varchar(64), datecreated datetime, datedeliverytoconnectionsuccess datetime, datedeliverytoconnectionfailed datetime, deliverytoconnectionreference varchar(256), deliverytoconnectionstatusmessage varchar(1024), datedeliverytorecipientsuccess datetime, datedeliverytorecipientfailed datetime, deliverytorecipientstatusmessage varchar(1024), status varchar(64) )
O primeiro passo é criar a tabela messagereport no banco de dados. Todas as mensagens enviadas e recebidas serão armazenadas nesta tabela e atualizadas de acordo com seu status. Se você já criou esta tabela, pode pular esta etapa. Copie o script de criação da tabela acima e execute-o no seu banco de dados, como pode ser visto na Figura 1.
Salve o seguinte script PowerShell como "dbimport.ps1"
O próximo passo é criar o arquivo "dbimport.ps1" na pasta C:\Ozeki, como mostrado na Figura 2. Este arquivo conterá o script que executa consultas SQL periodicamente no banco de dados.
$ProcessedDir = "C:\Ozeki\Processed" New-Item -ItemType Directory -Force -Path $ProcessedDir #loop infinito while (1) { #listar arquivos com mais de 20 minutos #certifique-se de que o tempo seja maior que o período usado na configuração de relatório Get-ChildItem "C:\Ozeki\Reporting_SQL" -Filter *.sql | Where{$_.LastWriteTime -le (Get-Date).AddMinutes(-20)} | Foreach-Object { #carregar o conteúdo do arquivo no banco de dados MSSQL Write-Output $_.FullName $Text = Get-Content -Path $_.FullName Invoke-Sqlcmd -ServerInstance MyComputer\MainInstance -Database MyDatabase -Query "$Text" -Username "MyUser" -Password "MyPass" #mover o arquivo processado para o diretório de processados Move-Item -Path $_.FullName -Destination $ProcessedDir } #aguardar 5 segundos Start-Sleep -s 5 }
Copie o script PowerShell acima e cole-o no arquivo "dbimport.ps1", como pode ser visto na Figura 3.
Por fim, modifique o script de acordo com seu próprio banco de dados MSSQL. Na instância do servidor, defina o nome do computador e da instância do banco de dados MSSQL. Insira o nome de usuário e senha que deseja usar e substitua "Mydatabase" pelo nome do seu banco de dados (Figura 4).
Execute o script como administrador
powershell -ExecutionPolicy Bypass -File dbimport.ps1
Agora execute o script no PowerShell executando o comando acima, como pode ser visto na Figura 5.
Você pode ver que o script executa todos os arquivos SQL com mais de 20 minutos na pasta 'C:\Ozeki\Reporting_SQL' um por um (Figura 6).
Cada arquivo SQL que o script executou é movido para a pasta Processed, para que nenhuma consulta seja perdida (Figura 7). A partir daqui, você pode excluí-los manualmente se não precisar mais deles.
Finalmente, se você verificar o banco de dados, poderá ver que todas as mensagens foram inseridas na tabela messagereport, como mostra a Figura 8.
More information