Como criar uma nova tabela com as mesmas restrições e índices?

8

Estou criando uma nova tabela com restrições de chave primária e um índice não clusterizado nessa tabela.

Eu sei, eu gostaria de criar outra tabela com a mesma estrutura e valores, bem como chaves e índices também.

create table Dummy (id integer ,name varchar(20),salary integer
Constraint PK_Con_id primary key(id))

insert into Dummy values(11,'AAA',1000);
insert into Dummy values(12,'BBB',2000);
insert into Dummy values(13,'CCC',3000);
insert into Dummy values(14,'DDD',4000);

select * from Dummy;

create nonclustered index IX_Name 
on Dummy(Name)

Agora, estou criando uma Dmytabela, mas as Chaves e Restrições não refletem na Dmytabela no SQL Server 2008 R2.

SELECT * 
INTO Dmy 
FROM Dummy
Vinoth _S
fonte

Respostas:

14

SELECT INTO não fará isso por você, porque, embora mantenha os nomes das colunas e os tipos de dados, ele não mantém muitos dos outros aspectos da tabela, como restrições, índices, etc. A única coisa realmente mantém fora das colunas é a propriedade IDENTITY se uma das colunas tiver.

Clique com o botão direito do mouse na tabela original no Pesquisador de Objetos e selecione Tabela de Script Como> Criar Para> Nova Janela de Consulta. Você deve ter um script CREATE TABLE para a tabela original, incluindo todas as restrições, etc. Observe que talvez seja necessário definir algumas dessas configurações (Ferramentas> Opções> SQL Server Object Explorer> Script) como true para obter todos os os atributos de tabela que você deseja, portanto, isso pode levar algumas tentativas e erros:

opções em Ferramentas> Opções> SQL Server Object Explorer> Script

Agora, modifique manualmente esse script para especificar o novo nome da tabela e certifique-se de ajustar todos os nomes de restrições e índices de forma que sejam exclusivos (quanto trabalho será necessário dependerá de você ter uma convenção de nomenclatura estabelecida ou se você apenas pegar o que o SQL Server lançará para você).

Aaron Bertrand
fonte
5

Tudo pode ser feito no SQL Server Management Studio.

A opção Tabela de scripts como gera código de criação para chaves e restrições primárias e estrangeiras. Ele não cria um script para os índices, então você deve fazer isso em outra etapa. sugiro expandir todos os nós de tipo de objeto no SSMS Object Explorer.

insira a descrição da imagem aqui

Para criar um script para a estrutura da tabela, chaves primárias e estrangeiras e restrições

  1. Execute o SQL Server Management Studio
  2. No Pesquisador de Objetos , expanda Bancos de Dados
  3. Expandir tabelas
  4. Clique com o botão direito na tabela e selecione Tabela de scripts como | CRIAR PARA | Nova janela do editor de consultas

insira a descrição da imagem aqui

O script gerado será mostrado na guia Query Editor. Altere os nomes de tabela, chave primária e estrangeira e restrição, pois esses nomes precisam ser exclusivos.

Caso contrário, você receberá uma mensagem de erro dizendo algo como 'Já existe um objeto chamado' Endereço 'no banco de dados'. , ou 'A operação falhou porque já existe um índice ou estatísticas com o nome' AK_Address_rowguid 'na tabela' Person.Address '.'

Para criar um script para um índice

Use as etapas semelhantes à acima:

insira a descrição da imagem aqui

Para criar um script INSERT INTO para dados

  1. Clique com o botão direito do mouse no banco de dados (não na tabela!)
  2. Tarefas abertas | Gerar scripts
  3. Na guia Escolher Objetos , selecione a tabela para script

insira a descrição da imagem aqui

4. Na guia Definir opção de script , clique em Avançado e verifique se a opção Tipos de dados para script está definida como Somente dados

Nota: Se você selecionar Esquema e dados, o script de esquema gerado será idêntico ao script gerado no primeiro método nesta resposta.

insira a descrição da imagem aqui

5.Atualize o nome da tabela para o nome da nova tabela antes de executar o script

Milena Petrovic
fonte
1

Esquema FOR - Tabela, restrições e chaves

  • No Pesquisador de objetos, selecione TABELA (diga ABC)> Clique com o botão direito nele
  • Em seguida, selecione Tabela de scripts como> CRIAR PARA> Janela Novo Editor de Consultas
  • O script Create Table for ABC será aberto
  • Alterar nome da tabela
  • Alterar PK
  • Alterar nome da restrição
  • Alterar nome do índice
  • Agora execute este script, a tabela será criada com a mesma estrutura, mas com nome diferente ...

Índice FOR

  • Selecione Tabela ABC> Expandir
  • Selecione ÍNDICE> Clique com o botão direito do mouse no ÍNDICE NÃO CLUSTERIZADO
  • Índice do Script AS> Criar para> Janela Novo Editor de Consultas
  • Alterar nome do índice
  • Executar na tabela recém-criada para criar INDEX nela .....

FOR Data

  • Selecionar nome do banco de dados
  • Clique com o botão direito nele
  • Selecione Tarefa> Gerar Scripts ...
  • Uma nova janela será aberta
  • Selecione Avançar
  • Agora selecione Objetos de banco de dados específicos e Selecione Tabela ABC
  • Selecione Avançar
  • Vá com antecedência>
  • Crie Digitar dados para script como DADOS SOMENTE
  • Em seguida, OK> Avançar> Avançar> Concluir ....
  • Agora execute este script na tabela recém-criada
dsingh
fonte