Как создать новую таблицу с такими же ограничениями и индексами?

8

Я создаю новую таблицу с ограничениями первичного ключа и некластеризованным индексом в этой таблице.

Я знаю, я хотел бы создать еще одну таблицу с такой же структурой и значениями, а также ключами и индексами.

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)

Сейчас я создаю Dmyтаблицу, но ключи и ограничения не отражаются в Dmyтаблице в SQL Server 2008 R2.

SELECT * 
INTO Dmy 
FROM Dummy
Vinoth _S
источник

Ответы:

14

SELECT INTO не собирается делать это за вас, потому что, хотя он поддерживает имена столбцов и типы данных, он не сохраняет много других аспектов таблицы, таких как ограничения, индексы и т. Д. Единственное, что это действительно Хранение вне столбцов является свойством IDENTITY, если один из столбцов имеет его.

Щелкните правой кнопкой мыши исходную таблицу в обозревателе объектов и выберите «Таблица сценариев как> Создать в> Окно нового запроса». У вас должен быть сценарий CREATE TABLE для исходной таблицы, включая все ограничения и т. Д. Обратите внимание, что вам может потребоваться установить для некоторых из этих параметров (Инструменты> Параметры> Обозреватель объектов SQL Server> Сценарии) значение true, чтобы получить все атрибуты таблицы, которые вы хотите, так что это может потребовать проб и ошибок:

Параметры в разделе Инструменты> Параметры> Обозреватель объектов SQL Server> Сценарии

Теперь просто измените сценарий вручную, чтобы указать новое имя таблицы, и убедитесь, что все ограничения и имена индексов настроены так, чтобы они были уникальными (насколько это будет работать, зависит от того, есть ли у вас установленное соглашение об именах или если вы просто возьмете то, что SQL Server бросит на вас).

Аарон Бертран
источник
5

Все это можно сделать в SQL Server Management Studio.

Параметр « Таблица сценариев как» создает код создания для первичных и внешних ключей и ограничений. Он не создает скрипт для индексов, поэтому вы должны сделать это на другом шаге. типа, я предлагаю расширить все узлы типа объекта в SSMS Object Explorer.

введите описание изображения здесь

Создать скрипт для структуры таблицы, первичных и внешних ключей и ограничений

  1. Запустите SQL Server Management Studio
  2. В обозревателе объектов разверните Базы данных.
  3. Развернуть таблицы
  4. Щелкните правой кнопкой мыши таблицу и выберите « Таблица сценариев» как | СОЗДАТЬ | Новое окно редактора запросов

введите описание изображения здесь

Сгенерированный скрипт будет показан на вкладке редактора запросов. Убедитесь, что вы изменили имена таблиц, первичных и внешних ключей и ограничений, так как эти имена должны быть уникальными.

В противном случае вы получите сообщение об ошибке, в котором говорится: «В базе данных уже есть объект с именем« Адрес »». или «Операция не выполнена, так как в таблице« Person.Address »уже существует индекс или статистика с именем« AK_Address_rowguid ».

Создать скрипт для индекса

Используйте шаги, аналогичные приведенным выше:

введите описание изображения здесь

Создать скрипт INSERT INTO для данных

  1. Щелкните правой кнопкой мыши базу данных (не таблицу!)
  2. Открытые задачи | Генерировать скрипты
  3. На вкладке « Выбор объектов » выберите таблицу для сценария

введите описание изображения здесь

4.На вкладке « Задать параметр сценариев » нажмите « Дополнительно» и убедитесь, что для параметра « Типы данных для сценария» задано значение « Только данные».

Примечание. Если вы выберете « Схема и данные», созданный сценарий схемы будет идентичен сценарию, созданному в первом методе этого ответа.

введите описание изображения здесь

5. Обновите имя таблицы до имени новой таблицы перед выполнением сценария.

Милена Петрович
источник
1

Схема FOR - Таблица, Ограничения и Ключи

  • В обозревателе объектов выберите TABLE (скажем, ABC)> щелкните по нему правой кнопкой мыши.
  • Затем выберите таблицу сценариев как> CREATE TO> окно нового редактора запросов.
  • Откроется скрипт создания таблицы для ABC
  • Изменить имя таблицы
  • Сменить ПК
  • Изменить имя ограничения
  • Изменить имя индекса
  • Теперь выполните этот скрипт, таблица будет создана с той же структурой, но с другим именем ...

FOR Index

  • Выберите Таблица ABC> Разверните ее
  • Выберите ИНДЕКС> Щелкните правой кнопкой мыши НЕКЛАСТЕРНЫЙ ИНДЕКС
  • Индекс скрипта AS> Создать TO> Новое окно редактора запросов
  • Изменить имя индекса
  • Выполнить на вновь созданной таблице для создания INDEX на нем .....

Для данных

  • Выберите имя базы данных
  • Щелкните правой кнопкой мыши на нем
  • Выберите «Задача»> «Создать сценарии» ...
  • Откроется новое окно
  • Выберите Далее
  • Теперь выберите конкретные объекты базы данных и выберите таблицу ABC
  • Выберите Далее
  • Идти заранее>
  • Сделайте Введите данные для сценария ТОЛЬКО ДАННЫМИ
  • Тогда OK> Далее> Далее> Готово ....
  • Теперь выполните этот скрипт во вновь созданной таблице.
dsingh
источник