共用方式為


Integration Services 資料類型

更新: 2007 年 9 月 15 日

當資料輸入封裝中的資料流程時,擷取資料的來源會將資料轉換為 Integration Services 資料類型。數值資料會指派為數值資料類型、字串資料指派為字元資料類型,而日期則是指派為日期資料類型。其他資料,例如 GUID 和「二進位大型物件區塊 (BLOB)」也都會被指派適當的 Integration Services 資料類型。如果資料的資料類型不能轉換為 Integration Services 資料類型,則會發生錯誤。

部分資料流程元件會在 Integration Services 資料類型和 Microsoft .NET Framework 的 Managed 資料類型之間轉換資料類型。如需有關 Integration Services 與 Managed 資料類型間對應的詳細資訊,請參閱<Mapping Data Types in the Data Flow>。

下表列出 Integration Services 資料類型。

資料類型 描述

DT_BOOL

布林值。

DT_BYTES

二進位資料值。長度是變數,最大長度為 8000 個位元組。

DT_CY

貨幣值。此資料類型是小數位數為 4,最大有效位數為 19 的 8 位元組帶正負號的整數。

DT_DATE

包含年、月、日和小時的日期結構。

DT_DATE 資料類型需使用 8 位元組的浮點數加以實作。日期是以累進整數來表示,從 1899 年 12 月 30 日開始,並以午夜作為零時。小時值則以小數點後數字部分的絕對值來表示。不過,浮點值不能代表所有實數值;因此,DT_DATE 可以呈現的日期範圍便有所限制。

另一方面,DT_DBTIMESTAMP 是以包含年、月、日、時、分、秒及毫秒等個別欄位的結構來表示,而且這種資料類型能夠呈現的日期範圍並無任何限制。

DT_DBDATE

包含年、月和日的日期結構。

DT_DBTIME

包含小時、分鐘和秒的時間結構。

DT_DBTIMESTAMP

包含年、月、日、小時、分鐘、秒和毫秒的時間戳記結構。

DT_DECIMAL

具有固定有效位數和固定小數位數的精確數值。此資料類型是具有單獨的符號,小數位數為 0 至 28,最大有效位數為 29 的 12 位元組不帶正負號的整數。

DT_FILETIME

代表自 1601 年 1 月 1 日起 100 奈秒間隔數目的 64 位元組值。

DT_GUID

全域唯一識別碼 (GUID)。

DT_I1

一位元組帶正負號的整數。

DT_I2

兩位元組帶正負號的整數。

DT_I4

四位元組帶正負號的整數。

DT_I8

八位元組帶正負號的整數。

DT_NUMERIC

具有固定有效位數和小數位數的精確數值。此資料類型是具有單獨的符號,小數位數為 0 至 38,最大有效位數為 38 的 16 位元組不帶正負號的整數。

DT_R4

單精度浮點值。

DT_R8

雙精度浮點值。

DT_STR

最大長度為 8000 字元,以 Null 終止的 ANSI/MBCS 字元字串。如果資料行值包含額外的 Null 結束字元,字串就會在第一個 Null 出現時被截斷。

DT_UI1

一位元組不帶正負號的整數。

DT_UI2

兩位元組不帶正負號的整數。

DT_UI4

四位元組不帶正負號的整數。

DT_UI8

八位元組不帶正負號的整數。

DT_WSTR

最大長度為 4000 字元,以 Null 終止的 Unicode 字元字串。如果資料行值包含額外的 Null 結束字元,字串就會在第一個 Null 出現時被截斷。

DT_IMAGE

大小上限為 231-1 (2,147,483,647) 個位元組的二進位值。.

DT_NTEXT

最大長度為 230 - 1 (1,073,741,823) 個字元的 Unicode 字元字串。

DT_TEXT

最大長度為 231 -1 (2,147,483,647) 個字元的 ANSI/MBCS 字元字串。

變更資料行的資料類型

如果資料行中的資料不需要來源資料類型配置的全形字元,您可能需要變更該資料行的資料類型。在傳送資料時,每個資料列愈窄愈有助於最佳化效能,因為每個資料列愈窄,資料從來源移動到目的地的速度就會愈快。

Integration Services 包含完整的一組數值資料類型,以便您可以使資料類型與資料大小密切相符。例如,如果資料類型為 DT_UI8 之資料列中的值始終是 0 至 3000 之間的整數,則您可以將資料類型變更為 DT_UI2。同樣地,如果資料類型為 DT_CY 的資料行可以透過改用整數資料類型來滿足封裝資料需求,則您可以將資料類型變更為 DT_I4。

您也可以變更具有日期/時間資料之資料行的資料類型,以擷取該資料的日期或時間部分。例如,如果您將資料行的資料類型從 DT_DBTIMESTAMP 變更為 DT_DBTIME,則僅該值的小時、分鐘和秒部分可用。

您可以透過下列方式變更資料行的資料類型:

  • 使用轉換以運算式的結果取代資料行的值,或建立資料類型與原始資料行不同的資料行副本。如需詳細資訊,請參閱<衍生的資料行轉換>。
  • 使用轉換將資料行的資料類型從一個資料類型轉換為不同的資料類型。如需詳細資訊,請參閱<資料轉換>。
ms141036.note(zh-tw,SQL.90).gif附註:
布林值是邏輯值,而非數字。雖然布林值可以在某些環境下顯示為數字,但不會儲存為數字,而且不同的程式設計語言將布林值表示成數值的方式各有不同,.NET Framework 方法也是如此。 例如,Visual Basic 提供的轉換函數會將 True 轉換為 -1;然而 .NET Framework 中的 System.Convert.ToInt32 方法卻將 True 轉換為 +1。Integration Services 運算式語言則將 True 轉換為 -1。 若要避免錯誤或非預期結果,您所撰寫的程式碼不應該以特定數值表示 TrueFalse。您應該盡可能將布林變數的使用限制在當初所設計的邏輯值上。

將 Integration Services 資料類型對應到資料庫資料類型

下表提供將某些資料庫所使用的資料類型對應到 Integration Services 資料類型的指南。這些對應是摘錄自「SQL Server 匯入和匯出精靈」在匯入這些來源的資料時所使用的對應檔案。如需這些對應檔案的詳細資訊,請參閱<使用 SQL Server 匯入和匯出精靈建立封裝>。

ms141036.note(zh-tw,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

貨幣

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, user-defined

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, user-defined

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 協助

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

變更的內容:
  • 更新 DT_DBTIMESTAMP 資料類型的說明。

2006 年 7 月 17 日

變更的內容:
  • 說明將布林資料類型轉換成整數時可能發生的問題。
  • 說明包含額外 Null 結束字元的 DT_STR 或 DT_WSTR 類型的資料行值,會在第一個 Null 字元處被截斷。

2005 年 12 月 5 日

變更的內容:
  • 新增有關將 Integration Services 資料類型對應至 Managed 資料類型的資訊和主題連結。
  • 新增 DT_DATE 和 DT_DBTIMESTAMP 的比較。