Cursor dinâmico em uma stored procedure

Fevereiro 19, 2008

Bom dia pessoal, há uns dias atrás tive que comparar duas bases, source e destino, após uma importação. Então crie uma stored procedure que comparasse as duas bases levando em consideração a quantidade de registros, linhas, e a estrutura, colunas, das tabelas. Para fazer essa procedure eu tive a necessidade de criar cursores dinâmicos. Hoje eu vou mostrar como criar cursores dinâmicos numa stored procedure.  

Exemplo:

Declare @statement varchar(255) 

SELECT @statement = ‘DECLARE c CURSOR FOR Select convert(varchar, isnull(count(*), 0)) from dbo.’ + @tabela
EXEC(@statement) open c fetch next from c into @linhas
Close c
Deallocate c

SELECT @statement = ‘DECLARE d CURSOR FOR Select convert(varchar, isnull(count(*), 0)) from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ”’ + @tabela + ””
EXEC(@statement) open d fetch next from d into @colunas
Close d
Deallocate d

Abs, André


Debugando Stored Procedure no Visual Studio

Fevereiro 13, 2008

Boa tarde amigos,
Um recurso muito interessante no Visual Studio é a possibilidade de debugar stored procedures. Com isso você ganha um incrível nível de produtividade, além de encontrar os erros mais facilmente. Para debugar stored o seu usuário do Windows deve ter permissão como sysadmin no banco de dados. Para dar essa permissão vá até o Sql Server conecte-se ao banco onde estão as procedures, na janela Object Explorer, expanda a pasta Security e clique com o botão direto em Logins.

Clique em New Login.

Em Login name informe domínio\user e selecione a opção Windows authentication.

Vá em Server Roles e selecione o privilégio sysadmin.
Vá em User Mapping, selecione o banco de dados onde estão as procedures e informe que o usuário pertencerá os determinados grupos: db_datareader, db_datawriter, db_owner e public.

Clique em Ok.

Pronto. Agora o seu usuário do Windows tem permissão para debugar. Agora vamos de fato a ação.

Abra o Visual Studio, Clique em View>Server Explorer. Na Janela Server Explorer, na opção Data Connections, clique em add connections. Informe o nome do servidor, o tipo de Log on selecione Windows authentication e selecione o banco de dados. Teste a conexão para ver se está tudo certo e clique em ok.

Observer que será adicionado um database em Data connections. Expanda as opções do database até conseguir visualizar as suas storeds. Clique com o botão direito na procedure e selecione a opção Step Into Stored Procedure. Caso seja necessário passar variável para a procedure, uma janela será aberta e você deve dar valor as variáveis. Não esqueça de colocar um break-point no ponto onde deseja debugar. Avance com o F10 e caso queira entrar dentro de uma função avance com F11. Parando o mouse em cima de uma variável é possível saber o seu valor.

Um abraço a todos, especialmente para a minha princesa Bianca, no próximo sábado fazemos um ano de namoro.

T+


Agendando backup do Banco de Dados

Fevereiro 12, 2008

Boa tarde pessoal,

Estou de volta depois de uma longa folga.

Hoje eu vou mostrar como fazer backups no Sql Server usando o agendador de tarefas do Windows.

Primeiro temos que criar um arquivo .sql com o comando de backup. O conteúdo do arquvo está abaixo:

BACKUP DATABASE dadosintra TO DISK = ‘\\servidor\pasta\nomedoarquivo’ WITH INIT
BACKUP LOG dadosintra TO DISK = ‘\\servidor\pasta\nomedoarquivo’  WITH INIT

Vou chamar esse arquivo de backup.sql.

Agora devemos criar um arquivo do tipo .bat que será acionado pelo agendador de tarefa do Windows. O conteúdo do arquivo está abaixo:

@echo off
echo Fazendo backup do banco de Dados

rem ————————————————————–

sqlcmd.exe -i backup.sql -U user -P senha -d banco -S instancia

rem ————————————————————–

Vou chamar esse arquivo de backup.bat.

Vá em Iniciar>Programas>Acessórios>Ferramentas do sistema>Tarefas agendadas

Clique em Arquivo>Novo>Tarefa agendada

Dê um nome a tarefa e clique duas vezes. No campo executar procure o arquivo backup.bat. Na aba agendar defina qual é o melhor data para fazer backup e a frêquência do mesmo.

um abraço,

 Até breve.


Seguir

Get every new post delivered to your Inbox.