Data Type Mapping with Distributed Queries
dostawca OLE DB umożliwia uzyskanie dostępu do danych według identyfikatorów typu OLE DB o nazwie DBTYPEs typów danych.Są konwertowane typy danych między typami danych OLE DB i SQL Server typy danych systemu przez mapowanie danych:
Od typów danych OLE DB SQL Server System typów danych. Ta konwersja nastąpi przy SQL Server odczytuje dane ze urządzenie źródłowe danych OLE DB, w instrukcji SELECT, albo po stronie odczytu instrukcji UPDATE, INSERT lub DELETE.
Z SQL Server System typów danych na typy danych OLE DB. Ta konwersja nastąpi przy SQL Server zapisuje dane, głównie w instrukcji INSERT lub UPDATE do urządzenie źródłowe danych OLE DB, w którym jest tabela zmodyfikowana tabela zdalna.
Mapowanie typu danych z dostawca OLE DB dla programu SQL Server
Mapowanie z dostawca OLE DB dla typu danych SQL Server Określa dozwolone porównań i wyrażeń i prawidłowe jawne konwersje, obejmujących dane zdalne. Mapowanie znajduje się w tabela poniżej.
Ważność typu dla tabela zdalna kolumn w wyrażeniach mogą być sumowane według następujących reguł: Wartość kolumna zdalnego jest prawidłowa w języku Transact-SQL wyrażenie jeżeli odpowiadający mu mapowane SQL Server Typ danych w tabela mapowanie typ danych jest prawidłowy w tym samym kontekście.
Rozważmy na przykład wyrażenie: local_column OPERATOR remote_column. In this expression*,* local_column is a local table column and remote_column is a remote table column.Wyrażenie jest prawidłowe Jeśli OPERATOR jest prawidłowy operator dla typu danych kolumna, lokalne i dla typu danych, do którego DBTYPE z remote_column mapuje.
Podobnie CAST)remote_column JAK data_type_1) jest dozwolone, jeśli DBTYPE z remote_column mapuje SQL Server Systemowy typ danych data_type_2 i konwersja jawna z data_type_2 Aby data_type_1 jest dozwolone. Na przykład kolumna DBTYPE_DATE po stronie dostawca można przekonwertować na typ danych datetime kolumna SQL Server. Jednak nie można konwertować dane DBTYPE_DATE bezpośrednio do varchar.
W poniższej tabela przedstawiono tabela mapowania typów danych.Za pomocą wskaźnika DBTYPE i jej wartość DBCOLUMNFLAGS kolumna, można znaleźć odpowiedniego SQL Server Typ danych.
DBTYPE |
DBCOLUMNFLAGS |
Typ danych programu SQL Server |
---|---|---|
DBTYPE_I1 |
numeric(3, 0)1 |
|
DBTYPE_I2 |
smallint |
|
DBTYPE_I4 |
int |
|
DBTYPE_I8 |
bigint |
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_UI1 |
numeric(5,0) |
|
DBTYPE_UI1 |
numeric(10,0) |
|
DBTYPE_UI1 |
numeric(20,0) |
|
DBTYPE_R4 |
float |
|
DBTYPE_R8 |
real |
|
DBTYPE_NUMERIC |
numeric |
|
DBTYPE_DECIMAL |
decimal |
|
DBTYPE_CY |
money |
|
DBTYPE_BSTR |
DBCOLUMNFLAGS_ISLONG = true |
ntext |
DBTYPE_BSTR |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
nchar |
DBTYPE_BSTR |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
nvarchar |
DBTYPE_IDISPATCH |
Błąd |
|
DBTYPE_ERROR |
Błąd |
|
DBTYPE_BOOL |
bit |
|
DBTYPE_VARIANT |
nvarchar(4000) |
|
DBTYPE_IUNKNOWN |
Błąd |
|
DBTYPE_GUID |
uniqueidentifier |
|
DBTYPE_BYTES |
DBCOLUMNFLAGS_ISLONG = true lub maksymalnej kolumna rozmiar > 8000 bajtów. |
image |
DBTYPE_BYTES |
DBCOLUMNFLAGS_ISLONG = true, a kolumna rozmiar jest nieograniczonej długości. |
varbinary(max) |
DBTYPE_BYTES |
DBCOLUMNFLAGS_ISROWVER = true DBCOLUMNFLAGS_ISFIXEDLENGTH = true, a rozmiar kolumna = 8 |
timestamp |
DBTYPE_BYTES |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
binary |
DBTYPE_BYTES |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
varbinary |
DBTYPE_STR |
DBCOLUMNFLAGS_ISFIXEDLENGTH = true |
char |
DBTYPE_ STR |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
varchar |
DBTYPE_STR |
DBCOLUMNFLAGS_ISLONG = true lub maksymalnej kolumna rozmiar > 8000 znaków. |
text |
DBTYPE_STR |
DBCOLUMNFLAGS_ISLONG = true, a kolumna rozmiar jest nieograniczonej długości. |
varchar(max) |
DBTYPE_WSTR |
DBCOLUMNFLAGS_ISFIXED |
nchar |
DBTYPE_WSTR |
DBCOLUMNFLAGS_ISFIXEDLENGTH = false |
nvarchar |
DBTYPE_WSTR |
DBCOLUMNFLAGS_ISLONG = true lub maksymalnej kolumna rozmiar > 4 000 znaków. |
ntext |
DBTYPE_WSTR |
DBCOLUMNFLAGS_ISLONG = true, a kolumna rozmiar jest nieograniczonej długości. |
nvarchar(max) |
DBTYPE_UDT |
Odpowiednik SQL Server typ zdefiniowany przez użytkownika, jeśli jest zarejestrowany. |
|
DBTYPE_DATE |
date, datetime, datetime2, datetimeoffset |
|
DBTYPE_DBDATE |
date, datetime, datetime2, datetimeoffset (Poziom zgodności jest mniejsza niż 9.0). |
|
DBTYPE_DBTIME |
time, datetime, datetime2, datetimeoffset |
|
DBTYPE_DBTIME_EX |
time, datetime2, datetimeoffset |
DBTYPE_DBTIMESTAMP |
time, date, datetime2, datetimeoffset, datetime |
|
---|---|---|
DBTYPE_DBTIMESTAMP |
time, date, datetime2, datetimeoffset |
|
DBTYPE_DBTIMESTAMP |
time, date, datetime2, datetimeoffset |
|
DBTYPE_ARRAY |
Błąd |
|
DBTYPE_BYREF |
Ignorowany |
|
DBTYPE_VECTOR |
Błąd |
|
DBTYPE_RESERVED |
Błąd |
|
DBTYPE_XML |
xml (Dozwolone tylko w przypadku kwerend przekazujących.) |
1numeric(p,s) indicates the SQL Server data type numeric with precision p and scale s.
Uwaga
Jeżeli dane muszą być przekonwertowana na SQL Server Typ danych, który różni się od wyświetlane domyślnie, konwersja jawna, za pomocą funkcja CAST albo CONVERT, jest wymagane. Aby uzyskać więcej informacji zobaczCAST and CONVERT (Transact-SQL).
Wartość wskaźnika DBTYPE i DBCOLUMNFLAGS informacje pochodzą z dostawca za pomocą jednego zestaw zestaw wierszy schematu COLUMNS lub za pomocą IColumnsInfo interfejs.Dla zestaw zestaw wierszy schematu COLUMNS kolumny DATA_TYPE i COLUMN_FLAGS reprezentują wartości DBTYPE i DBCOLUMNFLAGS.Dla IColumnsInfo::GetColumnInfo interfejswType i dwFlags reprezentuje strukturę DBCOLUMNINFO tych wartości.
Mapowanie typu danych z programu SQL Server do dostawca OLE DB
SQL Server do typów baz danych OLE mapowania typów danych systemu za pomocą mapowania, przedstawione w poprzedniej tabela.Mapowanie SQL Server Typ S1 do określonym OLE DB należy wpisaćT jest dozwolone, jeśli istnieje jeden z następujących warunków:
Odpowiednie mapowanie można znaleźć w tabela mapowania typów danych.
Jest dozwolone niejawna konwersja typu danych S1 do innego SQL Server Typ danych S2 a mapowanieS2 to T jest zdefiniowany w tabela mapowania typów danych.
Program SQL Server 2008 mapowania Data i Data czas odebrane z serwera zdalnego
Następujące tabela pokazuje date i time mapowanie dla danych wysyłanych ze urządzenie źródłowe danych OLE DB do wystąpienie typu danych SQL Server 2008. Ta konwersja nastąpi przy SQL Server 2008 odczytuje dane ze urządzenie źródłowe danych OLE DB, w instrukcji SELECT, albo po stronie odczytu instrukcji UPDATE, INSERT lub DELETE. Jeśli znajduje się kolumna zdalnego date, time, dateime2, lub datetimeoffset Typ danych, że typ jest zwracana, jeśli poziom zgodności bazy danych jest 100 lub nowszej. Jeśli poziom zgodności jest niższa, SQL Server 2008 powoduje, że niejawna konwersja do datetime.
Typ OLE DB |
Jeśli zdalny serwer programu SQL Server 2008 Zwraca: |
Jeśli serwer zdalny jest program SQL Server 2005 lub SQL Server 2000 zwrotu: |
Jeśli serwer zdalny nie jest program SQL Server i lokalne poziom zgodności bazy danych programu SQL Server 2008 jest 90 powrotu: |
Jeśli serwer zdalny nie jest program SQL Server i lokalne poziom zgodności bazy danych programu SQL Server 2008 jest 100 powrotu: |
---|---|---|---|---|
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
datetime (zdalnego kolumna może być albo datetime lub smalldatetime) |
datetime (zdalnego kolumna może być albo datetime lub smalldatetime) |
datetime |
datetime2(7) |
DBTYPE_DBTIMESTAMP z dwFlags jest ustawiane jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
datetime2 |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
DBTYPE_DBDATE |
date |
Nie dotyczy |
datetime |
date |
DBTYPE_DBTIME |
time(0) |
Nie dotyczy |
datetime |
time(0) |
DBTYPE_DBTIME2 |
time(n) |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
DBTYPE_DBTIMESTAMPOFFSET |
datetimeoffset |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Program SQL Server 2008 mapowania Data i godzina, Data wysłane do serwera zdalnego
Następujące tabela pokazuje date i time Mapowanie danych przesyłanych z wystąpienie typu danych SQL Server 2008 do obiekt docelowy danych OLE DB. Ta konwersja nastąpi przy SQL Server 2008 zapisuje dane, głównie w instrukcji INSERT lub UPDATE do urządzenie źródłowe danych OLE DB, w którym jest tabela zmodyfikowana tabela zdalna.
Typ danych programu SQL Server 2008 |
Jeśli zdalny serwer programu SQL Server 2008 Powiązanie z: |
Jeśli program SQL Server 2005 lub SQL Server 2000 powiązania z serwera zdalnego: |
Jeśli serwer zdalny nie jest powiązanie programu SQL Server z: |
---|---|---|---|
datetime, smalldatetime |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
datetime2(n) |
DBTYPE_DBTIMESTAMP z dwFlags jest ustawiane jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
date |
DBTYPE_DBDATE |
DBTYPE_DBDATE |
DBTYPE_DBDATE |
time(0) |
DBTYPE_DBTIME |
DBTYPE_DBTIME |
DBTYPE_DBTIME |
time(n) (0) < n <= 7) |
DBTYPE_DBTIMESTAMP (w oczekiwaniu na części data) z ustawioną jako DBPARAMFLAGS_SS_ISVARIABLESCALE dwFlags |
DBTYPE_DBTIMESTAMP bez dwFlags zestaw jako DBPARAMFLAGS_SS_ISVARIABLESCALE |
DBTYPE_DBTIMESTAMP (w oczekiwaniu na części data) |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
Nie dotyczy |
Nie dotyczy |
Wykonanie kwerendy Remote Server 2008 SQL z typy danych czas i Data
SQL Server 2008 Wykonuje kwerendy, które odwołują się do zdalnego obiektów mających time, date, datetime2, lub datetimoffset typy danych, albo na lokalnym lub zdalnym serwerem. Decyzja zależy od wersja lub dostawca z serwera zdalnego i typ odwołania.Uznane za typy odwołań są zdalnego kolumna lub kolumna stała, zmiennej lub lokalnym.
-SQL Server dostawcy
Obsługa jest częściowa dla time, date, a datetime2 typy danych, gdy podobnego typu istnieją na serwerze zdalnym nie-SQL Server dostawcy. Ci dostawcy nie jest to sposób zgłaszania pomocy technicznej dla tych typów.
Poniższa tabela pokazuje, czy kwerenda jest wykonywana na serwerze lokalnym lub zdalnym.Pierwsze kolumny zawierają typ danych na serwerze lokalnym.Druga kolumna zawiera odpowiedni typ danych OLE DB lokalnego wystąpienie SQL Server 2008 korzysta z serwera zdalnego. Ostatnie trzy kolumny wyświetlane, czy kwerenda jest wykonywana na serwerze lokalnym lub zdalnym.Lokalizacja wykonania zależy od wersja lub typ serwera zdalnej.
Typ danych lokalnego serwera |
Serwer zdalny typ danych OLE DB, który jest używany przez lokalnego programu SQL Server 2008 |
Program SQL Server 2008 lub nowsza wersja serwera zdalnego |
Zdalny serwer SQL Server 2005 |
Serwer zdalny nie MSSQL |
---|---|---|---|---|
datetime |
DBTYPE_DBTIMESTAMP |
Zdalne |
Zdalne |
Zdalne |
smalldatetime |
DBTYPE_DBTIMESTAMP |
Zdalne |
Zdalne |
Zdalne |
datetime2 |
DBTYPE_DBTIMESTAMP |
Zdalne |
Lokalne |
Zdalne |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
Zdalne |
Lokalne |
Lokalne |
date |
DBTYPE_DBDATE |
Zdalne |
Lokalne |
Zdalne |
time(>0) |
DBTYPE_DBTIME2 |
Zdalne |
Lokalne |
Lokalne |
time(0) |
DBTYPE_DBTIME2 |
Zdalne |
Lokalne |
Zdalne |
See Also