Inserimento di righe con l'istruzione SELECT INTO
L'istruzione SELECT INTO consente di creare una nuova tabella e di popolarla con il set di risultati dell'istruzione SELECT. Tramite l'istruzione SELECT INTO è possibile inserire in un'unica tabella i dati di più tabelle o viste, nonché creare una nuova tabella contenente i dati selezionati da un server collegato.
La struttura della nuova tabella viene definita in base agli attributi delle espressioni dell'elenco di selezione. Nell'esempio seguente per la creazione della tabella dbo.EmployeeAddresses vengono selezionate sette colonne di diverse tabelle relative a dipendenti e indirizzi.
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName, e.Title, a.AddressLine1, a.City, sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Contact AS c
JOIN HumanResources.Employee AS e ON e.ContactID = c.ContactID
JOIN HumanResources.EmployeeAddress AS ea ON ea.EmployeeID = e.EmployeeID
JOIN Person.Address AS a on a.AddressID = ea.AddressID
JOIN Person.StateProvince as sp ON sp.StateProvinceID = a.StateProvinceID;
GO
Non è possibile utilizzare SELECT INTO per creare una tabella partizionata, anche quando la tabella di origine già lo è. Lo schema di partizione della tabella di origine non è utilizzato in SELECT INTO. Al contrario, la nuova tabella viene creata nel filegroup predefinito. Per inserire delle righe in una tabella partizionata, per prima cosa è necessario creare la tabella stessa, quindi utilizzare l'istruzione INSERT INTO...SELECT FROM.
L'attributo FILESTREAM non viene trasferito quando si crea una nuova tabella utilizzando l'istruzione SELECT INTO. Gli oggetti BLOB FILESTREAM vengono copiati e archiviati nella nuova tabella come oggetti BLOB di tipo varbinary(max). Se un oggetto BLOB FILESTREAM BLOB supera i 2 GB, viene generato il seguente messaggio di errore e l'istruzione viene interrotta: ""Tentativo di espandere l'oggetto LOB oltre le dimensioni massime consentite di 2.147.483.647 byte".