Поделиться через


Типы данных служб Integration Services

Изменения: 15 сентября 2007 г.

Когда данные входят в поток данных в пакете, источник, извлекающий данные, преобразовывает их в тип данных служб Integration Services. Числовым данным назначается числовой тип данных, строковым — символьный тип данных, а датам — тип даты. Другим данным, таким как идентификатор GUID и BLOB (Binary Large Object Blocks), также назначаются соответствующие типы данных служб Integration Services. Если данные имеют тип, не преобразуемый в тип данных служб Integration Services, возникает ошибка.

Некоторые компоненты потока данных преобразуют типы данных между типами данных служб Integration Services и управляемыми типами данных Microsoft .NET Framework. Дополнительные сведения о сравнении между службами Integration Services и управляемыми типами данных см. в разделе Mapping Data Types in the Data Flow.

В следующей таблице перечислены типы данных служб Integration Services.

Тип данных Описание

DT_BOOL

Логическое значение.

DT_BYTES

Значение двоичных данных. Длину можно изменять. Максимальная длина составляет 8000 байт.

DT_CY

Значение денежного типа. Этот тип данных представляет собой восьмибайтовое целое число со знаком, с масштабом 4 и максимальной точностью 19.

DT_DATE

Структура даты, состоящая из года, месяца, дня и часа.

Тип данных DT_DATE представляет собой 8-байтовое число с плавающей запятой. Дни представлены целым числом, где за ноль принято значение полночь 30 декабря 1899. Значение часа выражается абсолютным значением дробной части числа. Тем не менее, значение с плавающей запятой не может представить все реальные значения, поэтому есть пределы отображения ряда дат в DT_DATE.

С другой стороны, тип данных DT_DBTIMESTAMP представлен структурой, имеющей отдельные поля для года, месяца, дня, часов, минут, секунд и миллисекунд. Такой тип данных не имеет ограничений по диапазону дат, которые он может представлять.

DT_DBDATE

Структура даты, состоящая из года, месяца и дня.

DT_DBTIME

Структура времени, состоящая из часа, минуты и секунды.

DT_DBTIMESTAMP

Структура временной метки, состоящая из года, месяца, суток, часа, минуты, секунды и миллисекунды.

DT_DECIMAL

Точное числовое значение с заданной точностью и фиксированным масштабом. Этот тип данных является 12-байтовым беззнаковым целым числом с отдельным знаком, масштабом от 0 до 28 и максимальной точностью 29.

DT_FILETIME

64-разрядное значение, представляющее количество 100-наносекундных интервалов с 1 января 1601 года.

DT_GUID

Глобальный уникальный идентификатор (GUID).

DT_I1

Однобайтовое целое число со знаком.

DT_I2

Двухбайтовое целое число со знаком.

DT_I4

Четырехбайтовое целое число со знаком.

DT_I8

Восьмибайтовое целое число со знаком.

DT_NUMERIC

Точное числовое значение с заданной точностью и масштабом. Этот тип данных является 16-байтовым беззнаковым целым числом с отдельным знаком, масштабом от 0 до 38 и максимальной точностью 38.

DT_R4

Значение с плавающей точкой одинарной точности.

DT_R8

Значение с плавающей точкой двойной точности.

DT_STR

Строка ANSI/MBCS заканчивающаяся символом конца строки с максимальной длиной 8000 символов. (Если значение столбца содержит дополнительные символы конца строки, строка усекается в месте вхождения первого такого символа).

DT_UI1

Однобайтовое беззнаковое целое число.

DT_UI2

Двухбайтовое беззнаковое целое число.

DT_UI4

Четырехбайтовое беззнаковое целое число.

DT_UI8

Восьмибайтовое беззнаковое целое число.

DT_WSTR

Строка Юникод заканчивающаяся символом конца строки с максимальной длиной 4000 символов. (Если значение столбца содержит дополнительные символы конца строки, строка усекается в месте вхождения первого такого символа).

DT_IMAGE

Двоичное значение с максимальным размером 231—1 (2 147 483 647) байт. .

DT_NTEXT

Строка символов в Юникоде с максимальной длиной в 230-1 (1 073 741 823) символов.

DT_TEXT

Строка символов ANSI/MBCS с максимальной длиной 231 — 1 (2 147 483 647) символов.

Изменение типа данных столбцов

Если тип источника данных не требует распределения данных по всей ширине столбца, можно изменить тип данных столбца. Максимально короткие строки данных помогают оптимизировать производительность при передаче данных, так как чем короче каждая строка, тем быстрее данные перемещаются от источника к целевому объекту.

Службы Integration Services включают полный набор числовых типов данных, так что можно сопоставить типы данных с размером данных. Например, если значения в столбце с типом данных DT_UI8 всегда являются целыми числами от 0 до 3000, то можно изменить тип данных на DT_UI2. Подобным образом, если столбец с типом данных DT_CY соответствует требованиям данных пакета, используя целочисленный тип данных, можно изменить тип данных на DT_I4.

Можно также изменить тип данных столбца с данными даты или времени для извлечения дня или временной части данных. Например, если изменяется тип данных столбца с DT_DBTIMESTAMP на DT_DBTIME, то доступны только значения: часы, минуты и секунды.

Можно изменить тип данных столбца следующим образом:

  • Использование преобразования для замены значений столбца на результаты выражения или для создания копии столбца, имеющего тип данных отличный от типа исходного столбца. Дополнительные сведения см. в разделе Преобразование «Производный столбец».
  • Использование преобразования для приведения типа данных столбца к другому типу. Дополнительные сведения см. в разделе Преобразование «Конвертация данных».
ms141036.note(ru-ru,SQL.90).gifПримечание.
Значения логического типа не являются числовыми. Хотя логические значения в некоторых средах могут отображаться как числа, они хранятся не в виде чисел, при этом разные языки программирования представляют их в виде числовых значений по-разному, как и методы среды .NET Framework. Например, функции преобразования языка Visual Basic преобразуют True в значение -1, однако метод System.Convert.ToInt32 в среде .NET Framework преобразует True в значение +1. Язык выражений службы Integration Services преобразует True в значение -1. Чтобы избежать ошибок или непредвиденных результатов, следует писать программный код, который предусматривает конкретные числовые значения для True и False. Там, где возможно, необходимо ограничить использование переменных логического типа соответствующими логическими значениями.

Сопоставление типов данных служб Integration Services и типов данных базы данных

В следующей таблице представлены рекомендации по сопоставлению типов данных, которые используются в определенных базах данных, с типами данных служб Integration Services. Эти сопоставления взяты из файлов сопоставлений, которые использует мастер импорта и экспорта SQL Server при импорте данных из этих источников. Дополнительные сведения о файлах сопоставлений см. в разделе Создание пакетов при помощи мастера экспорта и импорта SQL Server.

ms141036.note(ru-ru,SQL.90).gifВажно!
Приведенные здесь сопоставления не представляют полного соответствия, а приводятся лишь в качестве рекомендации. В определенных условиях следует использовать другие типы данных вместо тех, которые перечислены в таблице.
Тип данных SQL Server (SQLOLEDB; SQLNCLI) SQL Server (SqlClient) Jet Oracle (MSDAORA) Oracle (OracleClient) DB2 (DB2OLEDB) DB2 (IBMDADB2)

DT_BOOL

bit

bit

Bit

DT_BYTES

binary, varbinary, timestamp

binary, varbinary, timestamp

BigBinary, VarBinary

RAW

RAW

DT_CY

smallmoney, money

smallmoney, money

Currency

DT_DATE

DT_DBDATE

DT_DBTIME

DT_DBTIMESTAMP

datetime, smalldatetime

datetime, smalldatetime

DateTime

TIMESTAMP, DATE, INTERVAL

TIMESTAMP, DATE, INTERVAL

TIME, TIMESTAMP, DATE

TIME, TIMESTAMP, DATE

DT_DECIMAL

DT_FILETIME

DT_GUID

uniqueidentifier

uniqueidentifier

GUID

DT_I1

DT_I2

smallint

smallint

Short

SMALLINT

SMALLINT

DT_I4

int

int

Long

INTEGER

INTEGER

DT_I8

bigint

bigint

BIGINT

BIGINT

DT_NUMERIC

decimal, numeric

decimal, numeric

Decimal

NUMBER, INT

NUMBER, INT

DECIMAL, NUMERIC

DECIMAL, NUMERIC

DT_R4

real

real

Single

REAL

REAL

DT_R8

float

float

Double

FLOAT, REAL

FLOAT, REAL

FLOAT, DOUBLE

FLOAT, DOUBLE

DT_STR

char, varchar

VarChar

CHAR, ROWID, VARCHAR2

CHAR, VARCHAR

CHAR, VARCHAR

DT_UI1

tinyint

tinyint

Byte

DT_UI2

DT_UI4

DT_UI8

DT_WSTR

nchar, nvarchar, sql_variant, xml

char, varchar, nchar, nvarchar, sql_variant, xml

LongText

NVARCHAR2, NCHAR

CHAR, ROWID, VARCHAR2, NVARCHAR2, NCHAR

GRAPHIC, VARGRAPHIC

GRAPHIC, VARGRAPHIC

DT_IMAGE

image

image

LongBinary

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, пользовательский

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, пользовательский

CHAR () FOR BIT DATA, VARCHAR () FOR BIT DATA

CHAR () FOR BIT DATA, VARCHAR () FOR BIT DATA, BLOB

DT_NTEXT

ntext

text, ntext

NCLOB, NVARCHAR, TEXT

LONG, CLOB, NCLOB, NVARCHAR, TEXT

LONG VARCHAR, NCHAR, NVARCHAR, TEXT

LONG VARCHAR, DBCLOB, NCHAR, NVARCHAR, TEXT

DT_TEXT

text

CLOB, LONG

LONG VARCHAR FOR BIT DATA

LONG VARCHAR FOR BIT DATA, CLOB

Сведения о сопоставлении типов данных в потоке данных см. в разделе Mapping Data Types in the Data Flow.

См. также

Основные понятия

Работа с данными в потоке данных

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Изменения
  • Обновлено описание типа данных DT_DBTIMESTAMP.

17 июля 2006 г.

Измененное содержимое
  • Отмечены проблемы, которые могут возникать, если логические типы данных преобразуются в целочисленные.
  • Отмечено, что значения столбцов с типом данных DT_STR или DT_WSTR, содержащие дополнительные символы конца строки усекаются в месте вхождения первого такого символа.

5 декабря 2005 г.

Измененное содержимое
  • Добавлены сведения и ссылка на раздел о сопоставлении типов данных служб Integration Services управляемым типам данных.
  • Добавлено сравнение DT_DATE и DT_DBTIMESTAMP.