OPENROWSET (Transact-SQL)
Zawiera wszystkie informacje o połączeniu, które są wymagane do dostępu dane zdalne ze urządzenie źródłowe danych OLE DB.Ta metoda jest alternatywą do uzyskania dostępu do tabel serwer połączony i jest jednorazowa, ad hoc metodą łączenia się i uzyskiwanie dostępu do zdalnych danych za pomocą OLE DB.Do częstszego odwołania do źródła danych OLE DB należy użyć połączonych serwerów.Aby uzyskać więcej informacji zobaczLinking Servers.Funkcja OPENROWSET można odwoływać się w klauzula FROM kwerendy, tak jakby był on nazwę tabela.Funkcja OPENROWSET można także odwoływać się w tabela miejsce docelowe INSERT, UPDATE, lub DELETE instrukcja podlegających funkcje dostawca OLE DB.Mimo że kwerenda może zwracać wiele zestawów wyników, OPENROWSET zwraca tylko pierwszy z nich.
OPENROWSET obsługuje także operacje zbiorcze przez dostawca BULK wbudowanych, umożliwiający dane z pliku do odczytu i zwracane w postaci zestawu zestaw wierszy.
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' } ]
[ , ERRORFILE = 'file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH = rows_per_batch ]
[ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ]
Argumenty
'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 has no default value.'datasource'
Is a string constant that corresponds to a particular OLE DB data source.datasource is the DBPROP_INIT_DATASOURCE property to be passed to the IDBProperties interface of the provider to initialize the provider.Zazwyczaj ten ciąg zawiera nazwę plik bazy danych, nazwę serwera bazy danych lub nazwy, która rozumie, aby zlokalizować bazę danych i baz danych dostawca.'user_id'
Is a string constant that is the user name passed to the specified OLE DB 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 cannot be a Microsoft Windows login name.'password'
Is a string constant that is the user password to be passed to the OLE DB provider.password is passed in as the DBPROP_AUTH_PASSWORD property when initializing the provider.password cannot be a Microsoft Windows password.'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 typically encapsulates all the connection information required to initialize the provider.Aby uzyskać listę słów kluczowych, które są rozpoznawane przez SQL Server Macierzysta klient OLE DB, zobacz Inicjowanie i właściwości autoryzacja.catalog
Jest nazwą katalogu lub w którym znajduje się określony obiekt bazy danych.schema
Jest nazwą właściciela schematu lub obiekt, dla określonego obiektu.object
Jest to nazwa obiektu, który unikatowo identyfikuje obiekt, aby pracować.'query'
Jest stała znakowa przesyłane do i wykonywany przez dostawca.Lokalne wystąpienie SQL Server nie przetwarzają tej kwerendy, ale wyniki zwróconych przez dostawca, kwerenda przekazująca kwerendy procesów. Kwerendy przekazujące są przydatne w przypadku, gdy używany na dostawców, którzy nie należy wprowadzać dostępne ich danych tabelarycznych, za pomocą nazwy tabel, ale tylko za pośrednictwem język poleceń.Kwerendy przekazujące są obsługiwane na serwerze zdalnym, dopóki dostawca kwerendy obsługuje OLE DB Command obiekt i jego obowiązkowe interfejsów. Aby uzyskać więcej informacji zobaczProgram SQL Server Native klient (OLE DB) Reference.MASOWE
Używa dostawca BULK zestawu zestaw wierszy dla OPENROWSET odczytać danych z pliku.W SQL ServerOPENROWSET może odczytać z pliku danych bez ładowania danych do tabela miejsce docelowe. W ten sposób można użyć prostej instrukcja SELECT OPENROWSET.Argumenty opcji BULK umożliwia znaczne kontroli nad w przypadku gdy do rozpoczęcia i zakończenia odczytywania danych, jak postępować z błędami i w jaki sposób dane są interpretowane.Na przykład można określić, czy jako pojedynczy wiersz, kolumna pojedynczy zestaw wierszy tego typu można odczytać pliku danych varbinary, varchar, lub nvarchar. To zachowanie domyślne jest opisana w opisy argumentów, które należy wykonać.
Aby uzyskać informacje na temat korzystania z opcji BULK należy przeczytaj „ Spostrzeżenia w dalszej części tego tematu.Aby uzyskać informacje dotyczące uprawnień, które są wymagane przez opcję BULK zobacz "" uprawnienia"w dalszej części tego tematu.
Uwaga
Służy do importowania danych z model pełnego odzyskiwanie, OPENROWSET (BULK...), gdy nie Optymalizacja logowania.
Aby uzyskać informacje na temat przygotowywania danych do import zbiorczy zobacz Preparing Data for Bulk Export or Import.
'data_file'
Jest to pełna ścieżka pliku danych, których dane są można skopiować do tabela miejsce docelowe.FORMATFILE ='format_file_path'
Specifies the full path of a format file.SQL Server supports two types of format files: Kod XML i -XML.plik formatu jest wymagany do definiowania typów kolumn zestaw wyników.Jedynym wyjątkiem jest, gdy określono SINGLE_CLOB, SINGLE_BLOB lub SINGLE_NCLOB; w takim przypadek nie jest wymagany plik formatu.
Aby uzyskać informacje dotyczące plików w formacie zobacz Using a Format File to Bulk Import Data.
< bulk_options >
Określa jeden lub więcej argumentów dla opcji BULK.CODEPAGE = { "ACP" | "OEM" | "RAW" | "code_page" }
Określa strona kodowa danych w pliku danych.CODEPAGE ma znaczenie tylko wtedy, gdy dane zawierają char, varchar, lub text kolumny z wartościami znaku więcej niż 127 lub mniejszy niż 32.Uwaga
Zaleca się, że zostanie podana nazwa sortowanie dla każdej kolumna plik formatu.
Wartość CODEPAGE
Description
AKP
Konwertuje kolumn char, varchar, lub text Typ danych z ANSI /Microsoft Strona kodowa systemu Windows (ISO 1252) do SQL Server Strona kodowa.
OEM (domyślnie)
Konwertuje kolumn char, varchar, lub text Typ danych ze strony kodowej systemu OEM do SQL Server Strona kodowa.
NIEPRZETWORZONE
Konwersja nie występuje z jednej strona kodowa do innego.Jest to najszybszy opcji.
code_page
Wskazuje urządzenie źródłowe strona kodową, na które są kodowane danych znakowych w pliku danych, na przykład 850.
Important Note:SQL Server nie obsługuje strona kodowa 65001 (kodowania UTF-8).ERRORFILE ='file_name'
Określa plik, który jest używany do zbierania wiersze, które mają błędów formatowania i nie można przekonwertować na zestawie zestaw wierszy OLE DB.Te wiersze są kopiowane do tego pliku błąd z pliku danych „ tak jak jest. „Błąd pliku jest tworzony w momencie rozpoczęcia wykonywania polecenia.Błąd będzie można zwiększyć, jeżeli plik już istnieje.Ponadto plik formantu, który ma rozszerzenie. ERROR.txt jest tworzony.Ten plik odwołuje się do każdego wiersza w pliku błędu i zawiera błąd diagnostyki.Po poprawieniu błędów, możliwe jest załadowanie danych.
FIRSTROW **=**first_row
Określa numer pierwszego wiersza do załadowania.Wartość domyślna to 1.Oznacza to, w pierwszym wierszu pliku danych określone.Numery wierszy są określane przez zliczania terminatory wiersza.FIRSTROW jest oparte na 1.LASTROW **=**last_row
Określa ostatni wiersz do załadowania.Wartość domyślna to 0.Określa ostatni wiersz w pliku określone dane.MAXERRORS **=**maximum_errors
Określa maksymalną liczbę błędów składniowych lub niezgodne wiersze zdefiniowane w pliku formatu, który może wystąpić, zanim OPENROWSET zgłasza wyjątek.Aż do osiągnięcia MAXERRORS OPENROWSET ignoruje każdy Zły wiersz nie załadować go i liczby Zły wiersz jako jeden błąd.Wartość domyślna dla maximum_errors wynosi 10.
Uwaga
MAX_ERRORS nie ma zastosowania do ograniczeń CHECK lub do konwersji money i bigint typy danych.
ROWS_PER_BATCH **=**rows_per_batch
Określa przybliżoną liczbę wierszy danych w pliku danych.Wartość ta powinna być o takiej samej kolejności, jak rzeczywista liczba wierszy.OPENROWSET zawsze importuje plik danych w jednej partia.Niemniej jednak jeśli określony rows_per_batch wartość > 0, procesor kwerend używa wartości rows_per_batch jako wskazówkę dla alokacji zasobów w planie kwerendy.
Domyślnie ROWS_PER_BATCH jest nieznany.Określanie ROWS_PER_BATCH = 0 jest taka sama, jak pominięcie ROWS_PER_BATCH.
ORDER ({column [ASC | DESC]} [ ,... n ] [UNIKATOWY])
Wskazówka opcjonalny, określający, w jaki sposób dane w pliku danych są sortowane.Domyślnie operacja zbiorcza zakłada się, plik danych jest nieuporządkowana.Wydajność może wzrosnąć, jeśli w określonej kolejności może być wykorzystana przez optymalizator kwerendy, aby wygenerować bardziej efektywny plan kwerend.Następujące przykłady podczas określania sortowania może być korzystne:Wstawianie zestaw wierszy do tabela, która ma indeks klastrowany, gdzie dane zestawu zestaw wierszy są sortowane w kluczu indeksu klastrowanego.
Przyłączanie się do zestawu zestaw wierszy z inną tabelą, w których odpowiadają kolumny sortowania i łączyć.
Agregowania danych zestawu zestaw wierszy przez sortowanie kolumn.
Za pomocą zestawu zestaw wierszy w tabela źródłowej w klauzula FROM kwerendy, których kolumny sortowania i łączyć odpowiadają.
Unikatowa Określa, że plik danych nie ma zduplikowane wpisy.
Jeśli rzeczywista wierszy w pliku danych nie są posortowane w kolejności określonej lub UNIQUE wskazówka jest określony i występują duplikaty kluczy, zwracany jest błąd.
Aliasy kolumna są wymagane, gdy używany jest ORDER.Lista alias kolumna musi odwoływać się do tabela pochodnej, która jest uzyskiwany za pomocą klauzula BULK.Nazwy kolumn, które są określone w klauzula ORDER odnoszą się do tej listy alias kolumna.(Typy) duża wartośćvarchar(max), nvarchar(max), varbinary(max), a xml) i typy dużych obiektów (LOB) ()text, ntext, a image) nie może być określone kolumny.
SINGLE_BLOB
Zwraca zawartość data_file jako pojedynczy wiersz, kolumna pojedynczy zestaw wierszy typu varbinary(max).Important Note: Firma Microsoft zaleca, aby importować dane XML tylko przy użyciu opcji SINGLE_BLOB zamiast SINGLE_CLOB i SINGLE_NCLOB, ponieważ tylko SINGLE_BLOB obsługuje wszystkie Windows kodowania podczas konwersji.
SINGLE_CLOB
Czytając data_file jako ASCII, zwraca zawartość jako jedno wiersz, jedno-kolumna zestawu zestaw wierszy typu varchar(max), za pomocą sortowanie bieżącej bazy danych.SINGLE_NCLOB
Czytając data_file jako UNICODE zwraca zawartość w postaci zestawu zestaw wierszy jednego wiersza, jedną kolumną typu nvarchar(max), za pomocą sortowanie bieżącej bazy danych.
Remarks
OPENROWSET może służyć do uzyskiwania dostępu do dane zdalne danych do DB OLE źródeł tylko wtedy, gdy DisallowAdhocAccess rejestru Opcja jawnie jest ustawiona na 0 dla określonego dostawca i włączeniu opcji konfiguracja zaawansowanej ad Hoc Distributed Queries.Jeśli opcje te nie są skonfigurowane, zachowanie domyślne nie zezwala na dostęp ad hoc.
Dostęp do zdalnych źródeł danych OLE DB, tożsamość logowania zaufanego połączenia nie jest automatycznie delegowane z serwera, na którym klient jest podłączony do serwera, na którym jest poszukiwanych.Delegowanie uwierzytelnianie muszą być skonfigurowane.Aby uzyskać więcej informacji zobaczConfiguring Linked Servers for Delegation.
Nazwy katalogu i schematu są wymagane, jeśli dostawca OLE DB obsługuje wielu katalogów i schematy w określonych danych urządzenie źródłowe.Wartości dla catalog i schema można pominąć, jeśli dostawca OLE DB nie obsługuje ich. Jeśli dostawca obsługuje tylko schematu nazwy, nazwa dwóch części formularza schema**.** object musi być określona.Jeśli dostawca obsługuje tylko katalog nazwy, Nazwa trzech części formularza catalog**.** schema**.**object musi być określona.Trzy części nazwy muszą być określone dla kwerendy przekazujące, które za pomocą SQL Server Macierzystego dostawca klient OLE DB. Aby uzyskać więcej informacji zobaczTransact-SQL Syntax Conventions (Transact-SQL).
OPENROWSET nie akceptuje zmienne dla jej argumentów.
Korzystanie z opcji BULK OPENROWSET
Poniżej Transact-SQL ulepszenia obsługi funkcja OPENROWSET(BULK...):
Klauzulę FROM, który jest używany z SELECT może wywołać OPENROWSET(BULK...) zamiast nazwy tabela, z funkcjami pełne SELECT.
OPENROWSET przy użyciu opcji BULK wymaga nazwy korelacji, znany także jako zakres zmiennej lub alias w klauzula FROM.Aliasy kolumna może być określony.Jeżeli nie określono listę alias kolumna, plik formatu musi mieć nazwy kolumn.Określanie aliasów kolumna zastępuje nazw kolumn w plik formatu, takie jak:
FROM OPENROWSET(BULK...) AS table_alias
FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)
Instrukcja SELECT... FROM OPENROWSET(BULK...) kwerendy danych w pliku bezpośrednio, bez konieczności ich importowania danych do tabela.Instrukcje OPENROWSET(BULK...) SELECT…FROM może również listy aliasów zbiorcza kolumna za pomocą plik formatu do określania nazwy kolumn i typów danych.
Przy użyciu OPENROWSET(BULK...) jak tabela źródłowa INSERT lub korespondencji SERYJNEJ zbiorczo instrukcja importuje dane z pliku danych do SQL Server Tabela. Aby uzyskać więcej informacji zobaczImporting Bulk Data by Using BULK INSERT or OPENROWSET(BULK...).
Użyto opcji OPENROWSET BULK za pomocą instrukcja INSERT klauzula BULK obsługuje wskazówki do tabela.Oprócz zwykłych tabela wskazówki dotyczące serwerów, takie jak TABLOCK klauzula BULK może zaakceptować następujące wskazówki wyspecjalizowane tabela: IGNORE_CONSTRAINTS (ignoruje tylko ograniczenia wyboru i klucz obcy), IGNORE_TRIGGERS, KEEPDEFAULTS i KEEPIDENTITY. Aby uzyskać więcej informacji zobaczWskazówki do tabela (języka Transact-SQL).
Aby uzyskać informacje dotyczące sposobu korzystania, INSERT... SELECT * FROM OPENROWSET(BULK...) instrukcje, zobacz Importing and Exporting Bulk Data. Aby uzyskać informacje na temat podczas operacji wstawiania wierszy, które są wykonywane przez import zbiorczy są rejestrowane dziennik transakcji zobacz Prerequisites for Minimal Logging in Bulk Import.
Uwaga
Gdy używasz OPENROWSET, ważne jest zrozumieć, w jaki sposób SQL Server obsługuje personifikacji. Aby uzyskać informacje o kwestiach zabezpieczeń Zobacz Importing Bulk Data by Using BULK INSERT or OPENROWSET(BULK...).
Importowanie SQLCHAR, SQLNCHAR lub dane SQLBINARY zbiorczej
OPENROWSET(BULK...) zakłada się, że jeśli nie zostanie określony, maksymalna długość SQLCHAR, SQLNCHAR lub SQLBINARY danych nie przekracza 8000 bajtów.Jeśli pole dane LOB, zawierającą dowolne importowane dane varchar(max), nvarchar(max), lub varbinary(max) obiekty, które przekraczają 8000 bajtów, należy użyć pliku formatu XML, który definiuje maksymalną długość pole danych. Aby określić maksymalną długość, edytować plik formatu i zadeklarować atrybut MAX_LENGTH.Aby uzyskać więcej informacji zobaczSchema Syntax for XML Format Files.
Uwaga
plik formatu automatycznie generowany nie określa długość lub maksymalna długość pole LOB.Można jednak edytować plik formatu i ręcznie określić długość lub maksymalną długość.
Zbiorcza eksportowanie lub importowanie SQLXML dokumenty
Zbiorcza eksportowania lub importowania danych SQLXML, użyj jednej z następujących typów danych w sieci plik formatu.
Typ danych |
Efekt |
---|---|
SQLCHAR lub SQLVARYCHAR |
Dane są przesyłane w stronie kodowej klient lub w stronie kodowej implikowane przez sortowanie). |
SQLNCHAR lub SQLNVARCHAR |
Dane są przesyłane w formacie Unicode. |
SQLBINARY lub SQLVARYBIN |
Dane są przesyłane bez żadnej konwersji. |
Uprawnienia
OPENROWSET uprawnienia są określane za pomocą uprawnień do nazwy użytkownika, który jest przekazywany do dostawca OLE DB.Aby skorzystać z opcji BULK wymaga uprawnienia ADMINISTROWANIA BULK operacje.
Przykłady
A.Za pomocą OPENROWSET z SELECT i SQL Server Native klient OLE DB dostawca
W poniższym przykładzie użyto SQL Server Macierzystego dostawca klient OLE DB w celu uzyskania dostępu do HumanResources.Department Tabela w AdventureWorks bazy danych na serwerze zdalnym Seattle1. (Użyj SQLNCLI i SQL Server będzie przekierować do najnowszej wersja programu SQL Server Macierzysta klient dostawca OLE DB.) A SELECT Instrukcja jest używany do definiowania wierszy, ustaw zwracane. Ciąg dostawca zawiera Server i Trusted_Connection słowa kluczowe. Te słowa kluczowe są rozpoznawane przez SQL Server Macierzystego dostawca klient OLE DB.
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks.HumanResources.Department
ORDER BY GroupName, Name') AS a;
B.Przy użyciu dostawca Microsoft OLE DB dla aparatu Jet
W poniższym przykładzie uzyskuje dostęp do Customers Tabela w Microsoft Dostęp Northwind bazy danych za pośrednictwem Microsoft OLE DB dostawca for Jet.
Uwaga
W tym przykładzie założono, że zainstalowany jest program Access.Aby uruchomić ten przykład, należy zainstalować bazę danych Northwind.Aby uzyskać informacje dotyczące sposobu instalowania bazę danych Northwind zobacz Pobieranie Northwind i przykładowe bazy danych pubs.
SELECT CustomerID, CompanyName
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
'admin';'',Customers)
GO
C.Za pomocą OPENROWSET i innej tabela w operacji łączyć wewnętrzne
The following example selects all data from the Customers table from the local instance of SQL ServerNorthwind database and from the Orders table from the Access Northwind database stored on the same computer.
Uwaga
W tym przykładzie założono, że zainstalowany jest program Access.Aby uruchomić ten przykład, należy zainstalować bazę danych Northwind.Aby uzyskać informacje dotyczące sposobu instalowania bazę danych Northwind zobacz Pobieranie Northwind i przykładowe bazy danych pubs.
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.Za pomocą OPENROWSET zbiorczej wstawiania pliku danych do kolumna varbinary(max)
W poniższym przykładzie jest tworzona tabela małych celach demonstracyjnych i wstawia dane z pliku o nazwie Text1.txt znajduje się w C: katalog główny w varbinary(max) Kolumna.
USE AdventureWorks
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.Za pomocą dostawca OPENROWSET BULK przy użyciu formatu pliku do pobrania wierszy z pliku tekstowego
W poniższym przykładzie zastosowano plik formatu do pobrania wierszy z pliku tekstowego rozdzielanego tabulatorami values.txt zawiera następujące dane:
1 Data Item 1
2 Data Item 2
3 Data Item 3
Plik formatu values.fmt, w tym artykule opisano w kolumnach 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
Jest to kwerendy pobierającej dane:
SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
FORMATFILE = 'c:\test\values.fmt') AS a;
Dodatkowe przykłady
Dodatkowe przykłady pokazujące, za pomocą INSERT... SELECT * FROM OPENROWSET(BULK...), zobacz następujące tematy:
Historia zmian
Microsoft Learning |
---|
Dodaje ważne uwagi do opisu code_page. |
W sekcji uwagi dodane informacji na temat importowania danych SQLCHAR, SQLNCHAR lub SQLBINARY zbiorczej. |
See Also