Microsoft SQL Server. Как скопировать таблицу из другой базы

Как создать код для создания структуры имеющейся таблицы

Существует несколько способов копирования таблицы в базе данных MS SQL Server. Предлагаю несколько вариантов создания копии таблиц. Какой из них выбрать – зависит от структуры таблицы, наличия в ней индексов, триггеров и т.п., а также желания делать что-то руками.

1. Ручной метод копирования структуры таблицы

В Micrisoft SQL Management Studio выбрать базу, выбрать таблицу, нажать правой кнопкой мыши и выбрать пункты "Script Table as" -> "CREATE TO" -> "New Query Editor Window". В окне запроса откроется код для создания таблицы. В нем нужно указать имя базы, в которой нужно сделать копию таблицы, и новое имя, если база не меняется. Как создать код для создания структуры имеющейся таблицы, показано на рисунке ниже.

Как создать код для создания структуры имеющейся таблицы
Как создать код для создания структуры имеющейся таблицы

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

Для копирования данных в уже созданную таблицу нужно использовать такой SQL запрос:

INSERT into [db2].[dbo].tmp_tbl_Deps SELECT * FROM [db1].[dbo].tbl_Deps

2. Копирование SQL таблицы запросом в одну строчку

Сделать копию структуры таблицу и данных внутри одной базы:

SELECT * into tmp_tbl_Dep FROM tbl_Deps

Скопировать структуры таблицу и ее данные из одной базы в другую:

SELECT * into [Db2].[dbo].tmp_tbl_Deps FROM [Db1].[dbo].tbl_Deps

Минус у такого решения – не копируются индексы.

3. Скопировать SQL таблицу с одного сервера на другой

Для копирования SQL таблицы с одного сервера на другой потребуется использовать так называемый Linked server. Для начала его надо будет подключить к той базе, куда собираетесь копировать данные:

sp_addlinkedserver 'remote_dbserver'

После напишите запрос типа следующего и выполните его :

SET IDENTITY_INSERT [current_db_name].[dbo].currenttable OFF;
insert into [current_db_name].[dbo].currenttable ([Field1], [Field2], [Field3], [Field4])
select [Field1], [Field2], [Field3], [Field4]
from [remote_dbserver].[remote_db_name].[dbo].remotetable

SET IDENTITY_INSERT  [current_db_name].[dbo].currenttable  ON;

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика