Freigeben über


Einfügen von Zeilen mit SELECT INTO

Die SELECT INTO-Anweisung erstellt eine neue Tabelle und füllt sie mit dem Resultset der SELECT-Anweisung auf. Mithilfe von SELECT INTO können Daten aus mehreren Tabellen oder Sichten in einer Tabelle kombiniert werden. Die Anweisung kann außerdem verwendet werden, um eine neue Tabelle mit von einem Verbindungsserver ausgewählten Daten zu erstellen.

Die Struktur der neuen Tabelle wird durch die Attribute der Ausdrücke in der Auswahlliste definiert. Das folgende Beispiel erstellt die dbo.EmployeeAddresses-Tabelle, indem sieben Spalten aus verschiedenen mitarbeiter- und adressbezogenen Tabellen ausgewählt werden.

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

Sie können mit SELECT INTO keine partitionierte Tabelle erstellen, auch dann nicht, wenn die Quelltabelle partitioniert ist. SELECT INTO verwendet das Partitionsschema der Quelltabelle nicht. Stattdessen wird die neue Tabelle in der Standarddateigruppe erstellt. Um Zeilen in eine partitionierte Tabelle einfügen zu können, müssen Sie zuerst die partitionierte Tabelle erstellen und dann die INSERT INTO…SELECT FROM-Anweisung verwenden.

Das FILESTREAM-Attribut wird beim Erstellen einer neuen Tabelle mit der SELECT INTO-Anweisung nicht übertragen. FILESTREAM-BLOBs werden kopiert und in der neuen Tabelle als varbinary(max)-BLOBs gespeichert. Wenn ein FILESTREAM BLOB 2 GB überschreitet, wird die folgende Fehlermeldung ausgegeben, und die Anweisung wird beendet: "Es wurde versucht, ein LOB über die zulässige maximale Größe von 2.147.483.647 Bytes hinaus zu vergrößern."