OPENROWSET (Transact-SQL)OPENROWSET (Transact-SQL)

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Enthält alle für einen Zugriff auf Remotedaten von einer OLE DB-Datenquelle notwendigen Verbindungsinformationen.Includes all connection information that is required to access remote data from an OLE DB data source. Diese Methode ist eine Alternative zum Zugriff auf Tabellen eines Verbindungsservers. Sie ist eine einmalig verwendete Ad-hoc-Methode zum Verbinden und Zugreifen auf Remotedaten mithilfe von OLE DB.This method is an alternative to accessing tables in a linked server and is a one-time, ad hoc method of connecting and accessing remote data by using OLE DB. Für häufigere Verweise auf OLE DB-Datenquellen verwenden Sie stattdessen Verbindungsserver.For more frequent references to OLE DB data sources, use linked servers instead. Weitere Informationen finden Sie unter Verbindungsserver (Datenbank-Engine).For more information, see Linked Servers (Database Engine). Auf die OPENROWSET-Funktion kann in der FROM-Klausel einer Abfrage so verwiesen werden, als handele es sich um einen Tabellennamen.The OPENROWSET function can be referenced in the FROM clause of a query as if it were a table name. Auf die OPENROWSET-Funktion kann auch als Zieltabelle einer INSERT-, UPDATE- oder DELETE-Anweisung verwiesen werden, je nach den Funktionen des OLE DB-Anbieters.The OPENROWSET function can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement, subject to the capabilities of the OLE DB provider. Obwohl die Abfrage möglicherweise mehrere Resultsets zurückgibt, gibt OPENROWSET nur das erste Resultset zurück.Although the query might return multiple result sets, OPENROWSET returns only the first one.

OPENROWSET unterstützt auch Massenvorgänge über einen integrierten BULK-Anbieter, mit dem Daten aus einer Datei gelesen und als Rowset zurückgegeben werden können.OPENROWSET also supports bulk operations through a built-in BULK provider that enables data from a file to be read and returned as a rowset.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
   | 'provider_string' }
   , {   [ catalog. ] [ schema. ] object
       | 'query'
     }
   | BULK 'data_file' ,
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )

<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
   [ , DATASOURCE = 'data_source_name' ]
   [ , ERRORFILE = 'file_name' ]
   [ , ERRORFILE_DATASOURCE = 'data_source_name' ]
   [ , FIRSTROW = first_row ]
   [ , LASTROW = last_row ]
   [ , MAXERRORS = maximum_errors ]
   [ , ROWS_PER_BATCH = rows_per_batch ]
   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] ]
  
   -- bulk_options related to input file format
   [ , FORMAT = 'CSV' ]
   [ , FIELDQUOTE = 'quote_characters']
   [ , FORMATFILE = 'format_file_path' ]

ArgumenteArguments

provider_name“ ist eine Zeichenfolge für den Anzeigenamen (oder die ProgID) des OLE DB-Anbieters, wie er in der Registrierung angegeben wurde.'provider_name' Is a character string that represents the friendly name (or PROGID) of the OLE DB provider as specified in the registry. provider_name verfügt nicht über einen Standardwert.provider_name has no default value.

datasource“ ist eine Zeichenfolgenkonstante, die einer bestimmten OLE DB-Datenquelle entspricht.'datasource' Is a string constant that corresponds to a particular OLE DB data source. datasource ist die DBPROP_INIT_DATASOURCE-Eigenschaft, die zum Initialisieren des Anbieters an die IDBProperties-Schnittstelle des Anbieters übergeben werden muss.datasource is the DBPROP_INIT_DATASOURCE property to be passed to the IDBProperties interface of the provider to initialize the provider. Normalerweise enthält diese Zeichenfolge den Namen der Datenbankdatei, den Namen des Datenbankservers oder einen Namen, mit dem der Anbieter die Datenbank(en) suchen kann.Typically, this string includes the name of the database file, the name of a database server, or a name that the provider understands to locate the database or databases.

user_id“ ist eine Zeichenfolgenkonstante für den Benutzernamen, der an den angegebenen OLE DB-Anbieter übergeben wird.'user_id' Is a string constant that is the user name passed to the specified OLE DB provider. user_id gibt den Sicherheitskontext für die Verbindung an und wird als DBPROP_AUTH_USERID-Eigenschaft übergeben, um den Anbieter zu initialisieren.user_id specifies the security context for the connection and is passed in as the DBPROP_AUTH_USERID property to initialize the provider. user_id darf keine Anmelde-ID von Microsoft Windows sein.user_id cannot be a Microsoft Windows login name.

password“ ist eine Zeichenfolgenkonstante für das Benutzerkennwort, das an den OLE DB-Anbieter übergeben wird.'password' Is a string constant that is the user password to be passed to the OLE DB provider. password wird beim Initialisieren des Anbieters als DBPROP_AUTH_PASSWORD-Eigenschaft übergeben.password is passed in as the DBPROP_AUTH_PASSWORD property when initializing the provider. password darf kein Microsoft Windows-Kennwort sein.password cannot be a Microsoft Windows password.

provider_string“ ist eine anbieterspezifische Verbindungszeichenfolge, die als DBPROP_INIT_PROVIDERSTRING-Eigenschaft übergeben wird, um den OLE DB-Anbieter zu initialisieren.'provider_string' Is a provider-specific connection string that is passed in as the DBPROP_INIT_PROVIDERSTRING property to initialize the OLE DB provider. provider_string kapselt normalerweise alle zum Initialisieren des Anbieters benötigten Verbindungsinformationen.provider_string typically encapsulates all the connection information required to initialize the provider. Eine Liste der Schlüsselwörter, die vom OLE DB-Anbieter von SQL ServerSQL Server Native Client erkannt werden, finden Sie unter Initialization and Authorization Properties (Initialisierungs- und Autorisierungseigenschaften).For a list of keywords that are recognized by the SQL ServerSQL Server Native Client OLE DB provider, see Initialization and Authorization Properties.

catalog“ ist der Name des Katalogs oder der Datenbank, in dem bzw. in der sich das angegebene Objekt befindet.catalog Is the name of the catalog or database in which the specified object resides.

schema“ ist der Name des Schemas oder des Besitzers für das angegebene Objekt.schema Is the name of the schema or object owner for the specified object.

object“ ist der Objektname, der das zu verwendende Objekt eindeutig identifiziert.object Is the object name that uniquely identifies the object to work with.

query“ ist eine Zeichenfolgenkonstante, die zum Anbieter geschickt und von ihm ausgeführt wird.'query' Is a string constant sent to and executed by the provider. Die lokale Instanz von SQL ServerSQL Server verarbeitet nicht diese Abfrage, sondern die vom Anbieter zurückgegebenen Abfrageergebnisse (eine Pass-Through-Abfrage).The local instance of SQL ServerSQL Server does not process this query, but processes query results returned by the provider, a pass-through query. Pass-Through-Abfragen eignen sich bei Anbietern, die ihre Tabellendaten nicht über Tabellennamen verfügbar machen, sondern nur über eine Befehlssprache.Pass-through queries are useful when used on providers that do not make available their tabular data through table names, but only through a command language. Pass-Through-Abfragen werden auf dem Remoteserver unterstützt, wenn der Abfrageanbieter das Command-Objekt von OLE DB und die dafür notwendigen Schnittstellen unterstützt.Pass-through queries are supported on the remote server, as long as the query provider supports the OLE DB Command object and its mandatory interfaces. Weitere Informationen finden Sie unter SQL Server Native Client (OLE DB) Reference (Verweis für SQL Server Native Client (OLE DB)).For more information, see SQL Server Native Client (OLE DB) Reference.

„BULK“ verwendet den BULK-Rowsetanbieter für OPENROWSET, um Daten aus einer Datei zu lesen.BULK Uses the BULK rowset provider for OPENROWSET to read data from a file. In SQL ServerSQL Server kann OPENROWSET aus einer Datendatei lesen, ohne die Daten in eine Zieltabelle zu laden.In SQL ServerSQL Server, OPENROWSET can read from a data file without loading the data into a target table. Auf diese Weise können Sie OPENROWSET mit einer einfachen SELECT-Anweisung verwenden.This lets you use OPENROWSET with a simple SELECT statement.

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

Die Argumente der Option BULK ermöglichen eine erhebliche Kontrolle darüber, wo das Lesen von Daten begonnen und beendet werden soll, wie mit Fehlern umgegangen wird und wie Daten interpretiert werden sollen.The arguments of the BULK option allow for significant control over where to start and end reading data, how to deal with errors, and how data is interpreted. Beispielsweise können Sie angeben, dass die Datendatei als einzeiliges, einspaltiges Rowset vom Datentyp varbinary, varchar oder nvarchar gelesen wird.For example, you can specify that the data file be read as a single-row, single-column rowset of type varbinary, varchar, or nvarchar. Das Standardverhalten ist in den folgenden Argumentbeschreibungen erläutert.The default behavior is described in the argument descriptions that follow.

Informationen zum Verwenden der BULK-Option finden Sie unter "Hinweise" weiter unten in diesem Thema.For information about how to use the BULK option, see "Remarks," later in this topic. Informationen zu den für die Option BULK erforderlichen Berechtigungen finden Sie im Abschnitt "Berechtigungen" weiter unten in diesem Thema.For information about the permissions that are required by the BULK option, see "Permissions," later in this topic.

Hinweis

Wenn OPENROWSET (BULK ...) zum Importieren von Daten mit dem vollständigen Wiederherstellungsmodell verwendet wird, wird die Protokollierung nicht optimiert.When used to import data with the full recovery model, OPENROWSET (BULK ...) does not optimize logging.

Informationen zum Vorbereiten von Daten für Massenimport finden Sie unter Vorbereiten von Daten für den Massenexport oder -import (SQL Server).For information on preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

data_file“ ist der vollständige Pfad der Datendatei, deren Daten in die Zieltabelle kopiert werden sollen.'data_file' Is the full path of the data file whose data is to be copied into the target table. Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Ab SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1 kann sich „data_file“ in Azure-Blobspeicher befinden.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, the data_file can be in Azure blob storage. Beispiele finden Sie unter Beispiele für Massenzugriff auf Daten in Azure Blob Storage.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

<bulk_options> gibt mindestens ein Argument für die Option BULK an.<bulk_options> Specifies one or more arguments for the BULK option.

„CODEPAGE = { 'ACP'| 'OEM'| 'RAW'| 'code_page' }“ gibt die Codepage für die in der Datendatei enthaltenen Daten an.CODEPAGE = { 'ACP'| 'OEM'| 'RAW'| 'code_page' } Specifies the code page of the data in the data file. CODEPAGE ist nur dann von Bedeutung, wenn die Daten char-, varchar- oder text-Spalten mit Zeichenwerten enthalten, die größer als 127 oder kleiner als 32 sind.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values more than 127 or less than 32.

Wichtig

Die Option CODEPAGE wird unter Linux nicht unterstützt.CODEPAGE is not a supported option on Linux.

Hinweis

Es wird empfohlen, dass Sie für jede Spalte in einer Formatdatei einen Sortierungsnamen angeben, außer wenn die 65001-Option Priorität vor der Angabe von Sortierung/Codepage haben soll.We recommend that you specify a collation name for each column in a format file, except when you want the 65001 option to have priority over the collation/code page specification.

CODEPAGE-WertCODEPAGE value und BeschreibungDescription
ACPACP Konvertiert Spalten vom Datentyp char, varchar oder text von der ANSI-/MicrosoftMicrosoft-Windows-Codepage (ISO 1252) in die SQL ServerSQL Server-Codepage.Converts columns of char, varchar, or text data type from the ANSI/MicrosoftMicrosoft Windows code page (ISO 1252) to the SQL ServerSQL Server code page.
OEM (Standard)OEM (default) Konvertiert Spalten vom Datentyp char, varchar oder text von der OEM-Codepage des Systems in die SQL ServerSQL Server-Codepage.Converts columns of char, varchar, or text data type from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW Es erfolgt keine Konvertierung in eine andere Codepage.No conversion occurs from one code page to another. Dies ist die schnellste Option.This is the fastest option.
Codepagecode_page Gibt die Quellcodepage an, nach der die Zeichendaten in der Datendatei codiert werden, beispielsweise 850.Indicates the source code page on which the character data in the data file is encoded; for example, 850.

Wichtig: In Versionen vor SQL Server 2016 (13.x)SQL Server 2016 (13.x) wird die Codepage 65001 (UTF-8-Codierung) nicht unterstützt.Important Versions prior to SQL Server 2016 (13.x)SQL Server 2016 (13.x) do not support code page 65001 (UTF-8 encoding).

„ERRORFILE ='file_name'“ gibt die Datei an, die zum Sammeln der Zeilen verwendet wird, die Formatierungsfehler enthalten und nicht in ein OLE DB-Rowset konvertiert werden können.ERRORFILE ='file_name' Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. Diese Zeilen werden aus der Datendatei unverändert in diese Fehlerdatei kopiert.These rows are copied into this error file from the data file "as is."

Die Fehlerdatei wird zu Beginn der Ausführung des Befehls erstellt.The error file is created at the start of the command execution. Falls die Datei bereits vorhanden ist, wird ein Fehler ausgelöst.An error will be raised if the file already exists. Darüber hinaus wird eine Kontrolldatei mit der Erweiterung .ERROR.txt erstellt.Additionally, a control file that has the extension .ERROR.txt is created. Diese Datei enthält einen Verweis auf jede Zeile in der Fehlerdatei und stellt eine Fehlerdiagnose bereit.This file references each row in the error file and provides error diagnostics. Sobald die Fehler korrigiert wurden, können die Daten geladen werden.After the errors have been corrected, the data can be loaded. Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Ab SQL Server 2017 (14.x)SQL Server 2017 (14.x) kann sich error_file_path im Azure Blob Storage befinden.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x), the error_file_path can be in Azure blob storage.

„errorfile_data_source_name“ Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.'errorfile_data_source_name' Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Es handelt sich um eine benannte externe Datenquelle, die auf den Azure Blob-Speicherort der Fehlerdatei verweist, welche Fehler enthält, die während des Importierens gefunden wurden.Is a named external data source pointing to the Azure Blob storage location of the error file that will contain errors found during the import. Die externe Datenquelle muss mithilfe der in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1 hinzugefügten TYPE = BLOB_STORAGE-Option erstellt werden.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Weitere Informationen finden Sie unter CREATE EXTERNAL DATA SOURCE (CREATE EXTERNAL DATA SOURCE).For more information, see CREATE EXTERNAL DATA SOURCE.

„FIRSTROW =first_row“ gibt die Nummer der ersten zu ladenden Zeile an.FIRSTROW =first_row Specifies the number of the first row to load. Der Standardwert lautet 1.The default is 1. Damit wird die erste Zeile in der festgelegten Datendatei angegeben.This indicates the first row in the specified data file. Die Zeilennummern werden durch Zählen der Zeilenabschlusszeichen bestimmt.The row numbers are determined by counting the row terminators. FIRSTROW ist einsbasiert.FIRSTROW is 1-based.

„LASTROW =last_row“ gibt die Nummer der letzten zu ladenden Zeile an.LASTROW =last_row Specifies the number of the last row to load. Die Standardeinstellung ist 0.The default is 0. Damit wird die letzte Zeile in der festgelegten Datendatei angegeben.This indicates the last row in the specified data file.

„MAXERRORS =maximum_errors“ gibt an, nach wie vielen Syntaxfehlern oder nicht übereinstimmenden Zeilen gemäß der Definition im Dateiformat OPENROWSET eine Ausnahme auslöst.MAXERRORS =maximum_errors Specifies the maximum number of syntax errors or nonconforming rows, as defined in the format file, that can occur before OPENROWSET throws an exception. Bis zum Erreichen von MAXERRORS ignoriert OPENROWSET fehlerhafte Zeilen und lädt diese nicht, wobei jede fehlerhafte Zeile als ein Fehler gezählt wird.Until MAXERRORS is reached, OPENROWSET ignores each bad row, not loading it, and counts the bad row as one error.

Der Standardwert für maximum_errors ist 10.The default for maximum_errors is 10.

Hinweis

MAX_ERRORS kann für CHECK-Einschränkungen oder zum Konvertieren der Datentypen money und bigint nicht verwendet werden.MAX_ERRORS does not apply to CHECK constraints, or to converting money and bigint data types.

„ROWS_PER_BATCH =rows_per_batch“ gibt die ungefähre Anzahl von Datenzeilen in der Datendatei an.ROWS_PER_BATCH =rows_per_batch Specifies the approximate number of rows of data in the data file. Der Wert sollte von der gleichen Größenordnung sein wie die tatsächliche Zeilenanzahl.This value should be of the same order as the actual number of rows.

OPENROWSET importiert eine Datendatei immer als einzelnen Batch.OPENROWSET always imports a data file as a single batch. Wenn Sie jedoch rows_per_batch mit einem Wert > 0 angeben, verwendet der Abfrageprozessor den Wert unter rows_per_batch als Hinweis für die Zuordnung der Ressourcen im Abfrageplan.However, if you specify rows_per_batch with a value > 0, the query processor uses the value of rows_per_batch as a hint for allocating resources in the query plan.

Standardmäßig ist ROWS_PER_BATCH unbekannt.By default, ROWS_PER_BATCH is unknown. ROWS_PER_BATCH = 0 hat den gleichen Effekt, als würden Sie ROWS_PER_BATCH nicht angeben.Specifying ROWS_PER_BATCH = 0 is the same as omitting ROWS_PER_BATCH.

„ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] )“ ist ein optionaler Hinweis, der angibt, wie die Daten in der Datendatei sortiert werden.ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] ) An optional hint that specifies how the data in the data file is sorted. Standardmäßig geht der Massenvorgang davon aus, dass die Datendatei nicht sortiert ist.By default, the bulk operation assumes the data file is unordered. Die Leistung kann verbessert werden, wenn die festgelegte Reihenfolge vom Abfrageoptimierer zur Generierung eines effizienteren Abfrageplans verwendet werden kann.Performance might improve if the order specified can be exploited by the query optimizer to generate a more efficient query plan. Folgendes sind Beispiele dafür, wann die Festlegung einer Sortierung von Vorteil sein kann:Examples for when specifying a sort can be beneficial include the following:

  • Einfügen von Zeilen in eine Tabelle mit einem gruppierten Index, in der die Rowsetdaten nach dem Schlüssel des gruppierten Index sortiert sind.Inserting rows into a table that has a clustered index, where the rowset data is sorted on the clustered index key.
  • Verknüpfen des Rowsets mit einer anderen Tabelle, in der die Sortierungs- und Joinspalten übereinstimmen.Joining the rowset with another table, where the sort and join columns match.
  • Aggregieren der Rowsetdaten nach den Sortierspalten.Aggregating the rowset data by the sort columns.
  • Verwenden des Rowsets als Quelltabelle in der FROM-Klausel einer Abfrage, wobei die Sortierungs- und Joinspalten übereinstimmen.Using the rowset as a source table in the FROM clause of a query, where the sort and join columns match.

UNIQUE gibt an, dass die Datendatei keine doppelten Einträge aufweist.UNIQUE specifies that the data file does not have duplicate entries.

Wenn die tatsächlichen Zeilen in der Datendatei nicht entsprechend der angegebenen Reihenfolge sortiert sind oder wenn der UNIQUE-Hinweis angegeben wird und doppelte Schlüssel vorhanden sind, wird ein Fehler zurückgegeben.If the actual rows in the data file are not sorted according to the order that is specified, or if the UNIQUE hint is specified and duplicates keys are present, an error is returned.

Spaltenaliase sind erforderlich, wenn ORDER verwendet wird.Column aliases are required when ORDER is used. Die Spaltenaliasliste muss auf die abgeleitete Tabelle verweisen, auf die von der BULK-Klausel zugegriffen wird.The column alias list must reference the derived table that is being accessed by the BULK clause. Die Spaltennamen, die in der ORDER-Klausel angegeben sind, verweisen auf diese Spaltenaliasliste.The column names that are specified in the ORDER clause refer to this column alias list. Spalten mit großen Werttypen (varchar(max) , nvarchar(max) , varbinary(max) und xml) und großen Objekttypen (LOB) (text, ntext und image) können nicht angegeben werden.Large value types (varchar(max), nvarchar(max), varbinary(max), and xml) and large object (LOB) types (text, ntext, and image) columns cannot be specified.

„SINGLE_BLOB“ gibt die Inhalte von data_file als einzeiliges, einspaltiges Rowset vom Typ varbinary(max) zurück.SINGLE_BLOB Returns the contents of data_file as a single-row, single-column rowset of type varbinary(max).

Wichtig

Es wird empfohlen, XML-Daten anstelle von mit SINGLE_CLOB und SINGLE_NCLOB ausschließlich mithilfe der SINGLE_BLOB-Option zu importieren, da nur SINGLE_BLOB alle Windows-Codierungskonvertierungen unterstützt.We recommend that you import XML data only using the SINGLE_BLOB option, rather than SINGLE_CLOB and SINGLE_NCLOB, because only SINGLE_BLOB supports all Windows encoding conversions.

SINGLE_CLOBSINGLE_CLOB

Wenn data_file als ASCII gelesen wird, wird der Inhalt als einzeiliges, einspaltiges Rowset vom Typ varchar(max) zurückgegeben, wobei die Sortierung der aktuellen Datenbank verwendet wird.By reading data_file as ASCII, returns the contents as a single-row, single-column rowset of type varchar(max), using the collation of the current database.

„SINGLE_NCLOB“ gibt den Inhalt als einzeiliges, einspaltiges Rowset vom Typ nvarchar(max) zurück, indem es data_file als UNICODE liest, wobei die Sortierung der aktuellen Datenbank verwendet wird.SINGLE_NCLOB By reading data_file as UNICODE, returns the contents as a single-row, single-column rowset of type nvarchar(max), using the collation of the current database.

Formatoptionen der EingabedateiInput file format options

„FORMAT = 'CSV'“ Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.FORMAT = 'CSV' Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Gibt eine CSV-Datei an, die dem Standard RFC 4180 entspricht.Specifies a comma separated values file compliant to the RFC 4180 standard.

„FORMATFILE ='format_file_path'“ gibt den vollständigen Pfad einer Formatdatei an.FORMATFILE ='format_file_path' Specifies the full path of a format file. SQL ServerSQL Server unterstützt zwei Typen von Formatdateien: XML- und Nicht-XML-Formatdateien.supports two types of format files: XML and non-XML.

Eine Formatdatei ist erforderlich, um Spaltentypen im Resultset zu definieren.A format file is required to define column types in the result set. Die einzige Ausnahme hierzu ist, dass SINGLE_CLOB, SINGLE_BLOB oder SINGLE_NCLOB angegeben ist. In diesem Fall ist die Formatdatei nicht erforderlich.The only exception is when SINGLE_CLOB, SINGLE_BLOB, or SINGLE_NCLOB is specified; in which case, the format file is not required.

Weitere Informationen finden Sie unter Massenimport von Daten mithilfe einer Formatdatei (SQL Server).For information about format files, see Use a Format File to Bulk Import Data (SQL Server).

Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Ab SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1 kann sich format_file_path in Azure Blob Storage befinden.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, the format_file_path can be in Azure blob storage. Beispiele finden Sie unter Beispiele für Massenzugriff auf Daten in Azure Blob Storage.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

„FIELDQUOTE = 'field_quote'“ Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.FIELDQUOTE = 'field_quote' Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Gibt ein Zeichen an, das als Anführungszeichen in der CSV-Datei verwendet wird.Specifies a character that will be used as the quote character in the CSV file. Wenn dies nicht angegeben ist, wird das Anführungszeichen (") so verwendet, wie es im Standard RFC 4180 definiert ist.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

RemarksRemarks

Mit OPENROWSET kann nur auf Remotedaten von OLE DB-Datenquellen zugegriffen werden, wenn für den angegebenen Anbieter die Registrierungsoption DisallowAdhocAccess explizit auf 0 festgelegt wird und wenn die erweiterte Konfigurationsoption „Ad Hoc Distributed Queries“ aktiviert ist.OPENROWSET can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. Wenn diese Optionen nicht festgelegt sind, ermöglicht das Standardverhalten keinen Ad-hoc-Zugriff.When these options are not set, the default behavior does not allow for ad hoc access.

Beim Zugriff auf OLE DB-Remotedatenquellen wird die Anmelde-ID vertrauenswürdiger Verbindungen nicht automatisch von dem Server delegiert, auf dem der Client mit dem Server verbunden ist, der abgefragt wird.When accessing remote OLE DB data sources, the login identity of trusted connections is not automatically delegated from the server on which the client is connected to the server that is being queried. Die Authentifizierungsdelegierung muss konfiguriert sein.Authentication delegation must be configured.

Der Katalog- und Schemaname sind erforderlich, falls der OLE DB-Anbieter mehrere Kataloge und Schemas in der angegebenen Datenquelle unterstützt.Catalog and schema names are required if the OLE DB provider supports multiple catalogs and schemas in the specified data source. Die Angabe von Werten für catalog und schema kann entfallen, falls diese vom OLE DB-Anbieter nicht unterstützt werden.Values for catalog and )schema can be omitted when the OLE DB provider does not support them. Falls der Anbieter nur Schemanamen unterstützt, muss ein zweiteiliger Name im Format schema . object angegeben werden.If the provider supports only schema names, a two-part name of the form schema.object must be specified. Falls der Anbieter nur Katalognamen unterstützt, muss ein dreiteiliger Name im Format catalog . schema . object angegeben werden.If the provider supports only catalog names, a three-part name of the form catalog.schema.object must be specified. Dreiteilige Namen müssen für Pass-Through-Abfragen angegeben werden, für die der OLE DB-Anbieter von SQL ServerSQL Server Native Client verwendet wird.Three-part names must be specified for pass-through queries that use the SQL ServerSQL Server Native Client OLE DB provider. Weitere Informationen finden Sie unter Transact-SQL-Syntaxkonventionen (Transact-SQL).For more information, see Transact-SQL Syntax Conventions (Transact-SQL).

Für die Argumente von OPENROWSET können keine Variablen verwendet werden.OPENROWSET does not accept variables for its arguments.

Jeder Aufruf von OPENDATASOURCE, OPENQUERY oder OPENROWSET in der FROM-Klausel wird einzeln und unabhängig von anderen Aufrufen dieser Funktionen ausgewertet, die als Ziel des Updates verwendet werden, auch wenn für die beiden Aufrufe identische Argumente angegeben werden.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. Insbesondere haben Filter- oder Joinbedingungen, die auf das Ergebnis eines dieser Aufrufe angewendet werden, keine Auswirkungen auf die Ergebnisse des jeweils anderen.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.

Verwenden von OPENROWSET mit der Option BULKUsing OPENROWSET with the BULK Option

Die folgenden Transact-SQLTransact-SQL-Erweiterungen unterstützen die OPENROWSET(BULK...)-Funktion:The following Transact-SQLTransact-SQL enhancements support the OPENROWSET(BULK...) function:

  • Mithilfe einer FROM-Klausel, die mit SELECT verwendet wird, kann OPENROWSET(BULK...) anstelle eines Tabellennamens mit voller SELECT-Funktionalität aufgerufen werden.A FROM clause that is used with SELECT can call OPENROWSET(BULK...) instead of a table name, with full SELECT functionality.

    OPENROWSET mit der BULK-Option erfordert in der FROM-Klausel einen abhängigen Namen (wird auch als Bereichsvariable oder Alias bezeichnet).OPENROWSET with the BULK option requires a correlation name, also known as a range variable or alias, in the FROM clause. Spaltenaliase können angegeben werden.Column aliases can be specified. Wenn keine Spaltenaliasliste angegeben wird, sind für die Formatdatei Spaltennamen notwendig.If a column alias list is not specified, the format file must have column names. Durch das Angeben von Spaltenaliasen werden die Spaltennamen in der Formatdatei wie folgt überschrieben:Specifying column aliases overrides the column names in the format file, such as:

    • FROM OPENROWSET(BULK...) AS table_alias
    • FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)

    Wichtig

    Wenn das Hinzufügen von AS <table_alias> fehlschlägt, führt dies zu folgendem Fehler: Meldung 491, Ebene 16, Status 1, Zeile 20: Für das Massenrowset in der FROM-Klausel muss ein abhängiger Name angegeben werden.Failure to add the AS <table_alias> will result in the error: Msg 491, Level 16, State 1, Line 20 A correlation name must be specified for the bulk rowset in the from clause.

  • Eine SELECT...FROM OPENROWSET(BULK...)-Anweisung fragt Daten in einer Datei direkt ab, ohne dass die Daten in eine Tabelle importiert werden.A SELECT...FROM OPENROWSET(BULK...) statement queries the data in a file directly, without importing the data into a table. SELECT...FROM OPENROWSET(BULK...)-Anweisungen können auch Massenspaltenaliase auflisten, indem eine Formatdatei verwendet wird, um Spaltennamen und auch Datentypen anzugeben.SELECT...FROM OPENROWSET(BULK...) statements can also list bulk-column aliases by using a format file to specify column names, and also data types.

  • Durch die Verwendung von OPENROWSET(BULK...) als Quelltabelle in einer INSERT- oder MERGE-Anweisung wird ein Massenimport von Daten aus einer Datendatei in eine SQL ServerSQL Server-Tabelle ausgeführt.Using OPENROWSET(BULK...) as a source table in an INSERT or MERGE statement bulk imports data from a data file into a SQL ServerSQL Server table. Weitere Informationen finden Sie unter Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...) (SQL Server).For more information, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

  • Wenn die Option OPENROWSET BULK mit einer INSERT-Anweisung verwendet wird, unterstützt die BULK-Klausel Tabellenhinweise.When the OPENROWSET BULK option is used with an INSERT statement, the BULK clause supports table hints. Zusätzlich zu den regulären Tabellenhinweisen wie TABLOCK, kann die BULK-Klausel die folgenden spezialisierten Tabellenhinweise akzeptieren: IGNORE_CONSTRAINTS (ignoriert nur die CHECK- and FOREIGN KEY-Einschränkungen), IGNORE_TRIGGERS, KEEPDEFAULTS und KEEPIDENTITY.In addition to the regular table hints, such as TABLOCK, the BULK clause can accept the following specialized table hints: IGNORE_CONSTRAINTS (ignores only the CHECK and FOREIGN KEY constraints), IGNORE_TRIGGERS, KEEPDEFAULTS, and KEEPIDENTITY. Weitere Informationen finden Sie unter Tabellenhinweise (Transact-SQL).For more information, see Table Hints (Transact-SQL).

    Weitere Informationen zur Verwendung von INSERT...SELECT * FROM OPENROWSET(BULK...)-Anweisungen finden Sie unter Massenimport und -export von Daten (SQL Server).For information about how to use INSERT...SELECT * FROM OPENROWSET(BULK...) statements, see Bulk Import and Export of Data (SQL Server). Informationen dazu, wann Zeileneinfügevorgänge, die durch den Massenimport ausgeführt werden, im Transaktionsprotokoll protokolliert werden, finden Sie unter Voraussetzungen für die minimale Protokollierung beim Massenimport.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

Hinweis

Für die Verwendung von OPENROWSET ist es wichtig, nachvollziehen zu können, wie in SQL ServerSQL Server mit Identitätswechseln umgegangen wird.When you use OPENROWSET, it is important to understand how SQL ServerSQL Server handles impersonation. Weitere Informationen zu Überlegungen zur Sicherheit finden Sie unter Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...) (SQL Server).For information about security considerations, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

Massenimport von SQLCHAR-, SQLNCHAR- oder SQLBINARY-DatenBulk Importing SQLCHAR, SQLNCHAR or SQLBINARY Data

Wenn keine maximale Länge für SQLCHAR-, SQLNCHAR- oder SQLBINARY-Daten angegeben wird, geht OPENROWSET(BULK...) davon aus, dass sie 8000 Bytes nicht überschreitet.OPENROWSET(BULK...) assumes that, if not specified, the maximum length of SQLCHAR, SQLNCHAR or SQLBINARY data does not exceed 8000 bytes. Wenn sich die zu importierenden Daten in einem LOB-Datenfeld befinden, das Objekte vom Typ varchar(max) , nvarchar(max) oder varbinary(max) mit mehr als 8000 Bytes enthält, müssen Sie eine XML-Formatdatei verwenden, die die maximale Länge für das Datenfeld definiert.If the data being imported is in a LOB data field that contains any varchar(max), nvarchar(max), or varbinary(max) objects that exceed 8000 bytes, you must use an XML format file that defines the maximum length for the data field. Um die maximale Länge anzugeben, bearbeiten Sie die Formatdatei, und deklarieren Sie das Attribut MAX_LENGTH.To specify the maximum length, edit the format file and declare the MAX_LENGTH attribute.

Hinweis

Bei einer automatisch generierten Formatdatei wird die Länge oder maximale Länge für ein LOB-Feld nicht angeben.An automatically generated format file does not specify the length or maximum length for a LOB field. Sie können eine Formatdatei jedoch bearbeiten und die Länge oder maximale Länge manuell angeben.However, you can edit a format file and specify the length or maximum length manually.

Massenexportieren und -importieren von SQLXML-DokumentenBulk Exporting or Importing SQLXML Documents

Verwenden Sie in der Formatdatei einen der folgenden Datentypen für den Massenexport oder -import von SQLXML-Daten.To bulk export or import SQLXML data, use one of the following data types in your format file.

DatentypData type WirkungEffect
SQLCHAR oder SQLVARYCHARSQLCHAR or SQLVARYCHAR Die Daten werden in der Clientcodepage gesendet bzw. in der durch die Sortierung implizierten Codeseite.The data is sent in the client code page or in the code page implied by the collation).
SQLNCHAR oder SQLNVARCHARSQLNCHAR or SQLNVARCHAR Die Daten werden im Unicode-Format gesendet.The data is sent as Unicode.
SQLBINARY oder SQLVARYBINSQLBINARY or SQLVARYBIN Die Daten werden ohne Konvertierung gesendet.The data is sent without any conversion.

BerechtigungenPermissions

Die OPENROWSET-Berechtigungen für OPENROWSET werden anhand der Berechtigungen des an den OLE DB-Anbieter übergebenen Benutzernamens bestimmt.OPENROWSET permissions are determined by the permissions of the user name that is being passed to the OLE DB provider. Eine ADMINISTER BULK OPERATIONS-Berechtigung ist erforderlich, um die BULK-Option zu verwenden.To use the BULK option requires ADMINISTER BULK OPERATIONS permission.

BeispieleExamples

A.A. Verwenden von OPENROWSET mit SELECT und dem SQL Server Native Client OLE DB-AnbieterUsing OPENROWSET with SELECT and the SQL Server Native Client OLE DB Provider

Im folgenden Beispiel wird der SQL ServerSQL Server Native Client-OLE DB-Anbieter für den Zugriff auf die HumanResources.Department-Tabelle in der AdventureWorks2012AdventureWorks2012-Datenbank auf dem Remoteserver Seattle1 verwendet.The following example uses the SQL ServerSQL Server Native Client OLE DB provider to access the HumanResources.Department table in the AdventureWorks2012AdventureWorks2012 database on the remote server Seattle1. (Wenn Sie SQLNCLI verwenden, leitet SQL ServerSQL Server zur neuesten Version des OLE DB-Anbieters von SQL ServerSQL Server Native Client um.) Mithilfe einer SELECT-Anweisung wird das zurückgegebene Rowset definiert.(Use SQLNCLI and SQL ServerSQL Server will redirect to the latest version of SQL ServerSQL Server Native Client OLE DB Provider.) A SELECT statement is used to define the row set returned. Die Anbieterzeichenfolge enthält die Schlüsselwörter Server und Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Diese Schlüsselwörter werden vom OLE DB-Anbieter von SQL ServerSQL Server Native Client erkannt.These keywords are recognized by the SQL ServerSQL Server Native Client OLE DB provider.

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2012.HumanResources.Department
      ORDER BY GroupName, Name') AS a;

B.B. Verwenden des Microsoft OLE DB-Anbieters für JetUsing the Microsoft OLE DB Provider for Jet

Im folgenden Beispiel wird mithilfe des MicrosoftMicrosoft OLE DB-Anbieters für Jet auf die Customers-Tabelle in der Northwind-Datenbank von MicrosoftMicrosoft Access zugegriffen.The following example accesses the Customers table in the MicrosoftMicrosoft Access Northwind database through the MicrosoftMicrosoft OLE DB Provider for Jet.

Hinweis

In diesem Beispiel wird vorausgesetzt, dass Access installiert ist.This example assumes that Access is installed. Um dieses Beispiel auszuführen, müssen Sie die Northwind-Datenbank installieren.To run this example, you must install the Northwind database.

SELECT CustomerID, CompanyName
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
      'admin';'',Customers);

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

C.C. Verwenden von OPENROWSET und einer weiteren Tabelle in einem INNER JOINUsing OPENROWSET and another table in an INNER JOIN

Im folgenden Beispiel werden alle Daten aus der Customers-Tabelle in der Northwind-Datenbank der lokalen Instanz von SQL ServerSQL Server sowie alle Daten der Orders-Tabelle in der Northwind-Datenbank von Microsoft Access auf demselben Computer ausgewählt.The following example selects all data from the Customers table from the local instance of SQL ServerSQL Server Northwind database and from the Orders table from the Access Northwind database stored on the same computer.

Hinweis

In diesem Beispiel wird vorausgesetzt, dass Access installiert ist.This example assumes that Access is installed. Um dieses Beispiel auszuführen, müssen Sie die Northwind-Datenbank installieren.To run this example, you must install the Northwind database.

USE Northwind;
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
   INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)
   AS o
   ON c.CustomerID = o.CustomerID ;

Wichtig

Azure SQL-DatenbankAzure SQL Database unterstützt das Lesen aus Windows-Dateien nicht.does not support reading from Windows files.

D.D. Verwenden von OPENROWSET zum Masseneinfügen von Dateidaten in eine Spalte vom Typ varbinary(max)Using OPENROWSET to bulk insert file data into a varbinary(max) column

Das folgende Beispiel erstellt eine kleine Tabelle für Demonstrationszwecke und fügt Dateidaten aus der Datei Text1.txt, die im Stammverzeichnis C: gespeichert ist, in eine Spalte vom Datentyp varbinary(max) ein.The following example creates a small table for demonstration purposes, and inserts file data from a file named Text1.txt located in the C: root directory into a varbinary(max) column.

CREATE TABLE myTable(FileName nvarchar(60),
  FileType nvarchar(60), Document varbinary(max));
GO

INSERT INTO myTable(FileName, FileType, Document)
   SELECT
      'Text1.txt' AS FileName
      , '.txt' AS FileType
      , *
   FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document;
GO

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

E.E. Verwenden des OPENROWSET BULK-Anbieters mit einer Formatdatei zum Abrufen von Zeilen aus einer TextdateiUsing the OPENROWSET BULK provider with a format file to retrieve rows from a text file

Im folgenden Beispiel werden mithilfe einer Formatdatei Zeilen aus der durch Tabstopps getrennten Textdatei values.txt abgerufen, die die folgenden Daten enthält:The following example uses a format file to retrieve rows from a tab-delimited text file, values.txt that contains the following data:

1     Data Item 1
2     Data Item 2
3     Data Item 3

Die Formatdatei values.fmt beschreibt die Spalten in values.txt:The format file, values.fmt, describes the columns in values.txt:

9.0
2  
1  SQLCHAR  0  10 "\t"        1  ID                      SQL_Latin1_General_Cp437_BIN
2  SQLCHAR  0  40 "\r\n"      2  Description        SQL_Latin1_General_Cp437_BIN

In der folgenden Abfrage werden diese Daten abgerufen:This is the query that retrieves that data:

SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
   FORMATFILE = 'c:\test\values.fmt') AS a;

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

F.F. Angeben einer Formatdatei und CodepageSpecifying a format file and code page

Im folgenden Beispiel wird gezeigt, wie Sie sowohl die FORMATFILE- als auch die CODEPAGE-Option zur gleichen Zeit verwenden.The following example show how to use both the format file and code page options at the same time.

INSERT INTO MyTable SELECT a.* FROM
OPENROWSET (BULK N'D:\data.csv', FORMATFILE =
    'D:\format_no_collation.txt', CODEPAGE = '65001') AS a;

G.G. Zugriff auf Daten aus einer CSV-Datei mit einer FormatdateiAccessing data from a CSV file with a format file

Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.

SELECT *
FROM OPENROWSET(BULK N'D:\XChange\test-csv.csv',
    FORMATFILE = N'D:\XChange\test-csv.fmt',
    FIRSTROW=2,
    FORMAT='CSV') AS cars;

Wichtig

Azure SQL-DatenbankAzure SQL Database unterstützt das Lesen aus Windows-Dateien nicht.does not support reading from Windows files.

H.H. Zugriff auf Daten aus einer CSV-Datei ohne eine FormatdateiAccessing data from a CSV file without a format file

SELECT * FROM OPENROWSET(
   BULK 'C:\Program Files\Microsoft SQL Server\MSSQL14.CTP1_1\MSSQL\DATA\inv-2017-01-19.csv',
   SINGLE_CLOB) AS DATA;
select *
from openrowset
   (  'MSDASQL'
     ,'Driver={Microsoft Access Text Driver (*.txt, *.csv)}'
     ,'select * from E:\Tlog\TerritoryData.csv')
;

Wichtig

  • Der ODBC-Treiber sollte eine 64-Bit-Treiber sein.The ODBC driver should be 64-bit. Öffnen Sie die Registerkarte Treiber der Anwendung ODBC-Datenquellen in Windows, um dies zu bestätigen.Open the Drivers tab of the OBDC Data Sources application in Windows to verify this. Es gibt einen 32-Bit-Microsoft Text Driver (*.txt, *.csv), der nicht mit einer 64-Bit-Version von „sqlservr.exe“ funktioniert.There is 32-bit Microsoft Text Driver (*.txt, *.csv) that will not work with a 64-bit version of sqlservr.exe.
  • Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

I.I. Zugriff auf Daten aus einer in Azure Blob Storage gespeicherten DateiAccessing data from a file stored on Azure Blob storage

Gilt für: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Im folgenden Beispiel wird eine externe Datenquelle verwendet, die auf einen Container im Azure-Speicherkonto und auf für SAS erstellte datenbankweit gültige Anmeldeinformationen verweist.The following example uses an external data source that points to a container in an Azure storage account and a database scoped credential created for a shared access signature.

SELECT * FROM OPENROWSET(
   BULK 'inv-2017-01-19.csv',
   DATA_SOURCE = 'MyAzureInvoices',
   SINGLE_CLOB) AS DataFile;

Vollständige OPENROWSET-Beispiele einschließlich der Konfiguration der Anmeldeinformation und externen Datenquelle finden Sie unter Beispiele für Massenzugriff auf Daten in Azure Blob Storage.For complete OPENROWSET examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

J.J. Importieren aus einer in Azure Blob Storage gespeicherten Datei in eine TabelleImporting into a table from a file stored on Azure Blob storage

Das folgende Beispiel zeigt, wie Daten mithilfe des OPENROWSET-Befehls aus einer CSV-Datei in einen Speicherort von Azure Blob Storage geladen werden, für den Sie einen SAS-Schlüssel erstellt haben.The following example shows how to use the OPENROWSET command to load data from a csv file in an Azure Blob storage location on which you have created a SAS key. Der Speicherort von Azure Blob Storage wird als externe Datenquelle konfiguriert.The Azure Blob storage location is configured as an external data source. Hierfür sind datenbankweit gültige Anmeldeinformationen mit Shared Access Signature (SAS) erforderlich, die mit einem Hauptschlüssel in der Benutzerdatenbank verschlüsselt ist.This requires a database scoped credential using a shared access signature that is encrypted using a master key in the user database.

--> Optional - a MASTER KEY is not requred if a DATABASE SCOPED CREDENTIAL is not required because the blob is configured for public (anonymous) access!
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrongPassword1';
GO
--> Optional - a DATABASE SCOPED CREDENTIAL is not required because the blob is configured for public (anonymous) access!
CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************';

 -- NOTE: Make sure that you don't have a leading ? in SAS token, and
 -- that you have at least read permission on the object that should be loaded srt=o&sp=r, and
 -- that expiration period is valid (all dates are in UTC time)

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
          LOCATION = 'https://****************.blob.core.windows.net/curriculum'
          , CREDENTIAL= MyAzureBlobStorageCredential --> CREDENTIAL is not required if a blob is configured for public (anonymous) access!
);

INSERT INTO achievements with (TABLOCK) (id, description)
SELECT * FROM OPENROWSET(
   BULK  'csv/achievements.csv',
   DATA_SOURCE = 'MyAzureBlobStorage',
   FORMAT ='CSV',
   FORMATFILE='csv/achievements-c.xml',
   FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage'
    ) AS DataFile;

Wichtig

Das Lesen aus Windows-Dateien wird von Azure SQL-Datenbank nicht unterstützt.Azure SQL Database does not support reading from Windows files.

Zusätzliche BeispieleAdditional Examples

Zusätzliche Beispiele für die Verwendung von INSERT...SELECT * FROM OPENROWSET(BULK...) finden Sie in den folgenden Themen:For additional examples that show using INSERT...SELECT * FROM OPENROWSET(BULK...), see the following topics:

Weitere InformationenSee Also