Sexta-feira, 5 de Junho de 2009

Mais um apontamento nesta rubrica que eu pretendo que seja uma mais valia e como tal acrescente saber. Posto isto, hoje vou-te falar dos Database Triggers estes servem para várias funções referente a auditoria das nossas base de dados em que alteramos as tabelas e necessitamos de colocar numa tabela para efeitos de auditoria. Vou então mostrar-te com um exemplo para evitar que tabelas sejam apagadas ou criadas, atenção é só um exemplo.

Use BaseDados
go
Create TRIGGER [DBTR_Teste_Drop_Create]
ON DATABASE
FOR DDL_TABLE_VIEW_EVENTS
AS
DECLARE @data xml
DECLARE @cmd nvarchar(350)
DECLARE @logMsg nvarchar(400)

SET @data = eventdata()
SET @cmd = @data.value
('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'nvarchar(350)')
SET @logMsg = @cmd + ' (' + SYSTEM_USER + ' on ' + HOST_NAME() + ')'

RAISERROR (@logMsg, 10, 1) WITH LOG

-- Para Visualizar o Comando executado
-- select @cmd

-- Aqui não permitimos criar objectos na base de dados (Exemplo: Create Table)
-- pois efectuamos o rollback

if left(@cmd,6)='Create'

rollback

-- Aqui não permitimos apagar objectos na base de dados (Exemplo: drop table)
-- pois efectuamos o rollback

if left(@cmd,4)='drop'
rollback

Nota: podemos criar uma tabela com as variáveis com o tipo indicado e inserir os erros

Terça-feira, 21 de Abril de 2009



Sp para copiar ficheiros muito útil

USE [aspnetdb] -- Replace with your DB
GO
/****** Object:  StoredProcedure [dbo].[usp_copiamsg]    Script Date: 04/21/2009 09:22:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create procedure [dbo].[usp_copiamsg]
@msg as varchar(200),
@input as varchar(100)
,@retorno as varchar(200) output
as
Begin 

declare @drive as varchar(100)
declare @drive_dest as varchar(100)
declare @path as varchar(800)
declare @path_dest as varchar(800)
declare @cmd as varchar(800)
declare @ext as char(3)

set @path_dest='\Dest_Path\'
-- Para Exemplo, não esquecer barra de directorio final 
--
set @path='\PROGRA~1\DATA\'
set @drive='c:'
set @drive_dest='d:'
set @cmd='copy '+@drive+@path+@msg+@ext
set @cmd=@cmd+@drive_dest+@path_dest+ltrim(rtrim(@input))+(select  cast(day(getdate())  as varchar(2)))
+(select  cast(month(getdate())  as varchar(2)))
+(select  cast(year(getdate())  as varchar(4)))
+replace((select convert(varchar(8),getdate(),108)),':','')+@ext




-- Para Testar Caminhos e Visualizar
-- select @cmd

exec master..xp_cmdshell @cmd ,no_output

Set @retorno=@drive_dest+@path_dest+ltrim(rtrim(@input))+(select  cast(day(getdate())  as varchar(2)))
+(select  cast(month(getdate())  as varchar(2)))
+(select  cast(year(getdate())  as varchar(4)))
+replace((select convert(varchar(8),getdate(),108)),':','')+@ext

end


Segunda-feira, 9 de Março de 2009

Depois de uma analise cuidada verifiquei que existe muitos pedidos, ou leitores que passavam por cá, não obtinham a resposta adequada as suas necessidades, por isso cá vai.

Caros o que se deve fazer quando o Windows Vista fica com o Ecrã preto, de certo instalaram alguma aplicação não compativel com o Vista.

A solução mais rápida é efectuar o restauro do sistema depois de entrar em Modo de Segurança.

Vocês perguntam como ?

  1. Desligar o pc e voltar ligar, depois do teste de memória pressionar a tecla F8
  2. Quando o computador ligar e apresentar no ecrã que esta em Modo de Segurança
  3. Seleccionar " Restauro do Sistema"
  4. Escolher o último caso tenha sido muito recentemente, ou escolher outro.
  5. Depois aguarde enquanto o computador repõe o modo de restauro
  6. Quando iniciar normalmente, em principio estará resolvido o problema

Nota Muito Importante:
Os documentos, fotografias e dados de aplicações devem estar salvaguardados através de cópias de segurança.

Quarta-feira, 4 de Março de 2009

Caros como existe muitas pesquisas sobre este tema aqui vai desta vez com imagens



Vamos ver mais de perto


Convert campo Text para varchar



  • Soma na formula o campo na 1ª posição e agrupa pelo campo2
Whileprintingrecords;
sum ({tabela1.campo1},{tabela1.campo2})

  • Soma dois campos da tabela na formula em baixo
WhilePrintingRecords;
({file.Qty1}+ {file.Qty2})


clique aqui para visualizar uma ajuda



Domingo, 18 de Janeiro de 2009

Após alguma ausência derivado a diversos acontecimentos profissionais , já reparam que o Blog mudou de nome em virtude do registo do dominio www.ITTechBuZ.com e novo logo.
Este logo transmite a comunicação como grande vertente pilar nas tecnologias de informação com o mundo empresárial e entre todos. Este Blog continua em 2009 a principalmente a publicar para técnicos. Hoje Domingo aproveito para deixar mais um apontamento da rubrica SQL Truques & Dicas com uma SP com um cursor.

SQL Truques & Dicas
Esta sp é para usar para actualizar consumo de horas numa aplicação

--
-- Cria a SP com o nome sp_actualiza_onsite
--
create procedure [dbo].[sp_actualiza_onsite]
as Begin


--
-- Insere Ticket depois de Fechado (Estado 'Closed')
-- Uso um Insert a partir de um Select
--



INSERT INTO [HEAT].[dbo].[Tickets] ([CallId] ,[CallType] ,[CriData] ,[Valor] ,[Saldo] ,[UIDMANUT])


select d.callid,c.calltype,c.closeddate, d.horas_gastas, d.horas_saldo
,d.uidmanut
,c.custid
from detail d

inner join calllog c on c.callid=d.callid
inner join subset s on s.callid=c.callid
inner join config cfg on cfg.u_idreg=d.uidmanut
where (c.calltype='Onsite' or c.calltype='Packs') and c.callstatus='Closed' and c.actualiza<>'SIM'
and c.callid not in (select callid from tickets )

--
-- Actualiza contratos com as Horas Gastas
-- Cursor usado para update
--

-- Declaração do Cursor com o nome de cursor_Tickets
-- Select aonde vai correr o cursor

DECLARE Cursor_tickets CURSOR for
SELECT t.CallId,c.custid,t.Valor,t.UIDMANUT
from tickets t
inner join calllog c on c.callid=t.callid
where t.[CallType]='Onsite' and c.actualiza <>'SIM'

--
-- Declaração de Variaveis para passar do Cursor
--

Declare @Callid varchar(8)
declare @custid varchar(50)
declare @valor decimal(17,2)
declare @uidmanut varchar(25)

set @callid=''
set @custid=''
set @valor=0
set @uidmanut=''


Open Cursor_tickets /* abrir o cursor */

fetch next from Cursor_tickets
into @callid,@custid,@valor,@uidmanut
while @@fetch_Status=0
begin

--- Actualização das Horas Gastas
--- select @valor,@custid,@uidmanut (usado para verificação e teste)

update config set horas_gastas=isnull(@valor,0)+(isnull(horas_gastas,0)) ,horas_saldo=isnull(horas_saldo,0)-isnull(@valor,0)
where u_idreg=@uidmanut and custid=@custid

set @callid=''
set @custid=''
set @valor=0
set @uidmanut=''

fetch next from Cursor_Tickets
into @callid,@custid,@valor,@uidmanut
end
close Cursor_tickets
Deallocate Cursor_tickets

--
-- No Final actualiza a tabela de forma a não repetir os registos já processados
--

update calllog set actualiza='SIM' where callid in (select callid from tickets) and actualiza<>'SIM'


end

Domingo, 21 de Dezembro de 2008

Votos de Boas Festas e Feliz Ano Novo.





Terça-feira, 18 de Novembro de 2008

From It Tech Blogers


Esta sp cria automaticamente um trigger a correr a partir de um job no SQL Server, dá muito jeito quando necessitamos de alterar a tabela.

Create procedure [dbo].[sp_creates_trigger]
as
begin



declare @texto nvarchar (800 ) -- Declara a variavel texto

set @texto='CREATE TRIGGER [subset_trig] ON [dbo].[Subtable] AFTER INSERT AS BEGIN SET NOCOUNT ON; declare @tfield as varchar(8) set @tfiled = (select id_num from inserted)
update subtable set ufield = @tifield where customer<>''Web'' and id_num=@tfield
END'
-- set the trigger in table subtable for an action After Inserted that updates the table
exec sp_executesql @texto -- executa sp com a variavel texto
end

Esta funcionalidade é muito boa quando necessitamos de garantir que este trigger está presente.

Quinta-feira, 6 de Novembro de 2008

Hoje não abordar o Microsoft SQL Server, mas sim o Google Analytics, é pena que outras ferramentas potentes do calibre do Google não me possa fornecer acesso a elas por isso, vamos lá falar.
Estou maravilhado com o Google Analytics e as novas opções que são a possibilidade de configurar relatórios elaborados de acordo com a nossa vontade com as métricas, depois também podemos usar a opção de criar-mos a nossa própria segmentação vou mostar embaixo na imagem para poderem ver aquilo que eu quero dizer.


Terça-feira, 30 de Setembro de 2008

Nunca foi tão simples colocar link's nos email para efectuar a analise de quantas pessoas chegam ao seu site através do seu email e depois analisar o retorno. vejamos um exemplo :

Vamos enviar um email e nos links devemos colocar a frente o que se encontra a azul
http://jorge.m.cunha.googlepages.com/newsletter3.html?utm_source=Newsletter&utm_medium=email&utm_content=Newsletter&utm_campaign=Newsletter3

A seguir ao seu link colocar o seguinte alterando para o desejado
?utm_source=Newsletter&utm_medium=email&utm_content=Newsletter&utm_campaign=Newsletter3

- O que está a verde é para alterar:
- Utm_source=Newsletter ,ou seja, para determinar qual a nossa acção
- utm_medium=email , ou seja , qual a forma de envio da nossa acção
- utm_content=Newsletter , ou seja, desta forma determino qual o conteúdo
- utm_campaign,ou seja, Nº da Newsletter

Depois desta Informação podemos visualizar a informação seguinte


Não esquecer de colocar o script que coloca também nas suas páginas do seu site

Domingo, 21 de Setembro de 2008



Imagem do Logo Jorge CunhaNewsLetter 3











Newsletter nº 3


Sumário:


Nesta Newsletter vou vos dar conhecimento de estou a por uma rubrica acerca do Microsoft SQL Server que se denomina de SQL Truques e Dicas em http://itechblogers.tk



Neste momento estou a participar no RVCC para tentar finalizar este trabalho ainda este ano. Umas questões que ponho a todos porque que será que as Empresas Portuguesas, não usam o conceito Web 2 nos seus sites corporativos?, será por falta de conhecimento?, ou porque não acham que tenham vantagem competitiva?



Para Navegar ao Site
Principal




Copyright (C) 2007 Jorge Cunha All rights reserved.
Envie este E-mail aos seus Amigos

Segunda-feira, 15 de Setembro de 2008



Quando necessitamos de mudar o nome do servidor ao nivel do sistema operativo, torna-se obrigatório mudar o nome do SQL Server

  1. Backup das bases de dados
  2. select @@SERVERNAME devolve o nome do SQL Server
  3. sp_dropserver 'jmc-pc' nome do servidor anterior
  4. go
  5. sp_addserver 'ws-jmc', local nome novo do servidor
  6. go
  7. repetir o passo 2 after depois de reiniciar os serviços do SQL Server para verificar que o nome é aquele que lhe demos no passo 5
  8. Mais Informação em http://msdn.microsoft.com/en-us/library/ms143799.aspx

Domingo, 31 de Agosto de 2008

Vista do Pinhão

Rio de Onor
Museu da Mascara Ibérico

Bragança Vista do Castelo

Miranda Do Douro

Trancoso


Quarta-feira, 30 de Julho de 2008






Estava a procura de uma solução para os problemas com as colunas de identity no SQL e encontrei uma solução


Para ver qual o número que esta a nossa coluna de identity:


DBCC CHECKIDENT

(

articles


)
A resposta é que o valor é 6 como se pode visualizar aqui em baixo
Checking identity information: current identity value '6', current column value '6'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Para colocar um novo número na nossa coluna da tabela article:

DBCC CHECKIDENT

(

articles,reseed ,6000


)

retorna:

Checking identity information: current identity value '1000', current column value '6000'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Nota:
Não se deve usar o comando truncate pois este faz um reset a coluna Identity, por esta razão deve-se usar o comando delete.

Segunda-feira, 14 de Julho de 2008


Vou mostrar como eu uso um select para lêr um ficheiro do Excel




Exemplo:
Select *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=D:\importa\Ficheiro_Excel.xls;Extended Properties=Excel 8.0')...Folha1$

Para usarmos com a eficácia que sempre pretendemos. Os cabeçalhos devem ser únicos
e aonde está o Data Source deve-se indicar a localização do ficheiro e a folha do ficheiro de Excel que queremos efectuar o select(nota: o $ faz parte do comando). Os nomes quer do ficheiro quer da folha deve-ser simples, ou seja, sem espaços e caracteres especiais, as colunas do ficheiro de Excel deve estar bem formatadas.

Seja Solidário vá a http://www.ami.pt

Quinta-feira, 19 de Junho de 2008

Caros Leitores hoje traga-vos um exemplo para evitar
os problemas de campos que são nulos no SQL e como uma simples instrução, podemos resolver o problema
a sintaxe é a seguinte:

Isnull(campo ou expressão,número) , ou seja, Isnull(fila_teste,0)

Explicação se campo for nulo o valor é zero, se a operação for divisão ou multiplicação pode-se usar em vez do zero um 1, ou um case mas em relação a este irei abordar brevemente,
espero que seja útil este "post" e que Portugal
ganhe no Euro 2008 frente a Alemanha.



Site: Pessoal




Quinta-feira, 5 de Junho de 2008

Vou colocar uma Dica sobre o Crystal Reports que dá muito jeito. Uma delas tem a com o sql expressions em que podemos usar outra tabela e colocar o campo no report em que podemos efectuar colocando da seguinte forma:

(select top 1 registo from tabela where registo=1)

Podemos usar esta expressão sempre entre parênteses.

Em relação ao While Printing Records é muito util quando estamos a calcular totais ou se queremos avaliar se a impressão de registos de detalhe já terminou para possamos suprimir o page footer a sintaxe para exemplo:

WhilePrintingRecords; Booleanvar myvar true

Quarta-feira, 21 de Maio de 2008

Depois de algum caminho percorrido, penso que tem vindo a estabilizar.

Neste momento pela minha experiência com o Vista em Português e em Inglês penso que as Empresas podem começar já a pensar em actualizar os seus parques informáticos mas devem ter atenção ao seguinte:

- Hardware
O Hardware dever ter como processador pelo menos um Duo Core e pelo menos 2 GB de Ram na memória.Uma boa placa de vídeo. Verificar se o hardware está homologado para o Vista, ou seja Drivers para os mesmos. ( existe uma Ferramenta neste link para avaliar na vossa rede).

Existe também para computadores com o Windows XP no site da microsoft um programa para avaliar e aconselhar ( aqui vai o link da microsoft http://www.microsoft.com/downloads/details.aspx?displaylang=pt-pt
&FamilyID=42b5ac83-c24f-4863-a389-3ffc194924f8)

- Software

Efectuar um levantamento exaustivo em termos de aplicações para que estas corram no Vista.
com estas indicações penso que poderá avançar para um teste piloto para assegurar que a transição é calma e segura.

Se o seu parque de PC's for das maiores marcas mundiais
deve consultar o site do fabricante


A versão do Vista que recomendo é o Vista Business e as versões mais estaveis como sempre são as Nativas, ou seja, em Inglês.






WebSite JC

Domingo, 20 de Abril de 2008

Caros em virtude de ter muito trabalho foi-me completamente impossível de elaborar conteúdo. Por isso deixo-vos com o meu motor de pesquisa, proporcionado pelo Google com o nome de pesquisa personalizada Beta em Português.

Este motor de pesquisa que utilizo no meu dia a dia, desta forma foi seleccionado fontes de informação colocando todos os sites que utilizo para trabalhar. Desta forma partilho está informação com todos.
Se clicarem a imagem poderam usar também e ver se funciona para vocês.
Se puderem dêem o feedback que julgam adequado para melhorar.

Deixo-vos mais uma imagem a baixo para verem

Sábado, 29 de Março de 2008

Hoje vamos falar sobre o OPEN ID esta tecnologia permite efectuar o acesso em múltiplos sites com toda a segurança. Esta tecnologia em que tive o conhecimento a partir do Microsoft Passport, mas não vingou pelo menos generalizou a outros sites não Microsoft.
Voltando a tecnologia com a Web 2.0 e as redes sociais em que o utilizador tem de inserir o utilizador e password múltiplas vezes. Esta tecnologia lançada através da Fundação Open ID
que não é proprietária tem já múltiplos sites a fornecer está solução tais como a Verisign entre outras, o que torna ainda mais credível esta iniciativa, também existem já muitos sites a aderirem a está solução de autenticação. Apesar deste post não ser de uma actualidade gritante penso que depois de lerem atentamente através deste link http://www.openid.net. No mundo das empresas estas já tem muitas soluções de "Single Sign On".

Sábado, 15 de Março de 2008

Mais uma vez tive de efectuar um restauro do sistema porque a actualização que efectuei estava sempre a dizer que estava a concluir, mesmo depois de ter reiniciado. Mais uma vez tive de efectuar um ponto de restauro, uma ferramenta muito útil.
- Descrição de passos Entrar em modo de segurança e depois seleccionar o ponto de restauro anterior a actualização.

Espero que apesar do continuado esforço da Microsoft, esta não fique enfadado com este post, pois nós sabemos que por vezes estas situações ocorrem . Temos de esperar pelo SP1 para que fiquem ultrapassados estes pequenos problemas.