Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

terça-feira, 17 de abril de 2012

Windows Mail: Erro ao abrir anexos de associação de programas

PROBLEMA: Ao tentar abrir um anexo no Windows Mail como exemplo .doc, .pdf e outros mais você pode receber a mensagem de erro abaixo.

MENSAGEM: Este arquivo não tem um programa associado a ele para realizar esta ação. Crie uma associação no painel de controle Definir Associaçõ

SOLUÇÃO:
Método 1: Apagar a associação da extensão para o usuário. No seguinte caminho:
HKEY_CURRENT_USER/Software/Microsoft/Windows/Current/Version/Explorer/File/Exts, por exemplo abaixo desta chave temos .doc, .pdf e outras mais. Podemos excluir o .doc e associar novamente a extensão ao Microsoft Word, ou podemos excluir o .PDF e associar ao Adobe Reader.

Método 2: Apagar a associação da extensão para o Windows. No seguinte caminho:
HKEY_CLASSES_ROOT/.doc ou HKEY_CLASSES_ROOT/.pdf, por exemplo abaixo desta chave temos .doc, .pdf e outras mais. Podemos excluir o .doc e associar novamente a extensão ao Microsoft Word, ou podemos excluir o .PDF e associar ao Adobe Reader.
Método 3: Se ainda assim persistir renomear o arquivo windowsmail.msmessagestore para windowsmail.old para que possa refazer o indíce das mensagens do Windows Mail.
Localizar o arquivo a ser renomeado na pasta C:Users/<user profile>/App/DataLocal/Microsoft/Windows Mail


Fonte: http://www.windowsbrasil.com.br/?p=1303

quarta-feira, 28 de março de 2012

Tomcat - Erro no deploy

Mensagem de erro:

HTTP Status 500 -


type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (54526273) exceeds the configured maximum (52428800)
 org.apache.catalina.connector.Request.parseParts(Request.java:2666)
 org.apache.catalina.connector.Request.parseParameters(Request.java:2875)
 org.apache.catalina.connector.Request.getParameter(Request.java:1131)
 org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:384)
 org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:163)
root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (54526273) exceeds the configured maximum (52428800)
 org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:799)
 org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:282)
 org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:302)
 org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:129)
 org.apache.catalina.connector.Request.parseParts(Request.java:2638)
 org.apache.catalina.connector.Request.parseParameters(Request.java:2875)
 org.apache.catalina.connector.Request.getParameter(Request.java:1131)
 org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:384)
 org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:163)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.16 logs.

Apache Tomcat/7.0.16

 

 

Solução: 

Procure o arquivo "web.xml" do "manager application" (normalmente encontra-se em /tomcat7/webapps/manager/WEB-INF/web.xml)

Procure os parametros: "max-file-size" e "max-request-size"

<multipart-config>
<!– 50MB max –>
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>

E aumente os valores do "max-file-size" e "max-request-size".

 

terça-feira, 27 de março de 2012

sábado, 10 de março de 2012

Oracle - ASM


--configurar o listner
netca (interface nova)
ou
netmgr (interface antiga)

obs.: mudar para instancia +ASM, antes para trabalhar com a base e voltar para ORCL para configurar a instancia

--------
Ferramentas:

. oraenv
determina qual base trabalhar, alternando entre elas


dba
cria e configurar um database

-------------------
sqlplus / as sysdba (entra com as credenciais do sistema operacional)
sqlplus sys/oracle as sysdba
sqlplus hr/senha
sqlplus /nolog (abre o sqlplus sem conectar-se)
sqlplus hr/senha@teste
sqlplus system/oracle@10.68.46.74:1521/orcl.localdomain
sqlplus hr (pedirá a senha para conectar-se)
sqlplus sys as sysdba (pedirá a senha para conectar)

---------

emctl start dbconsole
inicializa o enterprise manager

emctl stop dbconsole
para o enterprise manager

emctl status dbconsole
mostra o estado atual do enterprise manager

-------------------------
lsnrclt start (Inicia o listener)
lsnrclt stop (para o listener)
lsnrclt status (Verifica o status do listener)

----------------


--comandos para acessar o ASM, deve estar na base +ASM

asmcmd -p (utilizado para acessar os arquivos do ASM)

asmca (utilizado para configurar os discos do ASM)


















Oracle - Ferramentas


sqlplus - acessar a base de dados

asmcmd - acessar o conteudo dos discos do ASM

asmca - criar os grupos de discos do ASM

dbca - criar base de dados

netmgr - ferramenta para gerenciamento de rede

netca - ferramenta para gerenciamento de rede

lsnrctl - ferramenta para gerenciar o listener

emctl - ferramenta para iniciar/parar o enterprise manager

srvctl - oracle Restart, permite executar uma série de comandos em apenas uma linha de prompt

orapwd - criar arquivo de senha da base, onde ficam indicados quais usuário acessam a base via sysdba com a base fechada.

quarta-feira, 7 de março de 2012

Oracle formato - hora minuto segundo


Oracle date to hundredths of a second

Oracle Tips by Burleson Consulting

Question:  In have incoming data that records hundredths of a second and I cannot find a DATE format (i.e. nls_date_format) to hold hundredths of a second.
Answer:  It's tempting to try the SSSS date format, but you annot use the "SSSS" format for milliseconds because SSSS is the number of seconds after midnight.

Instead, you need to use the TIMESTAMP datatype instead of the DATE datatype.  The TIMESTAMP datatype has fractional seconds, as noted by the FF notation:
     'DD-Mon-YYYY HH24:MI:SS.FF'
For example, you can define a TIMESTAMP column and store data into it, something like this:
create table t1 (timecol TIMESTAMP);
insert into T1 (timecol) values
   to_timestamp('200612251211000000','YYYYMMDDHHMISSFF')
this query will convert to fractional seconds:

select
   to_char(sysdate, 'DD-Mon-YYYY HH24:MI:SS'),
   localtimestamp(2),
   to_timestamp(
      to_char(
         sysdate, 'DD-Mon-YYYY HH24:MI:SS'
      )||'.55', 'DD-Mon-YYYY HH24:MI:SS.FF')
from
   dual;


Fonte: http://www.dba-oracle.com/t_date_format_hundredths_second.htm

terça-feira, 6 de março de 2012

Oracle - Diferenças em dias entre duas datas

Oracle - Exemplo para calcular a diferenças em dias entre duas datas 
 
SELECT TRUNC(sysdate) - TRUNC(t.hiredate) FROM myTable t; 
 
 
 
 
 
fonte: http://stackoverflow.com/questions/3129707/count-the-number-of-days-between-today-the-hiredate-in-oracle-sql 

segunda-feira, 20 de fevereiro de 2012

Cinco sites para você estudar inglês de graça




Com a copa do mundo e as olimpíadas batendo em nossa porta, estudar inglês nunca foi tão importante para os empreendedores brasileiros. Afinal, daqui a alguns anos, seu empreendimento estará lotado de turistas estrangeiros querendo comprar seus produtos e usufruir dos serviços prestados pela sua empresa. A comunicação será fundamental para a satisfação desses clientes. Mas, infelizmente, estudar um outro idioma no Brasil é muito difícil. As escolas de idiomas cobram uma fortuna mensalmente e o estudo do inglês na escola pública é uma piada. Pensando nisso, o Ambiente Externo selecionou cinco sites para você estudar inglês pela internet, e, o melhor, sem pagar nada.
1- Livemocha
O Livemocha é uma rede social para estudantes de línguas estrangeiras. Nesse site, você pode estudar diversos idiomas, realizar os exercícios propostos e a  correção será realizada pelos usuários nativos dos países onde o idioma, ao qual você está estudando, é falado. É um ótimo lugar para conhecer pessoas de outros lugares.  Se você quiser assessoria profissional, é possível contar com o apoio de professores formados adquirindo o pacotes Actives, por um preço muito abaixo do praticado pelas escolas de idiomas tradicionais.
2- Engvid
Mantido por um grupo de professores canadenses, o EngVid fornece vídeos com a explicação da gramática, gírias e expressões em inglês. O bom desse site, é que você pode aprender a gramática e ao mesmo tempo treinar o seu “listening”. No final de cada vídeo, o site fornece um pequeno quiz para você testar sua compreensão sobre a lição.
3- Learn American English Online
Atualizado diariamente pelo professor Paul, o Learn American English Online (não se assuste com o tamanho do nome) fornece um curso de inglês completo, do básico ao avançado.  Em cada lição, você terá uma explicação escrita e outra em vídeo. O layout do site é simples, mas acessando-o diariamente, é possível aprender muita coisa.
4- PodEnglish
Criado pela escola a distância Englishtown, o PodEnglish fornece podcasts que permite você estudar inglês através de seu ipod, mp4 players ou derivados. No canal do Youtube, você encontra todos os episódios gravados, desde do iniciante até o avançado.
5- CNN Students News
Para os estudantes mais avançados, o CNN Students News pode ser uma boa opção. Trata-se de um podcast de um programa do canal CNN destinado a estudantes de ensino médio dos Estados Unidos.  São notícias do mundo faladas em uma linguagem simples, para ser compreendida por estudantes americanos. Pode ser um boa idéia para você treinar seu listening e compreensão sobre o idioma.

segunda-feira, 2 de janeiro de 2012

Windows 7 - Desabilitar logon automático

Você é o único usuário do computador, não possui senha para sua conta e está cansado do sistema de logon automático do Windows 7?
Basta clicar em Iniciar -> Executar e digitar “netplwiz” (sem aspas).
Abre-se a caixa Contas de Usuário.
Selecione seu usuário e desmarque o item “Os usuários devem digitar um nome de usuário e uma senha para usar este computador”. Clique em Ok e o sistema pedirá que você digite sua senha duas vezes. Confirme a operação. Na próxima vez em que você entrar no sistema, o logon automático estará desabilitado e vai entrar automaticamente.

Fonte: http://tecnoinformacao.wordpress.com/2011/05/17/windows-7-desabilitar-logon-automatico/

quarta-feira, 14 de dezembro de 2011

Word e Excel - Modo de Exibição Protegido


Modo de Exibição Protegido
No MS Office 2010, ao abri um arquivo no formato Word ou Excel vindo anexado de um e-mail, internet ou rede, aparece a mensagem “Modo de Exibição Protegido”, como na imagem abaixo.
Para desabilitar essa mensagem no Word ou Excel, pasta ir ao menu Arquivo\Opções
Na tena de Opões, vá ao menu “Central de Confiabilidade”

Na tela da central de confiabilidade, vá ao menu “Modo de exibição protegido”

Basta desmarcarmo as caixas de seleção para desabilitar a exibição da mensagem.

Anderson

segunda-feira, 12 de dezembro de 2011

Mapeando Dados Oracle para SQL Server

Mapeamento de tipo de dados para Publicadores Oracle

SQL Server 2008 R2
Tipos de dados de Oracle e tipos de dados de MicrosoftSQL Server nem sempre correspondem exatamente. Onde possível, o tipo de dados correspondente é selecionado automaticamente ao publicar uma tabela de Oracle. Em casos em que o mapeamento de um único tipo de dados não é claro, mapeamentos alternativos de tipo de dados são fornecidos. Para obter informações sobre como selecionar mapeamentos alternativos, consulte "Especificando Mapeamentos Alternativos de Tipos de Dados”, mais adiante neste tópico.
A tabela a seguir mostra como os tipos de dados são mapeados por padrão entre o Oracle e o SQL Server quando os dados são movidos de um Publicador Oracle para o Distribuidor do SQL Server. A coluna de Alternativas indica se mapeamentos alternativos estão disponíveis.
Tipo de dados de OracleTipos de dados SQL ServerAlternativas
BFILEVARBINARY(MAX)Sim
BLOBVARBINARY(MAX)Sim
CHAR([1-2000])CHAR([1-2000])Sim
CLOBVARCHAR(MAX)Sim
DATEDATETIMESim
FLOATFLOATNão
FLOAT ([1-53])FLOAT ([1-53])Não
FLOAT ([54-126])FLOATNão
INTNUMERIC(38)Sim
INTERVALDATETIMESim
LONGVARCHAR(MAX)Sim
LONG RAWIMAGESim
NCHAR([1-1000])NCHAR([1-1000])Não
NCLOBNVARCHAR(MAX)Sim
NUMBERFLOATSim
NUMBER([1-38])NUMERIC([1-38])Não
NUMBER([0-38],[1-38])NUMERIC([0-38],[1-38])Sim
NVARCHAR2 ([1-2000])NVARCHAR([1-2000])Não
RAW ([1-2000])VARBINARY([1-2000])Não
REALFLOATNão
ROWIDCHAR([1-2000])Não
TIMESTAMPDATETIMESim
TIMESTAMP(0-7) DATETIMESim
TIMESTAMP(8-9) DATETIMESim
TIMESTAMP(0-7) WITH TIME ZONEVARCHAR(37)Sim
TIMESTAMP(8-9) WITH TIME ZONEVARCHAR(37)Não
TIMESTAMP(0-7) WITH LOCAL TIME ZONEVARCHAR(37)Sim
TIMESTAMP(8-9) WITH LOCAL TIME ZONEVARCHAR(37)Não
UROWIDCHAR(18)Não
VARCHAR2([1-4000])VARCHAR([1-4000])Sim
Pense nos seguintes problemas de tipo de dados ao replicar dados de um banco de dados de Oracle.

Tipos de dados sem suporte

Os seguintes tipos de dados não têm suporte; não podem ser replicadas as colunas que têm estes tipos:
  • Tipos de objeto
  • Tipos XML
  • Varrays
  • Tabelas aninhadas
  • Colunas que usam REF

O tipo de dados de DATE.

As datas no SQL Server vão de 1753 a.C. a 9999 d.C. enquanto as datas no Oracle vão de 4712 a.C. a 4712 d.C. Se uma coluna do tipo DATE contém valores que estão fora do intervalo do SQL Server, selecione um tipo de dados alternativo para a coluna, que é VARCHAR(19).

Tipos FLOAT e NUMBER

A escala e precisão especificadas durante o mapeamento de tipos de dados FLOAT e NUMBER dependem da escala e precisão especificadas para a coluna usando o tipo de dados no banco de dados do Oracle. A precisão é o número de dígitos em um número. A escala é o número de dígitos à direita da casa decimal em um número. Por exemplo, o número 123,45 tem uma precisão de 5 e uma escala de 2.
O Oracle permite números a serem definidos com a escala maior que a precisão, tal como NUMBER(4,5), mas o SQL Server requer que a precisão seja igual ou maior que a escala. Para garantir que não há truncamento de dados, se a escala for maior que a precisão no Publicador Oracle, a precisão é definida igual à escala quando o tipo de dados for mapeado: NUMBER (4,5) ele seria mapeado como NUMERIC (5,5).
Observação Observação
Se você não especificar a escala e a precisão para NUMBER, o SQL Server usa o padrão máximo de escala (8) e precisão (38). É recomendável que você defina uma escala e precisão específicas no Oracle para melhor armazenamento e desempenho quando os dados forem replicados.

Tipos de objeto grande

O Oracle suporta até 4 gigabytes (GB), enquanto que o SQL Server suporta até 2 GB. Dados replicados acima de 2 GB são truncados.
Se uma tabela de Oracle incluir uma coluna de BFILE, os dados para a coluna serão armazenados no sistema de arquivos. A conta do usuário administrativo da replicação deve receber acesso ao diretório no qual os dados estão armazenados usando a seguinte sintaxe:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Para obter mais informações sobre tipos de objetos grandes, consulte a seção "Considerações sobre objetos grandes" em Considerações de design e limitações para Editores Oracle.
Tipicamente, o padrão de mapeamento de tipo de dados é apropriado, porém para muitos tipos de dados do Oracle, você pode selecionar um mapeamento de tipo de dados a partir de um conjunto de mapeamentos alternativos, ao invés de usar o padrão. Há dois modos para especificar os mapeamentos alternativos:
  • Substitua o padrão em uma base por artigo usando procedimentos armazenados ou o Assistente para Nova Publicação .
  • Globalmente altere o padrão para todos os artigos futuros usando procedimentos armazenados (não são alterados os padrões para os artigos existentes).
Para especificar mapeamentos alternativos de tipo de dados

Oracle - Trabalhando com datas

SELECT SYSDATE DATA_ATUAL,
ADD_MONTHS(SYSDATE,-1) MENOS_UM_MES,
ADD_MONTHS(SYSDATE,1) MAIS_UM_MES,
LAST_DAY(SYSDATE) ULTIMO_DIA_MES,
TRUNC(SYSDATE,"MONTH") PRIMEIRO_DIA_MES,
MONTHS_BETWEEN(SYSDATE,"01-JAN-2001") QTD_MES,
FLOOR(MONTHS_BETWEEN(SYSDATE,"01-JAN-2001")) ARREDONDA_ABAIXO,
CEIL(MONTHS_BETWEEN(SYSDATE,"01-JAN-2001")) ARREDONDA_ACIMA,
ABS(MONTHS_BETWEEN(SYSDATE,"01-JAN-2001")) VALOR_ABSOLUTO,
ROUND((MONTHS_BETWEEN(SYSDATE,"01-JAN-2001")),2) ARREDONDA,
TRUNC(SYSDATE,"year") PRIMEIRO_DIA_ANO,
to_char(SYSDATE,"dd " DE " FMMONTH " DE " YYYY","nls_date_language=portuguese") DIAMES_EXTENSO,
to_char(SYSDATE,"FMMONTH " DE " YYYY","nls_date_language=portuguese") MES_EXTENSO,
TO_CHAR(SYSDATE,"HH24:MI") HORA_MINUTO,
to_char(sysdate,"FMMonth","nls_date_language=portuguese") mes_corrente,
to_date(lpad(to_char(1234),4,"0"),"hh24mi") dias_data,
Floor(floor(months_between(SYSDATE,SYSDATE)) / 12) IDADE,
decode(TO_NUMBER(TO_CHAR(SYSDATE,"D")),2,"segunda-feira",3,"terça-feira",4,"quarta-feira",
5,"quinta-feira",6,"sexta-feira",7,"sabado",1,"domingo") dia_da_semana
FROM DUAL

fonte: http://www.linhadecodigo.com.br/Dica.aspx?id=1292

SQL Server - Views Indexadas

Melhorando desempenho de consultas utilizando Views Indexadas

O artigo tem o objetivo de ensinar a utilização e criação de Views Indexadas, mostrando a melhora de desempenho ao utilizá-la.


O artigo tem o objetivo de ensinar a utilização e criação de Views Indexadas, mostrando a melhora de desempenho ao utilizá-la. Para conseguir exemplificar com mais precisão, mostrarei os conceitos de utilização e criação de Views e Index independentemente um recurso do outro. Nos exemplos deste artigo, utilizaremos o banco AdventureWorks, que vem com o banco de exemplo do SQL Server 2005.
Aconselho fortemente que você pesquise no Books Online sobre a criação e uso de sintaxe de Views e Indexes. No artigo vou apresentar a melhora no desempenho e não sua sintaxe. No Books Online você irá encontrar um material rico e completo sobre estes recursos.
Entendendo o que é uma View
A criação de instruções de consulta é na maioria dos casos simples, mas quando repetidos diversas vezes os mesmos códigos, pode-se começar a ficar cansativa a sua criação.  Para armazenar estas consultas em banco, utiliza-se um recurso já antigo de bancos de dados chamado View. Uma View é uma representação virtual de uma tabela, e pode conter colunas de uma ou varias tabelas físicas ou até mesmo de outras Views. Na maioria das vezes, as Views não armazenam os dados em banco, elas consultam os dados que foram selecionados em suas tabelas de origem. É possível utilizar uma View em qualquer lugar onde se possa utilizar uma tabela.
Vamos criar uma View de exemplo, consultando as tabelas Product e ProductModel do banco AdventureWorks.
CREATE VIEW vw_ProdutoDescricao WITH SCHEMABINDING AS
SELECT P.ProductID Codigo, P.Name Descricao, M.Name Produto
FROM Production.Product P INNER JOIN
      Production.ProductModel M
  ON P.ProductModelID = M.ProductModelID
Esta View irá retornar os dados relacionados entre as duas tabelas, e como não foi especificado nenhum Schema e neste caso estou conectado ao banco como usuário SA(System Administrator), a View irá assumir que o Schema é o do DBO.
Abaixo estão as sessões de Views do banco AdventureWorks, que exibe onde ficam armazenados todos objetos Views deste banco. Repare que na imagem da esquerda exibe o banco sem a View que criamos, e na imagem da direita, já apresenta a View criada.
Para ativar o retorno das estatísticas de IO (Input/Output), e solicitar que seja exibido na aba de Messages não somente a quantidade de linhas que foram retornadas, mas também quais tabelas foram acessadas e quantas leituras lógicas (Logical Reads) foram necessárias em cada tabela para conseguir atingir o resultado solicitado, devemos executar o código abaixo:
SET STATISTICS IO ON
Para executar a consulta que acabamos de criar, podemos chamar a View vw_ProdutoDescricao, fazendo um SELECT simples nela, como se fosse o de uma tabela.
SELECT * FROM vw_ProdutoDescricao
Repare que ao executar o SELECT na View, é apresentado o mesmo resultado da execução do SELECT nas tabelas que foram utilizadas em sua criação.
Pelo fato das estatísticas de IO estarem ativadas, o resultado é semelhante a este apresentado:
(295 row(s) affected)
Table "Worktable". Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table "Product". Scan count 1, logical reads 15, physical reads 1, read-ahead reads 14, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table "ProductModel". Scan count 1, logical reads 2, physical reads 1, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
 
Neste exemplo são poucos dados que são armazenados na tabela de exemplo, mas já é possível visualizar que foram lidas 17 páginas de arquivos. Sendo 15 páginas da tabela Products e 2 páginas da tabela ProductModel.
O que é um Index?
O SQL Server é um banco de dados relacional, e em bancos de dados relacionais existe um recurso chamado Index (Indexação). O Index permite que o banco de dados acesse rapidamente linhas em uma tabela baseando-se nos valores de uma ou varias colunas. Para criar Index não se deve somente pensar em código T-SQL, Index é mais complicado do que isso. Criar um Index depende de estudo e análise das estruturas das tabelas para conseguir um resultado satisfatório. Caso você crie um Index em uma tabela que sofra muitas inserções de dados, o tempo para recalcular o Index pode ser mais demorado que se fosse executada uma consulta diretamente na tabela origem sem o Index.
Existem dois tips de Index, o Index Clustered e o Index Non-Clustered. O Index Clustered irá determinar a ordem física de armazenamento das linhas na tabela, diferente do Index Non-Clustered, que é um objeto dentro do banco de dados que aponta para uma linha dentro de uma tabela, mas não especifica como estas linhas devem estar armazenadas. Partindo do mesmo princípio da criação de Chaves Simples e Chaves Compostas em tabelas, os Index também podem ser simples ou composto. O Index simples é baseado em apenas uma coluna, enquanto o Index composto é baseado em duas ou mais colunas de uma tabela ou View.
A criação de um Index na View que criamos anteriormente será essencial para comprovar o que estou propondo no artigo. A melhora no desempenho.
CREATE UNIQUE CLUSTERED INDEX idx_ProdutoDescricao ON
vw_ProdutoDescricao(Codigo ASC) 
Após a criação, o Index vai ficar armazenado na sessão de Index da View de exemplo. Para visualizar os Index criados em cada View, expanda as opções da View criada anteriormente e em seguida expanda as opções relacionadas aos indexes. Este procedimento pode ser realizado tanto para Views quanto para tabelas.
Repare que o Index com o nome que criamos está presente nesta sessão.
Como funcionam Views Indexadas.
A possibilidade de criação de Index em Views, foi desenvolvida para a versão 2000 do SQL Server e melhorada para a versão 2005. Ao indexar uma View, os dados são armazenados em uma tabela virtual e são atualizados sempre que os dados de suas tabelas originais são alterados. Em vários casos, este recurso pode melhorar o desempenho, visto que os dados não precisarão ser “recalculados” sempre que forem consultados. As Views indexadas são recomendadas, quando os dados das tabelas que são utilizadas nas Views não sofrerem muitas alterações. No caso de existirem muitas alterações nos dados das tabelas, o tempo de processamento para montar o Index da View pode ser maior que o tempo para fazer a consulta sem Index às tabelas.
Executando a mesma consulta que foi realizada à View no exemplo anterior, e mantendo as estatísticas de IO ativas, é possível comparar a quantidade de páginas que foram utilizadas para atingir o mesmo retorno. Repare que o SQL Server interpreta a View como sendo uma tabela do banco de dados, e faz leitura em 6 páginas para retornar os dados cadastrados.
(295 row(s) affected)
Table "vw_ProdutoDescricao". Scan count 1, logical reads 6, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
 
A velocidade de retorno de uma consulta é proporcional à quantidade de páginas que o SQL Server 2005 necessita ler para conseguir o resultado. Quanto mais páginas forem lidas para mostrar o resultado de uma consulta, mais tempo vai levar para esta consulta ser completada.
Toda vez que o SQL Server 2005 realiza uma consulta, ele gera um plano de execução. Este plano de execução é armazenado em memória por um determinado tempo, e se for realizada esta mesma consulta enquanto o plano ainda existir, o SQL Server 2005 vai realizar a consulta de forma mais rápida. Para provar o que estou escrevendo, execute a instrução SELECT que originou a View (não é a execução da View, é a execução do SELECT que está dentro dela), esta instrução fará consulta à tabela vw_ProdutoDescricao, e vai consultar somente 6 páginas.
SELECT P.ProductID Codigo, P.Name Descricao, M.Name Produto
FROM Production.Product P INNER JOIN
      Production.ProductModel M
  ON P.ProductModelID = M.ProductModelID
No resultado da consulta, na sessão de Messages é apresentada a prova disso.
 
(295 row(s) affected)
Table "vw_ProdutoDescricao". Scan count 1, logical reads 6, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
                                 
Neste artigo fico por aqui, apresentando a melhoria de performance ao utilizar Views indexadas. Espero que este artigo auxilie os desenvolvedores que necessitam melhorar o desempenho de consultas demoradas. Os dados apresentados são poucos, mas mesmo assim a melhora foi superior a 50%. Existem casos em que a melhora chega a ser de 90% ou mais.

fonte: http://www.linhadecodigo.com/ArtigoImpressao.aspx?id=1308

Oracle - Funções

Funções de valores simples:

ABS(n)= Devolve o valor absoluto de (n).
CEIL(n)=Obtém o valor inteiro imediatamente superior ou igual a "n".
FLOOT(n) = Devolve o valor inteiro imediatamente inferior ou igual a "n".
MOD (m, n)= Devolve o resto resultante de dividir "m" entre "n".
NVL (valor, expressão)= Substitui um valor nulo por outro valor.
POWER (m, exponente)= Calcula a potência de um número.
ROUND (numero [, m])= Arredonda números com o número de dígitos de precisão indicados.
SIGN (valor)= Indica o signo do "valor".
SQRT(n)= Devolve a raiz quadrada de "n".
TRUNC (numero, [m])= Trunca números para que tenham uma certa quantidade de dígitos de precisão.
VAIRANCE (valor)= Devolve a média de um conjunto de valores.

Funções de grupos de valores:

AVG(n)= Calcula o valor médio de "n" ignorando os valores nulos.
COUNT (* | Expressão)= Conta o número de vezes que a expressão avalia algum dado com valor não nulo. A opção "*" conta todas as filas selecionadas.
MAX (expressão)= Calcula o máximo.
MIN (expressão)= Calcula o mínimo.
SUM (expressão)= Obtém a soma dos valores da expressão.
GREATEST (valor1, valor2…)= Obtém o maior valor da lista.
LEAST (valor1, valor2…)= Obtém o menor valor da lista.

Funções que devolvem valores de caracteres:

CHR(n) = Devolve o caractere cujo valor em binário é equivalente a "n".
CONCAT (cad1, cad2)= Devolve "cad1" concatenada com "cad2".
LOWER (cad)= Devolve a cadeia "cad" em minúsculas.
UPPER (cad)= Devolve a cadeia "cad" em maiúsculas.
INITCAP (cad)= Converte a cadeia "cad" a tipo título.
LPAD (cad1, n[,cad2])= Adiciona caracteres à esquerda da cadeia até que tenha uma certa longitude.
RPAD (cad1, n[,cad2])= Adiciona caracteres à direita até que tenha uma certa longitude.
LTRIM (cad [,set])= Suprime um conjunto de caracteres à esquerda da cadeia.
RTRIM (cad [,set])= Suprime um conjunto de caracteres à direita da cadeia.
REPLACE (cad, cadeia_busca [, cadeia_substitucao])= Substitui um caractere ou caracteres de uma cadeia com 0 ou mais caracteres.
SUBSTR (cad, m [,n])= Obtém parte de uma cadeia.
TRANSLATE (cad1, cad2, cad3)= Converte caracteres de uma cadeia em caracteres diferentes, segundo um plano de substituição marcado pelo usuário.

Funções que devolvem valores numéricos:

ASCII(cad)= Devolve o valor ASCII da primeira letra da cadeia "cad".
INSTR (cad1, cad2 [, comeco [,m]])= Permite uma busca de um conjunto de caracteres em uma cadeia, mas não suprime nenhum caractere depois.
LENGTH (cad)= Devolve o número de caracteres de cad.

Funções para o manejo de datas:

SYSDATE=  Devolve a data do sistema.
ADD_MONTHS (data, n)= Devolve a data "data" incrementada em "n" meses.
LASTDAY (data)= Devolve a data do último dia do mês que contém "data".
MONTHS_BETWEEN (data1, data2)= Devolve a diferença em meses entre as datas "data1" e "data2".
NEXT_DAY (data, cad)= Devolve a data do primeiro dia da semana indicado por "cad" depois da data indicada por "data".

Funções de conversão:

TO_CHAR= Transforma um tipo DATE ou NUMBER em uma cadeia de caracteres.
TO_DATE= Transforma um tipo NUMBER ou CHAR em DATE.
TO_NUMBER= Transforma uma cadeia de caracteres em NUMBER.

fonte: http://www.criarweb.com/artigos/756.php

SQL Server - Trabalhando com data


First Day of Month


select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
 

First Day of Last Month


select DATEADD(mm, DATEDIFF(mm,0,DATEADD(mm,-1,getdate())), 0)
 

Monday of the Current Week


select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
 

Sudday of the Current Week


set DATEFIRST 1

select DATEADD(dd, 1 - DATEPART(dw, getdate()), getdate())
 

First Day of the Year


select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
 

First Day of the Quarter


select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
 

Midnight for the Current Day


select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
 

Last Day of Prior Month


select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()  ), 0))
 

Last Day of Prior Year


select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()  ), 0))
 

Last Day of Current Month


select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()  )+1, 0))
 

Last Day of Current Year


select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()  )+1, 0))
 

First Monday of the Month


select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate()) ), 0) 
 
 
DATEPART
Função usada para obter uma determinada parte de uma data como por exemplo o ano, mês, dia, hora, minuto, segundo, etc. Para utilizá-la pede-se dois parâmetros sendo o primeiro a parte da data e o segundo a data propriamente dita, repare que no exemplo abaixo usei no segundo parâmetro da função datepart a função getdate() usada para retornar a data atual do servidor.
DatePart
DATEDIFF
Função usada para obter a diferença de anos, meses, dias, horas, minutos, segundos, dentre outros entre duas datas. Para utilizá-la pede-se três parâmetros sendo o primeiro a parte da data o segundo a data inicial e o terceiro a data final, repare que no exemplo abaixo usei no segundo parâmetro da função datepart a função getdate() usada para retornar a data atual do servidor.
DateDiff
DATEADD
Função usada para adicionar anos, meses, dias, horas, minutos, segundos, dentre outros a uma data. Para utilizá-la pede-se três parâmetros sendo o primeiro a parte da data o segundo o valor ao qual será adicionado e o terceiro a data propriamente dita, repare que no exemplo abaixo usei no segundo parâmetro da função datepart a função getdate() usada para retornar a data atual do servidor.
DateAdd
CONVERT
No contexto do artigo esta função é usada para converter um campo ou variável do tipo data para uma string baseado em uma norma ou padrão do SQL Server. Para utilizá-la pedem-se dois parâmetros sendo o primeiro o tipo ao qual o dado será convertido que no nosso caso é um varchar, o segundo parâmetro é a data na qual será convertida e o terceiro parâmetro é a norma ou padrão do SQL Server listado abaixo, repare que no exemplo abaixo usei no segundo parâmetro da função datepart a função getdate() usada para retornar a data atual do servidor.
Abaixo listei todas as normas/padrões do SQL Server a questão agora é usar a que se encaixa melhor para cada tipo de situação.
Convert
fontes: 
 
http://shanecooper.net/cooldatefunctions.htm 
 
http://www.devmedia.com.br/articles/viewcomp.asp?comp=14015 

SQL Server - Data por Extenso – DateName

Script para retornar uma data por extenso.
 
SET LANGUAGE Português
 
SELECT DATENAME(weekday, GetDate()) + ‘, ‘   +
       DATENAME(day, GetDate())     + ‘ de ‘ +
       DATENAME(month, GetDate())   + ‘ de ‘ +
       DATENAME(year, GetDate())
 
 
Lembrar de utilizar o SET LANGUAGE para retornar a data no idioma desejado, para verificar o idioma padrão de sua sessão execute “DBCC UserOptions”
 
Para visualizar qual é o nome dos idiomas existentes no SQL verifique na coluna name da tabela sysLanguages.
select * from master.dbo.syslanguages
 
Obs.: Evite usar SET LANGUAGE dentro de procedures pois isso irá causar RECOMPILE.

fonte: http://blogfabiano.com/2008/04/24/data-por-extenso-datename/

Como resolver o erro ORA-01422

O erro oracle, em código PL-SQL, ORA-01422: exact fetch returns more than request number of rows, é retornado quando em uma única váriavel é tentado retornar mais de um valor, para acertar isso há várias formas dependendo da sua necessidade, vamos a alguns casos: 1 – Query não deve retornar mais de um registro
Vamos a uma situação hipotética, temos uma tabela de pedidos e uma tabela de clientes e queremos pegar um número de pedido dele, para isso usamos a seguinte query:
select id_pedido
into vID_Pedido
from pedido p, cliente c
where c.nome = 'MEISON'
and c.id_cliente = p.id_cliente;

Se o cliente tiver feito somente um pedido, essa query retornará só uma linha, mas se ele já for um cliente que está pedindo pela segunda ou mais vez será retornado mais de uma linha o que retornará o erro em questão, pois tentará jogar para a variavel vID_Pedido mais de um valor, o que não é possível. Para corrigir se a regra permitir é só pegar uma linha, por exemplo o ultimo pedido, ficando dessa forma:
select id_pedido
into vID_Pedido
from pedido p, cliente c
where c.nome = 'MEISON'
and c.id_cliente = p.id_cliente
and rownum=1
order by id_pedido desc;

O rownum=1 restringe a só uma linha, mas lembrando que sem o order by, ele pega a primeira linha que trouxer do banco. O order by irá garantir que seja a ultima linha criada.
2 – Query pode retornar mais de um registro
Tendo como base o primeiro exemplo, porém precisando pegar todos os pedidos desse cliente, o que deve ser feito é tratar cada um deles individualmente, eu utilizaria o loop, ficando assim:
for vAux in (select id_pedido from pedido where id_cliente = 1)
loop
--Procedimento para tratar vAux.id_pedido
end loop;

Dessa forma não é dado o erro ORA-01422 e trata-se da maneira certa cada um dos pedidos.
3 – Query não deve retornar mais de uma linha, erro de cadastro
Isso é causado quando o sistema deveria inserir somente uma linha e por algum erro, inseriu mais de uma, provocando um erro conceitual. É claro que nesse caso deve-se corrigir a origem que é a inserção erronea de mais de uma linha, mas pode-se tratar também no destino, vamos utilizar a mesma query, ela deveria tratar os erros e ficaria dessa forma:
begin
select id_pedido
into vID_pedido
from pedido
where id_cliente = 1;
exception
when too_many_rows then
raise_application_error(-20000,'Erro na tabela pedido, mais linhas para o cliente do que permitido.');
end;

Dessa forma abordamos alguns cenários que podemos sanar esse problema. Caso você tenha algum outro problema, comente poderemos fazer outro artigo para solucionar seu problema.

fonte: http://www.meison.com.br/2010/02/19/como-resolver-o-erro-ora-01422/

COMANDOS DBCC DO SQL SERVER 2000

O SQL SERVER 2000 possui um conjunto de comandos DBCC
(DATABASE CONSOLE COMMAND), usados na administração do
banco de dados.

De acordo com sua funcionalidades, são agrupados em 4 categorias:
MANUTENÇÃO - comandos que realizam tarefas de manutenção em:
  • databases
  • índices
  • grupos de arquivos
 DBCC DBREINDEX
 DBCC DBREPAIR --> MANTIDO POR COMPATIBILIDADE (DEVE-SE DROPAR E RECRIAR O DATABASE CORROMPIDO)
 DBCC INDEXDEFRAG
 DBCC SHRINKDATABASE
 DBCC SHRINKFILE
 DBCC UPDATEUSAGE

STATUS - comandos que checam o status de objetos do sistema:
 DBCC INPUTBUFFER
 DBCC OPENTRAN
 DBCC OUTPUTBUFFER
 DBCC PROCCACHE
 DBCC SHOWCONTIG
 DBCC SHOW_STATISTICS
 DBCC SQLPERF
 DBCC TRACESTATUS
 DBCC USEROPTIONS
VALIDAÇÃO - comandos que validam a estrutura e/ou alocação de:
  • databases
  • tabelas
  • índices
  • catálogos
  • grupos de arquivos
  • tabelas de sistema
  • páginas do database
 DBCC CHECKALLOC
 DBCC CHECKCATALOG
 DBCC CHECKCONSTRAINTS
 DBCC CHECKDB
 DBCC CHECKFILEGROUP
 DBCC CHECKIDENT
 DBCC CHECKTABLE
 DBCC NEWALLOC
DIVERSOS - comandos que realizam tarefas não enquadrados nas categorias acima:
 DBCC dllname (FREE)
 DBCC HELP
 DBCC PINTABLE
 DBCC ROWLOCK
 DBCC TRACEOFF
 DBCC TRACEON
 DBCC UNPINTABLE
******************************************************************
ABAIXO, APRESENTAREI OS COMANDOS, SEGUIDOS DE EXEMPLOS DE USO.

LEMBRO QUE NÃO ESTOU LHES MOSTRANDO A SINTAXE COMPLETA DO COMANDO, MAS AS SUAS FORMAS MAIS USADAS.
PARA MAIS DETALHES, CONSULTE OS BOOKS ON LINE DO SQL SERVER OU O SITE HTTP://MSDN.MICROSOFT.COM/SQL
******************************************************************

Listagem 01 - Exemplos dos comandos
USE PUBS
--TODOS OS EXEMPLOS ABAIXO SERÃO EXECUTADOS NESSE DATABASE


/*
 DBCC DBREINDEX(NOME DA TABELA) WITH NO_INFOMSGS

 RECRIA TODOS OS ÍNDICES DA TABELA PASSADA COMO PARÂMETRO

 ONDE:
  NOME DA TABELA:
   É O NOME DA TABELA A REINDEXAR
  WITH NO_INFOMSGS:
   INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
*/

DBCC DBREINDEX(AUTHORS)
--DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC DBREINDEX(AUTHORS) WITH NO_INFOMSGS
--The command(s) completed successfully.
EXEC SP_MSFOREACHTABLE
 @COMMAND1 = PRINT REINDEXANDO A TABELA ?,
 @COMMAND2 = DBCC DBREINDEX(?) WITH NO_INFOMSGS
/*
REINDEXANDO A TABELA [dbo].[titleauthor]
REINDEXANDO A TABELA [dbo].[stores]
REINDEXANDO A TABELA [dbo].[sales]
REINDEXANDO A TABELA [dbo].[roysched]
REINDEXANDO A TABELA [dbo].[discounts]
REINDEXANDO A TABELA [dbo].[jobs]
REINDEXANDO A TABELA [dbo].[pub_info]
REINDEXANDO A TABELA [dbo].[employee]
REINDEXANDO A TABELA [dbo].[authors]
REINDEXANDO A TABELA [dbo].[publishers]
REINDEXANDO A TABELA [dbo].[titles]
*/



/*
 DBCC INDEXDEFRAG(DATABASE, TABELA, ÍNDICE) WITH NO_INFOMSGS

 REORGANIZA O ÍNDICE DA TABELA PASSADA COMO PARÂMETRO
 ONDE:
  DATABASE:
   É O NOME DO DATABASE QUE CONTÉM A TABELA
  TABELA:
   É O NOME DA TABELA QUE CONTÉM O ÍNDICE
  ÍNDICE:
   É O NÚMERO QUE INDICA A ORDEM DO ÍNDICE
  WITH NO_INFOMSGS:
   INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
*/

DBCC INDEXDEFRAG(PUBS, EMPLOYEE, 1)
/*
Pages Scanned Pages Moved Pages Removed
------------- ----------- -------------
0             0           0

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/

DBCC INDEXDEFRAG(PUBS, EMPLOYEE, 1) WITH NO_INFOMSGS
--The command(s) completed successfully.


/*
 DBCC SHRINKDATABASE(DATABASE, ESPAÇO_LIVRE) WITH NO_INFOMSGS

 DESALOCA ESPAÇOS NÃO OCUPADOS PELO DATABASE
 ONDE:
  DATABASE:
   É O NOME DO DATABASE
  ESPAÇO_LIVRE:
   É O ESPAÇO LIVRE EM % QUE DEVERÁ ESTAR ALOCADO
   NO FIM DO PROCESSO
*/

DBCC SHRINKDATABASE(PUBS, 0)
/*
DbId   FileId CurrentSize MinimumSize UsedPages   EstimatedPages
------ ------ ----------- ----------- ----------- --------------
5      1      160         80          152         152
5      2      63          63          56          56

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/

DBCC SHRINKDATABASE(PUBS, 0) WITH NO_INFOMSGS
--The command(s) completed successfully.

EXEC SP_MSFOREACHDB
 @COMMAND1 = PRINT FAZENDO SHRINK DO DATABASE ?,
 @COMMAND2 = DBCC SHRINKDATABASE(?, 0) WITH NO_INFOMSGS
/*
FAZENDO SHRINK DO DATABASE CAP_03
FAZENDO SHRINK DO DATABASE CAP_04
FAZENDO SHRINK DO DATABASE CAP_05
FAZENDO SHRINK DO DATABASE CAP_06
FAZENDO SHRINK DO DATABASE CAP_07
FAZENDO SHRINK DO DATABASE CAP_08_09
FAZENDO SHRINK DO DATABASE correio
FAZENDO SHRINK DO DATABASE DB_CDS
FAZENDO SHRINK DO DATABASE DVD
FAZENDO SHRINK DO DATABASE FILMES
FAZENDO SHRINK DO DATABASE IMPACTA
FAZENDO SHRINK DO DATABASE master
FAZENDO SHRINK DO DATABASE model
FAZENDO SHRINK DO DATABASE msdb
FAZENDO SHRINK DO DATABASE Northwind
FAZENDO SHRINK DO DATABASE pubs
FAZENDO SHRINK DO DATABASE tempdb
*/


/*
 DBCC SHRINKFILE(NOME_LÓGICO, ESPAÇO_LIVRE) WITH NO_INFOMSGS

 DESALOCA ESPAÇOS NÃO OCUPADOS POR UM ARQUIVO DE DADOS OU LOG
 ONDE:
  NOME_LÓGICO:
   É O NOME LÓGICO DO ARQUIVO
  ESPAÇO_LIVRE:
   É O ESPAÇO LIVRE EM % QUE DEVERÁ ESTAR ALOCADO
   NO FIM DO PROCESSO
*/

EXEC SP_HELPDB PUBS
/*
MÚLTIPLAS LINHAS COM INFORMAÇÕES SOBRE O DATABASE PUBS
*/

DBCC SHRINKFILE(PUBS, 0)
/*
DbId   FileId CurrentSize MinimumSize UsedPages   EstimatedPages
------ ------ ----------- ----------- ----------- --------------
5      1      160         80          152         152

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/


/*
 DBCC UPDATEUSAGE(DATABASE, TABELA, ÍNDICE) WITH COUNT_ROWS, NO_INFOMSGS

 APRESENTA E CORRIGE OS VALORES ARMAZENADOS INCORRETAMENTE NA TABELA
 SYSINDEXES, QUE FAZEM COM QUE A SAÍDA DA PROCEDURE SP_SPACEUSED SEJA FALSA

 ONDE:
  DATABASE:
   É O NOME DO DATABASE QUE CONTÉM A TABELA - SE FOR
   DIGITADO O VALOR 0 (ZERO), O DATABASE USADO SERÁ O
   QUE ESTÁ EM USO
  TABELA:
   É O NOME DA TABELA QUE CONTÉM O ÍNDICE - OPCIONAL
  ÍNDICE:
   É O NÚMERO QUE INDICA A ORDEM DO ÍNDICE - OPCIONAL
  WITH NO_INFOMSGS:
   INDICA QUE NÃO DEVEM SER APRESENTADAS AS MENSAGENS
  WITH COUNT_ROWS:
   ATUALIZA A COLUNA "ROWS" DA TABELA SYSINDEXES COM A
   QUANTIDADE DE LINHAS DA TABELA QUE ESTÁ SENDO ANALISADA,
   PARA OS ÍNDICES DE ID 0 E 1
*/

EXEC SP_SPACEUSED EMPLOYEE
/*
name       rows  reserved  data   index_size  unused 
---------- ----- --------- ------ ----------- -------
employee   43    152 KB    64 KB  32 KB       56 KB
*/

DBCC UPDATEUSAGE (PUBS, EMPLOYEE) WITH COUNT_ROWS
/*
DBCC UPDATEUSAGE: sysindexes row updated for table employee (index ID 1):
        DATA pages: Changed from (8) to (1) pages.
        USED pages: Changed from (12) to (5) pages.
        RSVD pages: Changed from (19) to (5) pages.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/

EXEC SP_SPACEUSED EMPLOYEE
/*
name      rows  reserved  data  index_size  unused 
--------- ----- --------- ----- ----------- -------
employee  43    40 KB     8 KB  32 KB       0 KB
*/


/*
 DBCC INPUTBUFFER(PROCESSO)

 RETORNA O ÚLTIMO COMANDO ENVIADO PELO CLIENTE AO SQL SERVER
 ONDE:
  PROCESSO:
   ID DO PROCESSO
*/

SELECT @@SPID
--51

DBCC INPUTBUFFER(51)
/*
EventType      Parameters EventInfo             
-------------- ---------- ----------------------
Language Event 0          DBCC INPUTBUFFER(51)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/

--AGORA, ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE O COMANDO ABAIXO:
SELECT @@SPID
--52

SELECT * FROM SYSOBJECTS
--DIVERSAS LINHAS DE TABELA

--VOLTE A ESSA JANELA, SEM FECHAR A OUTRA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:
DBCC INPUTBUFFER(52)
/*
EventType      Parameters EventInfo                 
-------------- ---------- --------------------------
Language Event 0          SELECT * FROM SYSOBJECTS

DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/


/*
 DBCC OPENTRAN(DATABASE) WITH TABLERESULTS

 RETORNA DETALHES DAS TRANSAÇÕES ABERTAS
 ONDE:
  DATABASE:
   É O NOME DO DATABASE - SE FOR DIGITADO O VALOR 0
   (ZERO), O DATABASE USADO SERÁ O QUE ESTÁ EM USO
  WITH TABLERESULTS:
   RETORNA EM FORMATO DE TABELA
*/

--ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE OS COMANDOS ABAIXO:
BEGIN TRAN
SELECT *
FROM TITLES A,
 TITLES B,
 TITLES C,
 TITLES D,
 TITLES E,
 TITLES F
--ESSE SELECT RETORNA 34,012,224 REGISTROS
--(A TABELA TITLES TEM 18 REGISTROS)

--AGORA, ANTES DE O COMANDO TERMINAR, (PAREI A EXECUÇÃO AOS 10 MINUTOS E AINDA TINHA GERADO APENAS 12,500,000 REGISTROS)VOLTE PARA ESSA JANELA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:

DBCC OPENTRAN(0)
/*
Transaction information for database pubs.

Oldest active transaction:
    SPID (server process ID) : 55
    UID (user ID) : 1
    Name          : user_transaction
    LSN           : (4:365:1)
    Start time    : Jul 30 2006  4:35:14:633PM
*/

DBCC OPENTRAN(0) WITH TABLERESULTS
/*
pubs              OPENTRAN                   
----------------- ---------------------------
OLDACT_SPID       55
OLDACT_UID        1
OLDACT_NAME       user_transaction
OLDACT_LSN        (4:365:1)
OLDACT_STARTTIME  Jul 30 2006  4:35:14:633PM
*/

--FINALMENTE, CANCELE A EXECUÇÃO DO SELECT NA OUTRA JANELA

/*
 DBCC OUTPUTBUFFER(PROCESSO)

 RETORNA EM HEXA E ASCII A RESPOSTA DO SERVIDOR À SOLICITAÇÃO
 DO CLIENTE

 ONDE:
  PROCESSO:
   ID DO PROCESSO
*/

--ABRA UMA NOVA JANELA (CTRL+N) E EXECUTE OS COMANDOS ABAIXO:
SELECT @@SPID
--53

SELECT GETDATE()
--2006-07-30 17:01:36.800

--AGORA, VOLTE PARA ESSA JANELA (CTRL+TAB) E EXECUTE O COMANDO ABAIXO:
DBCC OUTPUTBUFFER(53)
/*
Output Buffer                                                                
---------------------------------------------------------
00000000   04 01 00 ... 00 00 00 00 a7   ...+.5.........§
00000010   07 00 09 ... 41 47 4e 41 4c   .. .Ð.4.Ñ..AGNAL
00000020   44 4f fd ... 00 fd 01 00 ba   DOý..Á......ý..º

... saída dos endereços -> 00000020 A 00000fc0
00000fd0   00 70 17 ... 1a 8a 01 00 00   .p..@...€s..Š...
00000fe0   ff ff ff ... 00 00 00 00 00   ÿÿÿÿ¹...........
00000ff0   00 00 00 ... 00 00 00 01 00   ................
*/




fonte: http://www.devmedia.com.br/articles/viewcomp.asp?comp=2481
Related Posts Plugin for WordPress, Blogger...