Udostępnij za pośrednictwem


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