Добавление строк с использованием SELECT INTO

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

Структура новой таблицы определяется атрибутами выражений в списке выбора. В следующем примере таблица dbo.EmployeeAddresses создается путем выбора семи столбцов из различных таблиц, описывающих сотрудников и адреса.

USE AdventureWorks2008R2;
GO
SELECT c.FirstName, c.LastName, e.JobTitle, a.AddressLine1, a.City, 
    sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Person AS c
    JOIN HumanResources.Employee AS e 
    ON e.BusinessEntityID = c.BusinessEntityID
    JOIN Person.BusinessEntityAddress AS bea
    ON e.BusinessEntityID = bea.BusinessEntityID
    JOIN Person.Address AS a
    ON bea.AddressID = a.AddressID
    JOIN Person.StateProvince as sp 
    ON sp.StateProvinceID = a.StateProvinceID;
GO

Инструкцию SELECT INTO нельзя использовать для создания секционированной таблицы, даже если исходная таблица является секционированной. В инструкции SELECT INTO схема секционирования исходной таблицы не используется. Вместо этого в файловой группе по умолчанию создается новая таблица. Чтобы вставить строки в секционированную таблицу, необходимо сначала создать секционированную таблицу, а затем использовать инструкцию INSERT INTO…SELECT FROM.

Атрибут FILESTREAM не передается при создании новой таблицы с помощью инструкции SELECT INTO. Объекты BLOB FILESTREAM копируются и хранятся в новой таблице как объекты BLOB типа varbinary(max). Если размер объекта BLOB FILESTREAM превышает 2 ГБ, выводится следующее сообщение об ошибке и инструкция прекращает работу: «Попытка увеличить LOB свыше максимально допустимого размера 2147483647 байт».