O que é uma consulta que me mostrará a definição completa, incluindo índices e chaves para uma tabela do SQL Server? Eu quero uma consulta pura - e sei que o SQL Studio pode fornecer isso para mim, mas geralmente estou em computadores "selvagens" que têm apenas os aplicativos mais básicos e não tenho direitos para instalar o Studio. Mas SQLCMD é sempre uma opção.
ATUALIZAÇÃO: Eu tentei sp_help, mas só produz um registro que mostra Nome, Proprietário, Tipo e Created_Datetime. Há algo mais que estou perdendo com sp_help?
Aqui está o que chamo de:
sp_help aeroportos
Observe que eu realmente quero o DDL que define a tabela.
sql-server
tsql
Daniel Williams
fonte
fonte
sp_help
é que ele retorna vários conjuntos de resultados. Você está descrevendo as colunas retornadas pelo primeiro conjunto de resultados.Respostas:
Não existe uma maneira fácil de devolver o DDL. No entanto, você pode obter a maioria dos detalhes nas Visualizações do esquema de informações e nas Visualizações do sistema .
fonte
sp_columns
como mencionei na minha resposta. Se você quiser informações sobre a execução de FKssp_fkeys
. Se você quiser saber os índices, executesp_statistics
.Você já tentou sp_help?
fonte
Visite http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt .
Você encontrará o código de
sp_getddl
procedimento do SQL Server. O objetivo do procedimento é criar um script de qualquer tabela, tabela temporária ou objeto.USO:
ou
ou
ou
Eu testei no SQL Server 2012 e ele faz um excelente trabalho.
Não sou o autor do procedimento. Qualquer melhoria que você fizer envie para Lowell Izaguirre ([email protected]).
fonte
A maneira mais fácil e rápida que posso imaginar seria usar sp_help
sp_help 'TableName'
fonte
Use este pequeno aplicativo de linha de comando do Windows que obtém o
CREATE TABLE
script (com restrições) para qualquer tabela. Eu escrevi em C #. Basta compilá-lo e carregá-lo em um cartão de memória. Talvez alguém possa transferi-lo para o Powershell.fonte
fonte
Isso retornará colunas, tipos de dados e índices definidos na tabela:
Isso retornará os gatilhos definidos na tabela:
fonte
Desde o SQL 2012, você pode executar a seguinte instrução:
Se você inserir uma instrução select complexa (junções, subseleções, etc), ela fornecerá a definição do conjunto de resultados. Isso é muito útil se você precisar criar uma nova tabela (ou tabela temporária) e não quiser verificar cada definição de campo manualmente.
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql
fonte
Basta digitar o nome da tabela e selecioná-lo e pressionar ATL + F1
Digamos que o nome da sua tabela
Customer
abra uma nova janela de consulta , digite e selecione o nome da tabela e pressione ALT + F1Ele irá mostrar a definição completa de mesa.
fonte
Uma variação da resposta de @Anthony Faull para quem usa o LINQPad:
Você precisará fazer referência a 2 assemblies:
E adicione referências de namespace conforme mencionado no snippet de Anthony.
fonte
Eu sei que é uma pergunta antiga, mas exatamente o que eu estava procurando. Como quero criar scripts em lote para algumas tabelas, reescrevi o código C # de Anthony Faull para PowerShell.
Este usa Segurança Integrada:
E aqui com nome de usuário e senha:
fonte
Experimente o procedimento armazenado sp_help.
sp_help <>
fonte
Como complemento à resposta de Barry. O sp_help também pode ser usado sozinho para iterar todos os objetos em um banco de dados específico. Você também tem sp_helptext para seu arsenal, que cria scripts de elementos programáticos, como procedimentos armazenados.
fonte
Outra maneira é executar o procedimento sp_columns .
fonte
fonte
"Observe que eu realmente quero o DDL que define a tabela."
use pg_dump:
Ele fornece a definição de tabela (
-s
é apenas o esquema, sem dados) de uma determinada tabela (-t
tablename) no banco de dados"dbname"
em SQL simples. Além disso, você obterá informações de sequência, chave primária e restrição. A saída que você pode - talvez após verificar e editar de acordo com suas necessidades - ser alimentada novamente no banco de dados Postgres (o mesmo ou outro):Isso é para UNIX / Linux, mas tenho certeza de que também existe um pg_dump para Windows.
fonte