domingo, março 21, 2010

Backup MS SQL 2005

O MS SQL suporta quatro tipos de backups:
Full Backups, Differential Backups, Transaction Log Backups e Filegroup Backups.

Full Backup: captura todos os dados armazenados do banco de dados, abaixo efetuando um backup completo via T-SQL:

backup database maykon to disk ='C:\Test\backupFULL.bak' with init

Differential Backups: captura todos os extents(unidade de alocação do sql) armazenados desde o último backup completo, comando T-SQL:

backup database maykon to disk ='C:\Test\backupDIF.bak' with differential

Transaction Log Backups: só disponível se a database estiver configurada como Full ou Bulk-Logged na opção Recovery model, o Transaction Log registra todas as transações e modificações feitas no banco de dados a cada transação, exemplo de utilização:

backup log maykon to disk='C:\test\backupLog.bak' with init

Filegroup Backups: uma alternativa ao backup completo, sintaxe T-SQL:

backup database maykon filegroup='PRIMARY'
to disk=
'C:\Test\BackupFile.bak'

Também é possível efetuar um backu diferencial com o comando abaixo:

backup database maykon filegroup='PRIMARY'
to disk=
'C:\Test\BackupFileDif.bak'
with differential

Um recursos interessante é a possibilidade de utilizar a cláusula MIRROR com este comando é possível salvar o backup em mais de um lugar, o comando abaixo é um exemplo, estou salvado uma cópia do backup original chamando de Mirror.bak conforme comando abaixo:

backup database maykon to disk='C:\test\Original.bak' mirror to disk='C:\test\Mirror.bak' WITH FORMAT;

Isso é só um guia rápido sobre o backup no MS SQL 2005, porém existem diversas opções no backup que não foram tratadas neste post.

Usando SSIS Import/Export Wizard

Para iniciar o SSIS Import/Export Wizard selecionar a database que tu vai trabalhar clicar com o botão direto do mouse e selecionar a opção Import Data ou Export Data, também é possível inicializar através da linha de comando com o comando: DTSWizard.exe
Realizando a exportação para um arquivo de texto:

Selecionando o destino:
Clico em Next terei duas opções, copiar tabelas visões etc, ou construir uma consulta SQL, neste caso vou selecionar a primeira opção, após este passo vou selecionar a tabela ou visão que eu desejo exportar, neste caso vai ser a tabela teste, conforme imagem abaixo:


Tenho a opção de editar a exportação dos dados na opção “Edit Transform”, após este passo clico em Next, onde eu tenho a opção de executar a tarefa imediatamente, e salvar este pacote de exportação, caso eu selecione a opção “SQL Server” este pacote fica salvo no banco de dados msdb, se selecionar a opção “File system” será salvo um arquivo DTSX no caminho especificado, também é possível especificar as opções de criptografia do pacote.
Definindo um nome para o pacote:
Após este procedimento clica na opção Next depois Finish que as ações serão executadas.

terça-feira, março 16, 2010

Bulk Insert

O comando Bulk Insert é um comandoTransact-SQL utilizado para importar(somente importar) dados para um Banco de dados MS SQL, sua utilização é parecida com ao utilitário BCP, abaixo o comando SQL para realizar a importação dos dados do arquivo importar.txt para a tabela TesteBulk na database Maykon:

bulk insert Maykon..TesteBulk from 'C:\importar.txt'

BCP (Bulk Copy Program)

BCP(bulk copy program) é usado para importação\exportação de grandes volumes de dados, é um utilitário de linha de comando com muitas opções, vou descrever dois exemplos de utilização desta ferramenta, realizando a importação e exportação de dados, conforme abaixo.

Inicialmente vou criar uma database qualquer:

create database Maykon
Agora vou criar um tabela com duas colunas:
CREATE TABLE TesteBCP(
id int NULL,
nome varchar(50) NULL,)

No diretório raiz da máquina que vou realizar a importação tenho o arquivo importar.txt, este arquivo tem poucos registro conforme imagem abaixo:
(O arquivo está delimitado por TAB e com um ENTER após o último registro)
Agora é só executar o comando Bcp no prompt de comando, conforme imagem abaixo:

Como pode observar os registros foram importados para a tabela.

Realizando a exportação de uma tabela:
C:\>bcp Maykon..TesteBCP out "C:\export.txt" -t -T -c

Estou exportando para o arquivo export.txt os dados da tabela TesteBCP a opção –c serve para a exportação de dados de caractere para transferências para e a partir de produtos não SQL Server.


segunda-feira, março 15, 2010

Triggers

Em MS SQL Server 2005 temos dois tipos de Triggers: DML(em respostas a comandos Insert, update e delete) e DDL(geralmente usado para processos de auditoria)

Abaixo um exemplo da criação de uma Trigger DML
Criando a tabela que vai ser realizado o update

create table produto
(ProdutoID int NOT NULL,
)

Criando a tabela que contera as informações das alterações realizadas(update)

create table TriggerDML
(auditID int identity(1,1) primary key,
ProdutoID int not null,
usuario sysname not null
);

Criando a trigger

create trigger auditoria
on produto -- tabela que vai ser auditada
for update -- para update
as
insert into TriggerDML -- tabela que vou inserir as informações de auditoria
(ProdutoID,usuario) -- os campos em q serão inseridos as informações
select produtoID,suser_name() -- buscando as alterações
from
produto

Criando uma segunda Trigger que vai mostra a mensagem “Um registro inserido na tabela” após uma operação de Insert.

create trigger TriggerDML2
on produto
for insert
as
print
'Um registro inserido na tabela'

Agora vou criar um trigger DDL

create trigger TriggerDDL
on database
for drop_table
as
print 'Você não pode excluir essa tabela'
rollback

Ao tentar executar a exclusão de qualquer tabela em que foi criando a trigger eu vou receber a mensagem “Você não pode excluir essa tabela”, e nenhuma tabela da batabase será excluida.

sábado, março 13, 2010

Especialização em Segurança da Informação

Dia 12-03-2010 eu tive o prazer de participar do enceramento da minha especialização em segurança da informação, foram 18 meses, em que eu aprendi muitas coisas e conhecia pessoas interessantes, agora sou um especialista em Segurança da Informação(que chique..)

Criando uma procedure

Vou exemplificar de uma maneira bem rápida como criar uma procedure para atualizar um campo em uma pequena tabela.
Tenho uma tabela chamada teste com o campo data, estou utilizando a função getdate para trazer a data atual (minha máquina virtual está com a data errada (-:), mas tudo bem.

Criando a procedure:

create procedure maykon
as
begin
update teste set data=getdate()
end

Executando a procedure

exec maykon

Abaixo o resultado do comando:


Uma procedure pode executar qualquer comando Transact-SQL exceto: USE, SET SHOWPLAN_TEXT ON E SHOWPLAN_ALL ON.