Существует несколько способов копирования таблицы в базе данных 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;