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

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Include tutte le informazioni di connessione necessarie per l'accesso remoto ai dati da un'origine dati OLE DB.Includes all connection information that is required to access remote data from an OLE DB data source. Si tratta di un metodo alternativo per l'accesso alle tabelle di un server collegato e corrisponde a un metodo ad hoc eseguito una sola volta per la connessione e l'accesso ai dati remoti tramite 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. Per ottenere riferimenti più frequenti alle origini dati OLE DB, utilizzare server collegati.For more frequent references to OLE DB data sources, use linked servers instead. Per altre informazioni, vedere Server collegati (Motore di database).For more information, see Linked Servers (Database Engine). Il OPENROWSET funzione può essere fatto riferimento nella clausola FROM di una query come se fosse un nome di tabella.The OPENROWSET function can be referenced in the FROM clause of a query as if it were a table name. Il OPENROWSET funzione inoltre possibile farvi riferimento come tabella di destinazione di un INSERT, UPDATE, o DELETE istruzione, a seconda delle capacità del provider OLE DB.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. Anche se la query potrebbe restituire più set di risultati, OPENROWSET restituisce solo il primo.Although the query might return multiple result sets, OPENROWSET returns only the first one.

OPENROWSETsupporta inoltre operazioni bulk tramite un provider BULK predefinito che consente di dati da un file di essere letti e restituiti come un set di righe.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.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax


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' ]   

ArgomentiArguments

'provider_name''provider_name'
Stringa di caratteri che rappresenta il nome descrittivo (o PROGID) del provider OLE DB specificato nel Registro di sistema.Is a character string that represents the friendly name (or PROGID) of the OLE DB provider as specified in the registry. provider_name nessun valore predefinito.provider_name has no default value.

'datasource''datasource'
Costante stringa che corrisponde a un'origine dati OLE DB specifica.Is a string constant that corresponds to a particular OLE DB data source. origine dati è la proprietà DBPROP_INIT_DATASOURCE da passare all'interfaccia IDBProperties del provider per inizializzare il provider.datasource is the DBPROP_INIT_DATASOURCE property to be passed to the IDBProperties interface of the provider to initialize the provider. In genere questa stringa include il nome del file di database, il nome di un server di database o un nome riconosciuto dal provider per individuare il database o i database.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''user_id'
Costante stringa che rappresenta il nome utente passato al provider OLE DB specificato.Is a string constant that is the user name passed to the specified OLE DB provider. USER_ID specifica il contesto di sicurezza per la connessione e viene passato come proprietà DBPROP_AUTH_USERID per l'inizializzazione del provider.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 non può essere un nome di account di accesso di Microsoft Windows.user_id cannot be a Microsoft Windows login name.

'password''password'
Costante stringa che rappresenta la password utente da passare al provider OLE DB.Is a string constant that is the user password to be passed to the OLE DB provider. password viene passato come proprietà DBPROP_AUTH_PASSWORD durante l'inizializzazione del provider.password is passed in as the DBPROP_AUTH_PASSWORD property when initializing the provider. password non può essere una password di Microsoft Windows.password cannot be a Microsoft Windows password.

'provider_string''provider_string'
Stringa di connessione specifica del provider passata come proprietà DBPROP_INIT_PROVIDERSTRING per l'inizializzazione del provider OLE DB.Is a provider-specific connection string that is passed in as the DBPROP_INIT_PROVIDERSTRING property to initialize the OLE DB provider. provider_string in genere incapsula tutte le informazioni di connessione necessarie per inizializzare il provider.provider_string typically encapsulates all the connection information required to initialize the provider. Per un elenco di parole chiave riconosciute dal SQL ServerSQL Server provider OLE DB Native Client, vedere proprietà di inizializzazione e autorizzazione.For a list of keywords that are recognized by the SQL ServerSQL Server Native Client OLE DB provider, see Initialization and Authorization Properties.

catalogocatalog
Nome del catalogo o database contenente l'oggetto specificato.Is the name of the catalog or database in which the specified object resides.

schemaschema
Nome dello schema o proprietario dell'oggetto specificato.Is the name of the schema or object owner for the specified object.

oggettoobject
Nome dell'oggetto che identifica in modo univoco l'oggetto da utilizzare.Is the object name that uniquely identifies the object to work with.

'query''query'
Costante stringa inviata al provider ed eseguita da questo.Is a string constant sent to and executed by the provider. L'istanza locale di SQL ServerSQL Server non elabora questa query, ma i risultati della query restituiti dal provider (query pass-through).The local instance of SQL ServerSQL Server does not process this query, but processes query results returned by the provider, a pass-through query. Le query pass-through risultano utili quando vengono utilizzate in provider che non espongono i dati tabulari tramite i nomi di tabella, ma solo attraverso un linguaggio di comando.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. Query pass-through sono supportate nel server remoto, fino a quando il provider di query supporta l'oggetto comando OLE DB e le relative interfacce obbligatorie.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. Per ulteriori informazioni, vedere OLE DB Native Client di SQL Server ( ) Riferimento.For more information, see SQL Server Native Client (OLE DB) Reference.

BULKBULK
Utilizza il provider BULK per set di righe per OPENROWSET per leggere i dati da un file.Uses the BULK rowset provider for OPENROWSET to read data from a file. In SQL ServerSQL Server, OPENROWSET è in grado di leggere da un file di dati senza caricare i dati in una tabella di destinazione.In SQL ServerSQL Server, OPENROWSET can read from a data file without loading the data into a target table. Ciò consente di utilizzare OPENROWSET con un'istruzione SELECT semplice.This lets you use OPENROWSET with a simple SELECT statement.

Gli argomenti dell'opzione BULK consentono un controllo significativo su dove iniziare e terminare la lettura dei dati, come gestire gli errori e come interpretare i dati.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. Ad esempio, è possibile specificare che il file di dati venga letto come un set di righe a riga singola e una sola colonna di tipo varbinary, varchar, o nvarchar.For example, you can specify that the data file be read as a single-row, single-column rowset of type varbinary, varchar, or nvarchar. Il comportamento predefinito viene illustrato nelle descrizioni degli argomenti seguenti.The default behavior is described in the argument descriptions that follow.

Per informazioni sull'utilizzo dell'opzione BULK, vedere la sezione "Osservazioni" di seguito in questo argomento.For information about how to use the BULK option, see "Remarks," later in this topic. Per informazioni sulle autorizzazioni necessarie per l'opzione BULK, vedere la sezione "Autorizzazioni" di seguito in questo argomento.For information about the permissions that are required by the BULK option, see "Permissions," later in this topic.

Nota

Quando utilizzata per importare i dati con il modello di recupero con registrazione completa, OPENROWSET (BULK ...) non ottimizza la registrazione.When used to import data with the full recovery model, OPENROWSET (BULK ...) does not optimize logging.

Per informazioni sulla preparazione dei dati per l'importazione bulk, vedere preparazione dei dati per l'esportazione Bulk o importazione ( SQL Server ) .For information on preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

'data_file''data_file'
Percorso completo del file di dati i cui dati devono essere copiati nella tabella di destinazione.Is the full path of the data file whose data is to be copied into the target table.
Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
A partire da SQL Server 2017SQL Server 2017 CTP 1.1, il data_file può essere nell'archiviazione BLOB di Azure.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, the data_file can be in Azure blog storage. Per esempi, vedere esempi di massa di accesso ai dati nell'archiviazione Blob di Azure.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

<bulk_options ><bulk_options>
Specifica uno o più argomenti per l'opzione BULK.Specifies one or more arguments for the BULK option.

CODEPAGE = {"ACP" | "OEM" | 'NON ELABORATI' | code_page'}CODEPAGE = { 'ACP'| 'OEM'| 'RAW'| 'code_page' }
Specifica la tabella codici dei dati contenuti nel file di dati.Specifies the code page of the data in the data file. CODEPAGE è rilevante solo se i dati contengono char, varchar, o testo colonne con valori di carattere maggiori di 127 o minori di 32.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values more than 127 or less than 32.

Nota

È consigliabile specificare un nome di regole di confronto per ogni colonna in un file di formato tranne quando si desidera che l'hanno la priorità sulla specifica pagina regole di confronto o codice all'opzione 65001.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.

Valore CODEPAGECODEPAGE value DescriptionDescription
ACPACP Converte le colonne di char, varchar, o testo tipo di dati da ANSI / MicrosoftMicrosoft codici di Windows (ISO 1252) per il SQL ServerSQL Server codici.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 (predefinito)OEM (default) Converte le colonne di char, varchar, o testo il tipo di dati dalla tabella codici OEM di sistema per il SQL ServerSQL Server codici.Converts columns of char, varchar, or text data type from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW Non vengono eseguite conversioni tra tabelle codici.No conversion occurs from one code page to another. Si tratta dell'opzione più rapida.This is the fastest option.
code_pagecode_page Indica la tabella codici di origine in cui vengono codificati i dati di tipo carattere del file di dati, ad esempio 850.Indicates the source code page on which the character data in the data file is encoded; for example, 850.

**Importante * \* versioni precedenti a SQL Server 2016SQL Server 2016 non supportano la tabella codici 65001 (codifica UTF-8).** Important *\* Versions prior to SQL Server 2016SQL Server 2016 do not support code page 65001 (UTF-8 encoding).

ERRORFILE ='file_name'ERRORFILE ='file_name'
Specifica il file utilizzato per raccogliere le righe che contengono errori di formattazione e non possono essere convertite in un set di righe OLE DB.Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. Tali righe vengono copiate nel file degli errori dal file di dati così come sono.These rows are copied into this error file from the data file "as is."

Il file di errori viene creato all'inizio dell'esecuzione del comando.The error file is created at the start of the command execution. Se il file esiste già viene generato un errore.An error will be raised if the file already exists. Viene inoltre creato un file di controllo con estensione ERROR.txt.Additionally, a control file that has the extension .ERROR.txt is created. Questo file contiene un riferimento a ogni riga nel file degli errori e fornisce informazioni di diagnostica.This file references each row in the error file and provides error diagnostics. Dopo la correzione degli errori, i dati possono essere caricati.After the errors have been corrected, the data can be loaded.
Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. A partire da SQL Server 2017SQL Server 2017, error_file_path può trovarsi in archiviazione BLOB di Azure.Beginning with SQL Server 2017SQL Server 2017, the error_file_path can be in Azure blog storage.

'errorfile_data_source_name''errorfile_data_source_name'
Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1. Un'origine dati esterna denominata che punta al percorso di archiviazione Blob di Azure che conterrà gli errori rilevati durante l'importazione degli errori.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. L'origine dati esterna deve essere creata usando il TYPE = BLOB_STORAGE opzione aggiunto in SQL Server 2017SQL Server 2017 CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017SQL Server 2017 CTP 1.1. Per ulteriori informazioni, vedere CREATE EXTERNAL DATA SOURCE.For more information, see CREATE EXTERNAL DATA SOURCE.

FIRSTROW =first_rowFIRSTROW =first_row
Specifica il numero della prima riga da caricare.Specifies the number of the first row to load. Il valore predefinito è 1.The default is 1. Questo valore indica la prima riga nel file di dati specificato.This indicates the first row in the specified data file. I numeri di riga sono determinati dal conteggio dei caratteri di terminazione.The row numbers are determined by counting the row terminators. FIRSTROW è in base 1.FIRSTROW is 1-based.

LASTROW =last_rowLASTROW =last_row
Specifica il numero dell'ultima riga da caricare.Specifies the number of the last row to load. Il valore predefinito è 0.The default is 0. Questo valore indica l'ultima riga nel file di dati specificato.This indicates the last row in the specified data file.

MAXERRORS =maximum_errorsMAXERRORS =maximum_errors
Specifica il numero massimo di errori di sintassi o righe non conformi, definite nel file di formato, che possono verificarsi prima che OPENROWSET generi un'eccezione.Specifies the maximum number of syntax errors or nonconforming rows, as defined in the format file, that can occur before OPENROWSET throws an exception. Fino al raggiungimento di MAXERRORS, OPENROWSET ignora ogni riga non conforme, non caricandola, e conteggia la riga non conforme come un errore.Until MAXERRORS is reached, OPENROWSET ignores each bad row, not loading it, and counts the bad row as one error.

Il valore predefinito per maximum_errors è 10.The default for maximum_errors is 10.

Nota

MAX_ERRORS non si applica ai vincoli CHECK o alla conversione money e bigint tipi di dati.MAX_ERRORS does not apply to CHECK constraints, or to converting money and bigint data types.

ROWS_PER_BATCH =rows_per_batchROWS_PER_BATCH =rows_per_batch
Specifica il numero approssimativo di righe di dati nel file di dati.Specifies the approximate number of rows of data in the data file. Questo valore deve essere dello stesso ordine del numero effettivo di righe.This value should be of the same order as the actual number of rows.

OPENROWSET importa sempre un file di dati come batch singolo.OPENROWSET always imports a data file as a single batch. Tuttavia, se si specifica rows_per_batch con un valore > 0, query processor utilizza il valore di rows_per_batch come hint per allocare risorse nel piano di query.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.

Per impostazione predefinita, il valore ROWS_PER_BATCH è sconosciuto.By default, ROWS_PER_BATCH is unknown. La specifica di ROWS_PER_BATCH = 0 equivale all'omissione di ROWS_PER_BATCH.Specifying ROWS_PER_BATCH = 0 is the same as omitting ROWS_PER_BATCH.

ORDINE ({ colonna [ASC | DESC]} [,... n ] [UNIQUE])ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] )
Hint facoltativo che specifica il modo in cui vengono ordinati i dati nel file di dati.An optional hint that specifies how the data in the data file is sorted. Per impostazione predefinita, per l'operazione bulk si presume che il file di dati non sia ordinato.By default, the bulk operation assumes the data file is unordered. Se l'ordine specificato può essere sfruttato da Query Optimizer per generare un piano di query più efficiente, le prestazioni possono migliorare.Performance might improve if the order specified can be exploited by the query optimizer to generate a more efficient query plan. Di seguito vengono riportati alcuni esempi di situazioni in cui può essere utile specificare l'ordinamento:Examples for when specifying a sort can be beneficial include the following:

  • Inserimento di righe in una tabella con un indice cluster, in cui i dati del set di righe sono ordinati in base alla chiave dell'indice cluster.Inserting rows into a table that has a clustered index, where the rowset data is sorted on the clustered index key.

  • Unione del set di righe con un'altra tabella, in cui le colonne di ordinamento e di join corrispondono.Joining the rowset with another table, where the sort and join columns match.

  • Aggregazione dei dati del set di righe tramite le colonne dell'ordinamento.Aggregating the rowset data by the sort columns.

  • Utilizzo del set di righe come tabella di origine nella clausola FROM di una query, in cui le colonne di ordinamento e di join corrispondono.Using the rowset as a source table in the FROM clause of a query, where the sort and join columns match.

    UNIQUE specifica che il file di dati non ha voci duplicate.UNIQUE specifies that the data file does not have duplicate entries.

    Se le righe effettive del file di dati non sono ordinate in base all'ordine specificato o se l'hint UNIQUE viene specificato e sono presenti chiavi duplicate, viene restituito un errore.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.

    Gli alias di colonna sono richiesti quando si utilizza ORDER.Column aliases are required when ORDER is used. L'elenco di alias di colonna deve fare riferimento alla tabella derivata a cui è possibile accedere tramite la clausola BULK.The column alias list must reference the derived table that is being accessed by the BULK clause. I nomi di colonna specificati nella clausola ORDER si riferiscono a questo elenco di alias di colonna.The column names that are specified in the ORDER clause refer to this column alias list. Tipi di valori di grandi dimensioni (varchar (max), nvarchar (max), varbinary (max), e xml) e i tipi LOB (large object) (testo, ntext, e immagine) non è possibile specificare le colonne.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_BLOBSINGLE_BLOB
    Restituisce il contenuto di data_file come un set di righe a riga singola e una sola colonna di tipo varbinary (max).Returns the contents of data_file as a single-row, single-column rowset of type varbinary(max).

Importante

Per l'importazione di dati XML è consigliabile utilizzare solo l'opzione SINGLE_BLOB anziché SINGLE_CLOB e SINGLE_NCLOB, in quanto solo SINGLE_BLOB supporta tutti i tipi di conversione di codifica di Windows.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
Leggendo data_file come ASCII, restituisce il contenuto come set di righe a riga singola e una sola colonna di tipo varchar (max), utilizzando le regole di confronto del database corrente.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_NCLOBSINGLE_NCLOB
Leggendo data_file come UNICODE, restituisce il contenuto come set di righe a riga singola e una sola colonna di tipo nvarchar (max), utilizzando le regole di confronto del database corrente.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.

Opzioni di formato di file di inputInput file format options

FORMATO = 'CSV'FORMAT = 'CSV'
Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
Specifica un file di valori separati da virgole conforme il RFC 4180 standard.Specifies a comma separated values file compliant to the RFC 4180 standard.

FORMATFILE ='format_file_path'FORMATFILE ='format_file_path'
Specifica il percorso completo di un file di formato.Specifies the full path of a format file. SQL ServerSQL Server supporta due tipi di file di formato, ovvero XML e non XML. supports two types of format files: XML and non-XML.

Un file di formato è necessario per definire i tipi di colonna nel set di risultati.A format file is required to define column types in the result set. L'unica eccezione si verifica quando viene specificato SINGLE_CLOB, SINGLE_BLOB o SINGLE_NCLOB. In questo caso, il file di formato non è necessario.The only exception is when SINGLE_CLOB, SINGLE_BLOB, or SINGLE_NCLOB is specified; in which case, the format file is not required.

Per informazioni sui file di formato, vedere utilizzare un File di formato per l'importazione Bulk dei dati ( SQL Server ) .For information about format files, see Use a Format File to Bulk Import Data (SQL Server).

Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
A partire da SQL Server 2017SQL Server 2017 CTP 1.1, il format_file_path può essere nell'archiviazione BLOB di Azure.Beginning with SQL Server 2017SQL Server 2017 CTP 1.1, the format_file_path can be in Azure blog storage. Per esempi, vedere esempi di massa di accesso ai dati nell'archiviazione Blob di Azure.For examples, see Examples of Bulk Access to Data in Azure Blob Storage.

FIELDQUOTE = 'field_quote'FIELDQUOTE = 'field_quote'
Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
Specifica un carattere che verrà utilizzato come carattere di virgolette nel file CSV.Specifies a character that will be used as the quote character in the CSV file. Se non specificato, il carattere virgoletta (") da utilizzare come carattere di virgolette come definito nel RFC 4180 standard.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

OsservazioniRemarks

OPENROWSETpuò essere utilizzato per accedere ai dati remoti da OLE DB solo quando le origini dati di DisallowAdhocAccess opzione del Registro di sistema è impostata esplicitamente su 0 per il provider specificato e Ad Hoc Distributed Queries opzione di configurazione avanzata è abilitata.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. Quando queste opzioni non vengono impostate, il comportamento predefinito non consente l'accesso ad hoc.When these options are not set, the default behavior does not allow for ad hoc access.

Quando si accede alle origini dati OLE DB remote, l'identità dell'account di accesso delle connessioni trusted non viene delegata automaticamente dal server in cui il client è connesso al server su cui viene eseguita la query.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. È necessario configurare la delega dell'autenticazione.Authentication delegation must be configured.

Se il provider OLE DB supporta più cataloghi e schemi nell'origine dati specificata, è necessario specificare i nomi di catalogo e di schema.Catalog and schema names are required if the OLE DB provider supports multiple catalogs and schemas in the specified data source. I valori del parametro catalogo e schema può essere omessa quando il provider OLE DB non li supporta.Values for catalog and schema can be omitted when the OLE DB provider does not support them. Se il provider supporta solo nomi di schema, un nome in due parti nel formato schema. oggetto deve essere specificato.If the provider supports only schema names, a two-part name of the form schema.object must be specified. Se il provider supporta solo nomi di catalogo, un nome in tre parti nel formato catalogo. schema. oggetto deve essere specificato.If the provider supports only catalog names, a three-part name of the form catalog.schema.object must be specified. È necessario specificare nomi composti da tre parti per le query pass-through che utilizzano il SQL ServerSQL Server provider OLE DB Native Client.Three-part names must be specified for pass-through queries that use the SQL ServerSQL Server Native Client OLE DB provider. Per ulteriori informazioni, vedere convenzioni della sintassi Transact-SQL ( Transact-SQL ) .For more information, see Transact-SQL Syntax Conventions (Transact-SQL).

OPENROWSETnon accetta variabili come argomenti.OPENROWSET does not accept variables for its arguments.

Qualsiasi chiamata a OPENDATASOURCE, OPENQUERY, o OPENROWSET nel FROM clausola viene valutata separatamente e in modo indipendente da qualsiasi altra chiamata a queste funzioni utilizzate come destinazione dell'aggiornamento, anche se alle due chiamate vengono forniti argomenti identici.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. In particolare, le condizioni di filtro o join applicate al risultato di una di tali chiamate non hanno effetto sui risultati dell'altra.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.

Utilizzo di OPENROWSET con l'opzione BULKUsing OPENROWSET with the BULK Option

I miglioramenti seguenti apportati a Transact-SQLTransact-SQL offrono il supporto per la funzione OPENROWSET(BULK…):The following Transact-SQLTransact-SQL enhancements support the OPENROWSET(BULK...) function:

  • Una clausola FROM utilizzata con SELECT può chiamare OPENROWSET(BULK...) anziché un nome di tabella, come con full SELECT funzionalità.A FROM clause that is used with SELECT can call OPENROWSET(BULK...) instead of a table name, with full SELECT functionality.

    OPENROWSETcon il BULK richiede un nome di correlazione, noto anche come una variabile di intervallo o l'alias, nel FROM clausola.OPENROWSET with the BULK option requires a correlation name, also known as a range variable or alias, in the FROM clause. È possibile specificare alias di colonne.Column aliases can be specified. Se non è specificato un elenco di alias di colonna, il file di formato deve contenere nomi di colonna.If a column alias list is not specified, the format file must have column names. Se si specificano gli alias di colonna, i nomi di colonna nel file di formato vengono sostituiti, ad esempio: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)

    Importante

    Impossibile aggiungere il AS <table_alias> comporterà l'errore:Failure to add the AS <table_alias> will result in the error:
    Messaggio 491, livello 16, stato 1, riga 20Msg 491, Level 16, State 1, Line 20
    Specificare il nome della correlazione per il set di righe con lettura bulk nella clausola FROM.A correlation name must be specified for the bulk rowset in the from clause.

  • Oggetto SELECT...FROM OPENROWSET(BULK...) istruzione esegue query i dati in un file direttamente, senza importare i dati in una tabella.A SELECT...FROM OPENROWSET(BULK...) statement queries the data in a file directly, without importing the data into a table. SELECT…FROM OPENROWSET(BULK...)le istruzioni possono anche di elencare alias di colonna bulk utilizzando un file di formato per specificare i nomi di colonna e tipi di dati.SELECT…FROM OPENROWSET(BULK...) statements can also list bulk-column aliases by using a format file to specify column names, and also data types.

  • Utilizzando OPENROWSET(BULK...) come una tabella di origine in un INSERT o MERGE importazioni bulk di istruzione di dati da un file di dati in un SQL ServerSQL Server tabella.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. Per ulteriori informazioni, vedere importazione Bulk dei dati per l'utilizzo di BULK INSERT o OPENROWSET ( BULK... ) ( SQL Server ) .For more information, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server) .

  • Quando il OPENROWSET BULK opzione viene utilizzata con un INSERT istruzione, la clausola BULK supporta gli hint di tabella.When the OPENROWSET BULK option is used with an INSERT statement, the BULK clause supports table hints. Oltre alle normali hint di tabella, ad esempio TABLOCK, BULK clausola può accettare gli hint di tabella specializzati seguenti: IGNORE_CONSTRAINTS (ignora solo il CHECK e FOREIGN KEY vincoli), IGNORE_TRIGGERS, KEEPDEFAULTS, e 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. Per altre informazioni, vedere Hint di tabella (Transact-SQL).For more information, see Table Hints (Transact-SQL).

    Per informazioni su come usare INSERT...SELECT * FROM OPENROWSET(BULK...) istruzioni, vedere importazione in blocco e l'esportazione di dati ( SQL Server ) .For information about how to use INSERT...SELECT * FROM OPENROWSET(BULK...) statements, see Bulk Import and Export of Data (SQL Server). Per informazioni sui casi in cui le operazioni di inserimento di righe eseguite durante l'importazione in blocco vengono registrate nel log delle transazioni, vedere Prerequisiti per la registrazione minima nell'importazione in blocco.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.

Nota

Quando si utilizza OPENROWSET, è importante comprendere come SQL ServerSQL Server gestisce la rappresentazione.When you use OPENROWSET, it is important to understand how SQL ServerSQL Server handles impersonation. Per informazioni sulle considerazioni relative alla sicurezza, vedere importazione Bulk dei dati per l'utilizzo di BULK INSERT o OPENROWSET ( BULK... ) ( SQL Server ) .For information about security considerations, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

Importazione bulk di dati SQLCHAR, SQLNCHAR o SQLBINARYBulk Importing SQLCHAR, SQLNCHAR or SQLBINARY Data

OPENROWSET(BULK...) presuppone che, se non è specificata, la lunghezza massima dei dati SQLCHAR, SQLNCHAR o SQLBINARY non supera 8000 byte.OPENROWSET(BULK...) assumes that, if not specified, the maximum length of SQLCHAR, SQLNCHAR or SQLBINARY data does not exceed 8000 bytes. Se i dati da importare in un campo di dati LOB contenente qualsiasi varchar (max), nvarchar (max), o varbinary (max) gli oggetti che superano 8000 byte, è necessario utilizzare un File di formato XML che definisce la lunghezza massima per il campo dei dati.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. Per specificare la lunghezza massima, modificare il file di formato dichiarando l'attributo MAX_LENGTH.To specify the maximum length, edit the format file and declare the MAX_LENGTH attribute.

Nota

Un file di formato generato automaticamente non specifica la lunghezza o la lunghezza massima per un campo di tipo LOB.An automatically generated format file does not specify the length or maximum length for a LOB field. Tuttavia, è possibile modificare un file di formato e specificare la lunghezza o la lunghezza massima manualmente.However, you can edit a format file and specify the length or maximum length manually.

Esportazione o importazione bulk di documenti SQLXMLBulk Exporting or Importing SQLXML Documents

Per l'esportazione o l'importazione bulk di dati SQLXML, utilizzare uno dei tipi di dati seguenti nel file di formato.To bulk export or import SQLXML data, use one of the following data types in your format file.

Tipo di datiData type EffettoEffect
SQLCHAR o SQLVARYCHARSQLCHAR or SQLVARYCHAR I dati vengono inviati nella tabella codici del client o nella tabella codici implicita delle regole di confronto.The data is sent in the client code page or in the code page implied by the collation).
SQLNCHAR o SQLNVARCHARSQLNCHAR or SQLNVARCHAR I dati vengono inviati in formato Unicode.The data is sent as Unicode.
SQLBINARY o SQLVARYBINSQLBINARY or SQLVARYBIN I dati vengono inviati senza conversione.The data is sent without any conversion.

PermissionsPermissions

OPENROWSETle autorizzazioni sono determinate dalle autorizzazioni del nome utente che viene passato al provider OLE DB.OPENROWSET permissions are determined by the permissions of the user name that is being passed to the OLE DB provider. Utilizzare il BULK opzione richiede ADMINISTER BULK OPERATIONS autorizzazione.To use the BULK option requires ADMINISTER BULK OPERATIONS permission.

EsempiExamples

A.A. Utilizzo di OPENROWSET con SELECT e il provider OLE DB di SQL Server Native ClientUsing OPENROWSET with SELECT and the SQL Server Native Client OLE DB Provider

L'esempio seguente usa il SQL ServerSQL Server provider OLE DB Native Client per accedere il HumanResources.Department tabella il AdventureWorks2012AdventureWorks2012 database nel server remoto Seattle1.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. (L'utilizzo di SQLNCLI e SQL ServerSQL Server reindirizza alla versione più recente del provider OLE DB per SQL ServerSQL Server Native Client.) Viene utilizzata un'istruzione SELECT per definire il set di righe restituito.(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. La stringa del provider contiene le parole chiave Server e Trusted_Connection.The provider string contains the Server and Trusted_Connection keywords. Queste parole chiave sono riconosciute dal SQL ServerSQL Server provider OLE DB Native Client.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. Utilizzo del provider Microsoft OLE DB per JetUsing the Microsoft OLE DB Provider for Jet

Nell'esempio seguente viene ottenuto l'accesso alla tabella Customers del database Northwind di MicrosoftMicrosoft Access tramite il provider MicrosoftMicrosoft OLE DB per Jet.The following example accesses the Customers table in the MicrosoftMicrosoft Access Northwind database through the MicrosoftMicrosoft OLE DB Provider for Jet.

Nota

Nell'esempio si presuppone che Access sia installato.This example assumes that Access is installed. Per eseguire questo esempio, è necessario installare il database Northwind.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);  
GO  

C.C. Utilizzo di OPENROWSET e di un'altra tabella in un INNER JOINUsing OPENROWSET and another table in an INNER JOIN

L'esempio seguente seleziona tutti i dati di Customers tabella dall'istanza locale di SQL ServerSQL Server Northwind database e dal Orders tabella dall'accesso Northwind database archiviato nello stesso computer.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.

Nota

Nell'esempio si presuppone che Access sia installato.This example assumes that Access is installed. Per eseguire questo esempio, è necessario installare il database Northwind.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 ;  
GO  

D.D. Utilizzo di OPENROWSET per eseguire un inserimento bulk dei dati del file in una colonna varbinary(max).Using OPENROWSET to bulk insert file data into a varbinary(max) column

Nell'esempio seguente viene creata una tabella di piccole dimensioni a titolo dimostrativo e vengono quindi inseriti i dati di un file denominato Text1.txt archiviato nella directory radice C: in una colonna varbinary(max).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.

USE AdventureWorks2012;  
GO  
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  

E.E. Utilizzo del provider OPENROWSET BULK con un file di formato per recuperare le righe da un file di testoUsing the OPENROWSET BULK provider with a format file to retrieve rows from a text file

Nell'esempio seguente viene utilizzato un file di formato per recuperare le righe da un file di testo delimitato da tabulazioni, values.txt contenente i dati seguenti: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  

Il file di formato, values.fmt, descrive le colonne 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  

Di seguito è illustrata la query che recupera tali dati:This is the query that retrieves that data:

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

F.F. Specificare una pagina di codice e file di formatoSpecifying a format file and code page

Nell'esempio seguente viene illustrato come utilizzare entrambi i file di codice pagina Opzioni di formato nello stesso momento.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. L'accesso ai dati da un file CSV con un file di formatoAccessing data from a CSV file with a format file

Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 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;  

H.H. L'accesso ai dati da un file CSV senza un file di formatoAccessing 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;

I.I. Accesso ai dati da un file archiviato in archiviazione Blob di AzureAccessing data from a file stored on Azure Blob storage

Si applica a: SQL Server 2017SQL Server 2017 CTP 1.1.Applies to: SQL Server 2017SQL Server 2017 CTP 1.1.
L'esempio seguente usa un'origine dati esterna che punta a un contenitore in un account di archiviazione di Azure e le credenziali con ambito database creato per una firma di accesso condiviso.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;

Per completare OPENROWSET esempi inclusi la configurazione di credenziali e l'origine dati esterna, vedere esempi di massa di accesso ai dati nell'archiviazione Blob di Azure.For complete OPENROWSET examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

Esempi aggiuntiviAdditional Examples

Per ulteriori esempi che illustrano l'utilizzo INSERT...SELECT * FROM OPENROWSET(BULK...), vedere gli argomenti seguenti:For additional examples that show using INSERT...SELECT * FROM OPENROWSET(BULK...), see the following topics:

Vedere ancheSee Also

DELETE (Transact-SQL) DELETE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Informazioni sull'importazione ed esportazione in blocco di dati (SQL Server) Bulk Import and Export of Data (SQL Server)
INSERT (Transact-SQL) INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL) OPENDATASOURCE (Transact-SQL)
OPENQUERY ( Transact-SQL ) OPENQUERY (Transact-SQL)
Funzioni rowset ( Transact-SQL ) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_serveroption ( Transact-SQL ) sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)
IN ( Transact-SQL )WHERE (Transact-SQL)