MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Dica da Semana

Trabalhando com Variáveis Globais

por Nilton Pinheiro setembro 20, 2004 Nenhum comentário

@@CURSOR_ROWS


Esta variável é útil para obtermos o número de linhas que um cursor do SQL Server contém. Ela sempre faz referência ao número de linhas do último cursor gerado.


Exemplo:


— Declara o cursor. Observem que estou utilizando TOP 10
DECLARE CUR_TESTE CURSOR FOR
SELECT TOP 10 TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES


— Abre o cursor
OPEN CUR_TESTE


— Pula para a próxima linha , iniciando a leitura
FETCH NEXT FROM CUR_TESTE


— Mostra quantas linhas o cursor possui. No nosso exemplo , 10
SELECT @@CURSOR_ROWS


— Fecha o cursor
CLOSE CUR_TESTE


— Desaloca a memória do cursor
DEALLOCATE CUR_TESTE


@@ERROR


Uma da variáveis globais mais importante, @@ERROR é utilizada para verificar se houve algum erro após a execução de uma instrução SQL. Se não ocorrer nenhum erro, @@ERROR é definida como 0. Caso contrário, o código do erro é guardado em @@ERROR. A cada nova instrução SQL enviada ao servidor, o valor de @@ERROR é modificado.


Exemplo:


— Inicia a transação
BEGIN TRANSACTION


— Faz a atualização dos dados efetuando uma divisão
UPDATE TABELA SET CAMPO3 = CAMPO1/CAMPO2


— Se ocorrer um erro , @@ERROR será diferente de 0
IF @@ERROR = 0
 BEGIN


       — Confirma a atualização dos dados
            COMMIT TRANSACTION


 END
ELSE
 BEGIN


            — Cancela qualquer dado que tenha sido efetuado pelo UPDATE
            ROLLBACK TRANSACTION
            RETURN
END


@@FETCH_STATUS


Retorna o status gerado pela última instrução FETCH sobre um cursor. @@FETCH_STATUS retorna 0 se a última instrução FETCH aplicada por um cursor for feita com sucesso.


Um uso muito comum de @@FETCH_STATUS é quando percorremos as linhas do cursor uma a uma em um loop. Um valor @@FETCH_STATUS negativo vai indicar que já ultrapassamos a última linha do cursor.


Exemplo:


— Declara o cursor
DECLARE CUR_TESTE CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
DECLARE @VAR VARCHAR(50)


— Abre o cursor
OPEN CUR_TESTE


— Pula para a próxima linha, iniciando a leitura
FETCH NEXT FROM CUR_TESTE INTO @VAR


— Faça enquanto o FETCH foi feito com sucesso
WHILE @@FETCH_STATUS = 0
BEGIN
            SELECT ‘NOME DA TABELA: ‘ +  @VAR


— Pula para a próxima linha
FETCH NEXT FROM CUR_TESTE INTO @VAR
END


— Fecha o cursor
CLOSE CUR_TESTE


— Desaloca a memória do cursor
DEALLOCATE CUR_TESTE


@@IDENTITY


Retorna o último valor inserido automaticamente em um coluna com a propriedade IDENTITY. Embora também podemos obter o último valor inserido automaticamente em uma coluna que possui a propriedade IDENTITY, através das funções IDENT_CURRENT() e SCOPE_IDENTITY().


@@MAX_CONNECTIONS


Esta variável contém o número máximo de usuários conectados simultaneamente permitidos pelo SQL Server. O valor padrão para esta configuração é 32.767.


O valor retornado por @@MAX_CONNECTIONS não necessariamente diz que o servidor vai permitir todos estes usuários pendurados ao mesmo tempo. O valor real de usuários simultâneos conectados vai depender dos recursos disponíveis e de outros fatores.


Para alterar o valor de @@MAX_CONNECTIONS, utilize a system Stored Procedure sp_configure.


@@NESTLEVEL


Retorna o nível de encadeamento da pilha de Stored Procedures (call stack). Ou seja, se a aplicação chama uma Stored Procedure PROC_A, @@NESTLEVEL vai estar inicialmente com 1. Se PROC_A chama uma outra Stored Procedure PROC_B, o valor de @@NESTLEVEL dentro de PROC_B vai estar como 2. Quando PROC_B retornar, o valor de @@NESTLEVEL vai ser decrementado.


Este variável é muito útil para Stored Procedures recursivas, podendo ajudar a evitar que a execução caia em um loop infinito. @@NESTLEVEL também é aplicável a User Defined Functions.


@@ROWCOUNT


@@ROWCOUNT serve para mostrar quantas linhas a última instrução SQL afetou.


Cuidado: a cada nova instrução SQL enviada ao servidor um novo valor para @@ROWCOUNT é gerado. O valor de @@ROWCOUNT nunca vai ser superior ao valor configurado pela instrução SET ROWCOUNT.


Exemplo:


— Faz uma atualização na tabela
UPDATE pubs..authors SET state=’CA’
where city = ‘Oakland’


— Retorna quantas linhas foram alteradas pelo UPDATE acima. Neste caso 5
SELECT @@ROWCOUNT


@@SERVERNAME


Retorna o nome do servidor que o usuário está conectado. Retorna inclusive o nome da instância do SQL Server, utilizando o seguinte formato:


<nome_servidor><nome_instância>


@@SPID


Retorna qual é o ID do processo de um dado usuário. Todo usuário que se conecta ao banco possui um ID de processo que é utilizado para identificar um usuário conectado no banco de dados.


@@VERSION


Retorna informações sobre a versão do SQL Server que está rodando. O valor é modificado sempre que um Service Packs ou patch é aplicado no servidor.


Exemplo:


SELECT @@VERSION


Resultado:
Microsoft SQL Server  2000 – 8.00.818 (Intel X86)
 May 31 2003 16:08:15
 Copyright (c) 1988-2003 Microsoft Corporation
 Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)


Indicando um SQL Server 2000 com SP3a e build 818


 

Avaliação:
Compartilhe:
  • Anterior Criando Funções no SQL Server 200021 anos atrás
  • Próximo Entendendo o Log de Transação21 anos atrás

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2026 MCDBA Brasil.