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

Obtendo informações sobre a estrutura das tabelas

por Nilton Pinheiro agosto 30, 2004 Nenhum comentário

Usando como exemplo o banco PUBS e montando um simples SELECT nesta views, poderemos obter informações sobre a tabela authors conforme abaixo:


SELECT left(table_name,30)as tabela,left(column_name,25) as campo, is_nullable,left(data_type,10) as tipo,character_maximum_length as tamanho,
numeric_precision as precisão,numeric_scale as escala
FROM information_schema.columns
WHERE table_name=’authors’


RESULTADO:
tabela     campo    is_nullable tipo       tamanho precisão  escala
———- ——– ———– ———- ——- ——— ——–
authors    au_id     No          varchar    11     NULL      NULL
authors    au_lname  No          varchar    40     NULL      NULL
authors    au_fname  No          varchar    20     NULL      NULL
authors    phone     No          char       12     NULL      NULL
authors    address   YES         varchar    40     NULL      NULL
authors    city      YES         varchar    20     NULL      NULL
authors    state     YES         char       2      NULL      NULL
authors    zip       YES         char       5      NULL      NULL
authors    contract  No          bit        NULL   1         0



Ok, agora suponhamos que nossa necessidade é obter estas mesmas informações para todas as tabelas do banco Pubs, ou melhor, suponhamos que precisamos destas informações mas nunca sabemos para qual tabela ?


Eu lhe digo que se transformarmos este SELECT em uma procedure, poderemos facilmente atingir este objetivo. Veja a procedure abaixo:


USE Pubs
GO
CREATE PROC sp_getestrutura @tabela varchar (30)=null
AS
IF @tabela is null
   — Executa para todas as tabelas do banco
   SELECT left(table_name,30)as tabela,left(column_name,25) as campo,
   is_nullable,left(data_type,10) as tipo,character_maximum_length as tamanho,
   numeric_precision as precisão,numeric_scale as escala
   FROM information_schema.columns
   WHERE table_name NOT LIKE ‘sys%’ AND table_name NOT LIKE ‘dt_%’


else
 — Executa apenas para a tabela informada
   SELECT left(table_name,30)as tabela,left(column_name,25) as campo,
   is_nullable,left(data_type,10) as tipo,character_maximum_length as tamanho,
   numeric_precision as precisão,numeric_scale as escala
   FROM information_schema.columns
   WHERE
table_name=@tabela
GO


Desta forma, se passamos o nome da tabela, serão obtidas informações apenas para a dada tabela. Se não passamos o nome, será obtido informações para todas as tabelas da base.


Exemplo: sp_getestrutura ou sp_getestrutura ‘authors’


Agora suponhamos que queremos ir ainda mais longe, como por exemplo, executar a procedure para qualquer database.
Da forma como foi criada ela funcionará apenas para a base Pubs, para executá-la na base NorthWind teríamos que criá-la também na base NorthWind e assim por diante.


Porém, se criarmos a procedure no database MASTER e depois transformá-la em um procedure de sistema, poderemos então executá-la a partir de qualquer base.


Para isto, recrie a procedure no master e execute o comando abaixo para convertê-la em uma procedure de sistema.


— Transforma a proc em uma proc de sistema
exec sp_MS_marksystemobject sp_getestrutura
go


Agora podemos executá-la a partir de qualquer base, simplesmente informando o nome da base antes da procedure como nos exemplos a seguir.


Exemplos:


pubs.dbo.sp_getestrutura ‘authors’ — Apenas para a tabela authors
pubs.dbo.sp_getestrutura — Para todas as tabelas
NorthWind..sp_getestrutura ‘customers’
NorthWind..sp_getestrutura


 

Avaliação:
Compartilhe:
  • Anterior Configurando o XP SP2 para trabalhar com o SQL Server18 anos atrás
  • Próximo Solucionando problemas do XP SP2 com o SQL Server18 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
2022 MCDBA Brasil.