Mudei de endereço

Abril 12, 2008

Pessoal,

Agora o meu blog está no endereço www.andrenobrega.com.br. Espero vocês lá.

abraços


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.


Como renomear tabelas e colunas

Janeiro 30, 2008

Boa tarde meus amigos,

Hoje eu vou mostrar como renomear colunas e tabelas. No Sql Server 2005 existe a procedure sp_rename, você deve passar três argumentos: a coluna que deseja renomear, o novo nome e o tipo de objeto, no caso Column.

Exemplo.:

Temos a tabela cliente e nela uma coluna chamada id. Para alterar o nome da coluna de id para idCliente execute essa procedure:

EXEC sp_rename ‘dbo.cliente.id’, ‘idCliente’, ‘COLUMN’

Caso queira mudar o nome de todas as colunas do banco para uppercase, execute o select abaixo, copie e depois execute todas as procedures.

SELECT ‘EXEC sp_rename ”’ + TABLE_SCHEMA + ‘.’ + TABLE_NAME + ‘.’ + COLUMN_NAME + ”’, ”’ + UPPER(COLUMN_NAME) + ”’, ”COLUMN”’ FROM INFORMATION_SCHEMA.COLUMNS

Para renomear uma tabela não é necessário passar o tipo do objeto.

Exemplo: 

EXEC sp_rename ‘dbo.cliente’, ‘Cliente’

Caso queira mudar o nome de todas as tabelas do banco para uppercase, execute o select abaixo, copie e depois execute todas as procedures.

select ‘EXEC sp_rename ”dbo.’ + NAME + ”’, ”’+ UPPER(NAME) +”” from sysobjects where xtype=‘U’ order by name

Para mais informações:

http://msdn2.microsoft.com/en-us/library/ms188351.aspx

abraços.


Txt to MP3

Dezembro 15, 2007

Boa tarde meus amigos,

Hoje eu vou mostar um utilitário realmente útil. Um conversor de txt para MP3. O programa é um executável que deve ser iniciado via Dos. Oba, é ai que entra o C#.

O primeiro passo é ter o Eloq 5.0. Faça download aqui. O segundo passo é ter o Testimp3. Faça download aqui.

Vá no Iniciar> Executar> cmd. Vá até a pasta onde está o executável TESTIMP3.EXE.  Digite no Dos ‘TESTIMP3 /ECISETUP=C:\Eloq5′ – Endereço onde você descompactou o Eloq.

No diretório que está o TESTIMP3.EXE crie um .txt com o texto que você deseja converter para MP3.  No cmd digite TESTIMP3 nomeDoArquivo.txt. No arquivo TESTIMP3.INI você pode definir o tom, tipo, idioma utilizado, entre outras coisas.

Se não acontecer nenhum erro será criado uma pasta com a MP3 dentro.

Ok, o TestiMp3 está funcionando.  Agora vamos usar o C# para chamar o executável TESTIMP3.EXE, criar o txt, passar os parametros necessários e pegar o endereco do arquivo MP3. Vamos lá:

string texto = “teste”;
const string PastaTESTIMP3 = @”C:\TESTIMP3\”;
const string arquivoTXT = PastaTESTIMP3 + “Texto.txt”;
const string arquivoTestiMP3 = PastaTESTIMP3 + “TESTIMP3.exe”;
StreamWriter sw = new StreamWriter(arquivoTXT);
sw.WriteLine(texto);
sw.Close();
Process.Start(arquivoTestiMP3, arquivoTXT);

Com essa função podemos tornar nossas páginas acessíveis a portadores de necessidades especiais, analfabetos ou para apredizagem de novos idiomas.  Falow Pessoal.


Criando uma trigger

Dezembro 12, 2007

Eae Pessoal,

Estou me preparando para fazer a prova 70-431 para me tornar MCTS em Sql Server. Lendo o livro MCTS 70-431 Self-Paced Training Kit eu encontrei um excelente exemplo de como criar uma trigger (gatilho) quando uma determinada tabela for alterada:

CREATE TRIGGER tu_employeepayaudit
ON dbo.Employee
FOR UPDATE
AS
DECLARE @now DATETIME
SET @now = getdate()
BEGIN TRY
INSERT INTO dbo.EmployeeAudit
(RowImage, PayRate, ChangeDate, ChangeUser)
SELECT ‘BEFORE’, INSERTED.PayRate, @now, suser_sname()
FROM DELETED
INSERT INTO dbo.EmployeeAudit
(RowImage, PayRate, ChangeDate, ChangeUser)
SELECT ‘AFTER’, INSERTED.PayRate, @now, suser_sname()
FROM INSERTED
END TRY
BEGIN CATCH
–Some error handling code
ROLLBACK TRANSACTION
END CATCH

att:

fonte: MCTS Self-Paced Training Kit (Exam 70-431): Microsoft® SQL Server™ 2005—Implementation and Maintenance


Método que verifica se o CPF é válido

Dezembro 6, 2007

Uma função muito útil no dia-a-dia do desenvolvedor é a verificação de CPF.

Segue um código que válida se a string passada é de fato um CPF válido.

public static bool IsCPF(string cpf)
{
int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
string tempCpf;
string digito;
int soma;
int resto;
cpf = cpf.Trim();
cpf = cpf.Replace(
“.”, “”).Replace(“-”, “”);
if (cpf.Length != 11)
       return false;
tempCpf = cpf.Substring(0, 9);
soma = 0;
for (int i = 0; i < 9; i++)
       soma +=
int.Parse(tempCpf[i].ToString()) * multiplicador1[i];
resto = soma % 11;
if (resto < 2)
       resto = 0;
else
       resto = 11 – resto;
digito = resto.ToString();
tempCpf = tempCpf + digito;
soma = 0;

for (int i = 0; i < 10; i++)
       soma +=
int.Parse(tempCpf[i].ToString()) * multiplicador2[i];

resto = soma % 11;if (resto < 2)
       resto = 0;
else
       resto = 11 – resto;digito = digito + resto.ToString();
return cpf.EndsWith(digito);
}

flw


Como pegar o primeiro e o último dia do mes

Dezembro 6, 2007

Eae pessoal,

Vou mostrar para vocês como encontrar o primeiro e último dia do mês usando C#.

DateTime mes = DateTime.Now;
DateTime primeiroDia = Convert.ToDateTime(“01/” + mes.ToString(“MM/yyyy”));
DateTime ultimoDia = primeiroDia.AddMonths(1).AddDays(-1);

abraços.


Webcast: Fábio Vázquez falando sobre Linq

Dezembro 6, 2007

Coloquei na minha pasta compartilhada um webcast do MVP Fábio Vazquez falando sobre Linq. Vale a pena assistir.

bom dia a todos.


Seguir

Get every new post delivered to your Inbox.