国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

數(shù)據(jù)變換和轉(zhuǎn)換注意事項(SQL)

2024-07-21 02:30:46
字體:
供稿:網(wǎng)友
使用數(shù)據(jù)轉(zhuǎn)換服務(wù) (DTS) 轉(zhuǎn)變或轉(zhuǎn)換異類數(shù)據(jù)和目的服務(wù)器之間的數(shù)據(jù)之前,請考慮不同程序、提供程序以及驅(qū)動程序支
持?jǐn)?shù)據(jù)類型和 SQL 語句的方式的變化。

當(dāng)使用 Microsoft® SQL Server™ 作為數(shù)據(jù)源時,請考慮下列事項:

將 real 數(shù)據(jù)類型轉(zhuǎn)換為 int 數(shù)據(jù)類型也許不能返回精確的值,因為 SQL Server 2000 只支持精確度為 6 位數(shù)字的
real 數(shù)據(jù)類型。例如,real 型數(shù)字 2147480000 可能生成 2147480065 的 int 值。


從一個文本文件將 string (DBTYPE_WSTR) 列轉(zhuǎn)換為 date (DBTYPE_DATE) 或 time (DBTYPE_TIME) 列時,OLE DB 數(shù)據(jù)轉(zhuǎn)
換服務(wù)組件只接受一種日期或時間格式 (yyyy-mm-dd hh:mm:ss.fffffffff)。使用日期時間字符串轉(zhuǎn)換,或者使用 CDate
函數(shù)編碼 Microsoft ActiveX® 腳本轉(zhuǎn)換正確地轉(zhuǎn)換日期。


SQL Server 2000 不支持 OLE DB 類型 DBTYPE_DATE 或 DBTYPE_TIME。SQL Server 2000 只支持 DBTYPE_DATETIME。


若要通過多步驟訪問數(shù)據(jù),請避免在轉(zhuǎn)換過程中使用 temp 表。應(yīng)使用全局 temp 表或在 tempdb 中創(chuàng)建永久表。


從 temp 表返回行的存儲過程不能用作轉(zhuǎn)換源。可以使用存儲過程從全局 temp 表或表返回行。


在轉(zhuǎn)換數(shù)據(jù)任務(wù)、數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)或 DTS 設(shè)計器中的執(zhí)行 SQL 任務(wù)中使用臨時表時,請記住:不能使用 Transact-
SQL 語句或調(diào)用 temp 表的存儲過程作為源。
該限制并不應(yīng)用于 DTS 設(shè)計器的外部。可使用通過編程方式訪問 SQL Server temp 表的源語句或存儲過程。

DTS 導(dǎo)入/導(dǎo)出向?qū)Ш?DTS 設(shè)計器
當(dāng)使用 DTS 導(dǎo)入導(dǎo)出向?qū)Ш?DTS 設(shè)計器創(chuàng)建包時,請考慮以下事項:

DTS 用戶界面允許共享任務(wù)中現(xiàn)有的連接,但是同一個連接不能既用在一個轉(zhuǎn)換的源中又用在該轉(zhuǎn)換的目的中。


使用 DTS 設(shè)計器或 DTS 導(dǎo)入/導(dǎo)出向?qū)В锌赡転橐恍┲蛔鳛閿?shù)據(jù)源的提供程序指定只讀或正在使用狀態(tài)(例如,
Microsoft access 和 ODBC DSN )。單擊"連接屬性"對話框中的"高級"選項卡,然后在"高級連接屬性"對話框中,將模式
屬性值設(shè)置為 1。


使用 DTS 導(dǎo)入/導(dǎo)出向?qū)Щ?DTS 設(shè)計器創(chuàng)建表時,在目的地上創(chuàng)建的表的所有者為當(dāng)前用戶(通常是 dbo),與誰是源表
的所有者無關(guān)。這將產(chǎn)生這種情況:dbo 試圖在目的地創(chuàng)建一個表,而該表的名稱已經(jīng)存在,從而導(dǎo)致嘗試失敗。


當(dāng)使用 DTS 設(shè)計器定義數(shù)據(jù)驅(qū)動的查詢時,數(shù)據(jù)目的地必須能夠支持 OLE DB ICommand 接口。由于這種限制,類似文本
文件的目的不被支持。


如果 text、ntext 和 image 類型的字段長度超過 8388602 字節(jié),則 DTS 的復(fù)制 SQL Server 對象任務(wù)將截斷超出的部
分。DTS 設(shè)計器或 DTS 導(dǎo)入/導(dǎo)出向?qū)Р伙@示任何錯誤信息,而是顯示任務(wù)已成功完成。
唯一的失敗指示是一條寫入日志文件的日志消息,此文件的名稱為 <server>.<database>.log,位于"復(fù)制 SQL Server 對
象任務(wù)屬性"對話框的"復(fù)制"選項卡所指定的腳本文件目錄中。此日志消息詳細(xì)說明表和列,但不指出發(fā)生截斷的行。無任
何錯誤記錄寫入 DTS 錯誤文件或 SQL Server 日志。

Microsoft SNA Server
當(dāng)使用 Microsoft SNA Server 作為數(shù)據(jù)源時,請考慮下列事項:

AS/400 和 VSAM 的 Microsoft OLE DB 提供程序不支持 DTS 導(dǎo)入/導(dǎo)出向?qū)в脕韯?chuàng)建或截斷表的 SQL 語句。
Microsoft Access
使用 Access 時,應(yīng)考慮下列事項:

當(dāng)從 SQL Server 2000 中將數(shù)據(jù)導(dǎo)出到 Microsoft Access 97 或更早的版本中,Access 的 Microsoft OLE DB 提供程序
在內(nèi)存中為所有插入設(shè)置緩沖區(qū),并且只在 DTS 導(dǎo)入/導(dǎo)出向?qū)瓿刹僮鲿r提交它們。結(jié)果是,可以在導(dǎo)出大量表時,面
對內(nèi)存較小的形勢。然而,可以通過構(gòu)造在多個傳遞中發(fā)送較少行數(shù)的 SELECT 語句解決該問題。
Microsoft Visual FoxPRo
Microsoft Visual FoxPro&reg; 只支持 numeric 數(shù)據(jù)類型的 (15,9) 精度。如果導(dǎo)出到 Visual FoxPro 的數(shù)據(jù)超出該精
度,則會被截斷并四舍五入。

Visual FoxPro 不支持 SELECT INTO 語句。


DTS 查詢設(shè)計器支持 Visual FoxPro INSERT VALUE 語句,但不支持使用 SELECT 語句的 INSERT 語句。


ODBC 的 Microsoft OLE DB 驅(qū)動程序無法使用 FoxPro ODBC 驅(qū)動程序?qū)?BLOB 寫入 Visual FoxPro,因為 Visual
FoxPro 不支持動態(tài)游標(biāo)。
ODBC
當(dāng)連接到 ODBC 數(shù)據(jù)源時,請考慮下列事項:

ODBC 的 Microsoft OLE DB 提供程序在執(zhí)行導(dǎo)出操作時需要一個在帶有 BLOB 數(shù)據(jù)列的所有目標(biāo)表上的唯一鍵。


當(dāng)使用帶有 SQL Server ODBC 驅(qū)動程序的 ODBC 的 Microsoft OLE DB 提供程序時,在安排帶有源行集中其它數(shù)據(jù)類型的
列之后安排所有 BLOB 列。可以使用 SELECT 語句重新將 BLOB 列安排到源行集的末尾。DTS 導(dǎo)入/導(dǎo)出向?qū)ё詣拥貓?zhí)行該
操作。


重要  當(dāng)使用帶有 SQL Server ODBC 驅(qū)動程序的 ODBC 的 Microsoft OLE DB 提供程序時,請嘗試預(yù)覽帶有連接忙錯誤的
存儲過程失敗。如果使用 SQL Server 的 Microsoft OLE DB 提供程序,該問題就不會發(fā)生。

如果一個用于 SQL Server 的 Microsoft ODBC 驅(qū)動程序連接由多個線程共享,此連接可能會失敗,并返回錯誤信
息"Connection is busy with results for another hstmt"(此連接正忙于其它 hstmt 的結(jié)果)。在某些情況下,這將
影響通過 DTS 導(dǎo)入/導(dǎo)出向?qū)傻陌J褂靡韵路椒ㄖ唤鉀Q此問題:
將 MaxConcurrentSteps 屬性設(shè)置為1 以消除競爭的線程。


創(chuàng)建其它的 ODBC 連接以消除連接共享。


使用用于 SQL Server 的 Microsoft OLE DB 提供程序 (SQLOLEDB) 連接數(shù)據(jù)庫。如果需要連接 SQL Server 6.5 數(shù)據(jù)
庫,則運行 Instcatl.sql 以啟用通過用于 SQL Server 的 Microsoft OLE DB 提供程序進行訪問。
Oracle
當(dāng)使用 Oracle 作為數(shù)據(jù)源時,請考慮以下事項:

用于 Oracle 的 Microsoft ODBC 和 OLEDB 驅(qū)動程序支持 Oracle 7.3 BLOB 數(shù)據(jù)類型,不支持 Oracle 8.0 數(shù)據(jù)類型。
例如,不支持 BLOB、CLOB、NCLOB 和 BFILE。


用于 Oracle 的 Microsoft OBDC 驅(qū)動程序不支持將 Unicode 字符串發(fā)送到 Oracle 服務(wù)器中。Oracle 要求在 Unicode
字符串前加上前綴字母 N。


用于 Oracle 的 Microsoft OBDC 驅(qū)動程序不支持 Oracle number 數(shù)據(jù)類型的負(fù)向縮放。


用于 Oracle 的 Microsoft OBDC 驅(qū)動程序報告無指定精度的 Oracle number 數(shù)據(jù)類型的長度為 20 位數(shù)字。當(dāng)從
Oracle (不考慮目的)中導(dǎo)入時,如果有多于 20 位的數(shù)字,并且如果目的表還不存在,可能必須手工地增加精度。


在表中 Oracle 僅支持一個 LONG (BLOB) 數(shù)據(jù)列。


不能導(dǎo)入或?qū)С鰮碛谢旌匣蛐懨Q的 Oracle 列。也不能通過使用 Oracle 列名稱(包含使用 DTS 導(dǎo)入/導(dǎo)出向?qū)У目?br>格)來轉(zhuǎn)換或復(fù)制數(shù)據(jù)。Oracle 要求精確指定并引用區(qū)分大小寫的列名稱。


若要在 SQL Server 2000 和 Oracle 之間執(zhí)行分布式事務(wù),必須使用 Oracle 8.0.4.1 版本或更新版本。有關(guān)更多信息,
請參見分布式事務(wù)。


由于用于 Oracle 的 Microsoft OLE DB 提供程序不支持 IcommandWithParameters,所以它不能用作數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)
的目的地。在 DTS 設(shè)計器中使用此提供程序時,轉(zhuǎn)換數(shù)據(jù)任務(wù)、數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)以及執(zhí)行 SQL 任務(wù)上的"參數(shù)"按鈕
將被禁用。
IBM AS/400 上的 DB2
當(dāng)連接到 DB2 數(shù)據(jù)源時,請考慮以下事項:

在 AS/400 系統(tǒng)上不支持 Unicode 或 BLOB。


在 AS/400 服務(wù)器上不能轉(zhuǎn)換任何有 NULL 列值的表,因為 AS/400 在其 CREATE TABLE 語句中不支持 NULL 語法。然
而,如果編輯 CREATE TABLE 語法以清除對 NULL 的引用時,則可以發(fā)送 NULL 值。AS/400 不支持 NOT NULL;如果沒指
定就假定為 NULL。
使用 Sybase ODBC 驅(qū)動程序
當(dāng)連接到一個 Sybase ODBC 數(shù)據(jù)源時,請考慮以下事項:

當(dāng)使用 DTS 導(dǎo)入/導(dǎo)出向?qū)?shù)據(jù)從 SQL Server 轉(zhuǎn)換到 Sybase 11 版本時:
默認(rèn)情況下,SQL Server numeric (3,0) 數(shù)據(jù)類型映射為 Sybase smallmoney。為避免數(shù)據(jù)丟失,請更改此設(shè)置。


默認(rèn)情況下,SQL Server numeric (18,x 或 19,x) 數(shù)據(jù)類型映射為 Sybase money 數(shù)據(jù)類型。為避免數(shù)據(jù)丟失,請更改
此設(shè)置。


將數(shù)據(jù)移動到一個新的 Sybase 表時,如果單擊了"列映射和轉(zhuǎn)換"對話框中的"確定"按鈕,向?qū)祷劐e誤信息"表已存
在"。應(yīng)該忽略此消息。


不能使用 DTS 導(dǎo)入/導(dǎo)出向?qū)Сゲ⑶抑匦聞?chuàng)建 Sybase 表。必須不使用向?qū)韴?zhí)行此操作。
DTS 查詢設(shè)計器不支持 Sybase SQLAnywhere CREATE TABLE 語句。


由于 SQLAnywhere 驅(qū)動程序中的限制,DTS 導(dǎo)入/導(dǎo)出向?qū)看沃荒軐⒁粋€表移動到 SQLAnywhere 數(shù)據(jù)庫。可以使用
DTS 設(shè)計器來克服此限制。然而,因為 SQLAnywhere 驅(qū)動程序不是安全線程,所以,必須將每個表的 Step 對象的
ExecuteInMainThread 屬性設(shè)置為 True。


如果表中包含 BLOB 列,則不能將此表復(fù)制到 Sybase 目的中。


如果通過編程方式從 Sybase 中復(fù)制一個包含 image 數(shù)據(jù)類型的表,則更改默認(rèn)的 BLOB 設(shè)置會導(dǎo)致失敗。
dBase 和 Paradox
當(dāng)連接到 dBase 和 Paradox 數(shù)據(jù)源時,請考慮以下事項:

dBase 和 Paradox 中的表名稱被限制為八個字符。dBase 中的列名稱被限制為 10 個字符。
文件導(dǎo)入或?qū)С?br>當(dāng)從文本文件導(dǎo)入或?qū)С鰯?shù)據(jù)時,請考慮以下事項:

在 char 或 varchar 列中導(dǎo)入或?qū)С鰯?shù)據(jù)時,如果客戶端 OEM 代碼頁與服務(wù)器上的代碼頁不同,則某些擴展字符可能不
被復(fù)制。在 nchar 或 nvarchar 列中導(dǎo)入或?qū)С鰯?shù)據(jù)時,所有字符均能正確復(fù)制。


如果將 BLOB(包括 SQL Server 的 text 和 ntext 數(shù)據(jù)類型)列導(dǎo)出到固定長度的文本字段中,則將默認(rèn)長度設(shè)置為
BLBO 字段的最大長度(大約 2GB)。通過選擇較小的但足夠的字段長度來防止磁盤溢出,或者在可能的時候使用分隔格
式。


DTS 中使用的用于文本文件的 OLE DB 提供程序不能處理超過兩兆字節(jié) (MB) 的 BLOB 數(shù)據(jù)列。
代碼頁、排序規(guī)則和非 Unicode 數(shù)據(jù)問題
使用 DTS 在具有不同代碼頁和排序規(guī)則的 SQL Server 數(shù)據(jù)庫間復(fù)制數(shù)據(jù)時,數(shù)據(jù)可能會丟失或轉(zhuǎn)換不正確。

為避免出現(xiàn)轉(zhuǎn)換問題,應(yīng)以 Unicode 形式存儲國際數(shù)據(jù)。一旦轉(zhuǎn)換為 Unicode 后,便可很容易地將任何排序規(guī)則或代碼
頁中的數(shù)據(jù)傳送到任何 Microsoft SQL Server 2000 或 Microsoft SQL Server 7.0 數(shù)據(jù)庫,而不會出現(xiàn)數(shù)據(jù)丟失或轉(zhuǎn)換
不正確這類問題。

在 Microsoft SQL Server 2000 中,排序規(guī)則與具體的代碼頁相關(guān)聯(lián)并被指派給各個列。(Microsoft SQL Server 7.0
使用單個的默認(rèn)代碼頁且不支持列級排序規(guī)則)。如果用于源列和目的列的代碼頁匹配,則非 Unicode 列不會發(fā)生數(shù)據(jù)丟
失。在非 Unicode 列間復(fù)制數(shù)據(jù)時,如果源列與目的列不匹配,則將發(fā)生數(shù)據(jù)丟失。在某些情況下,DTS 執(zhí)行最佳的匹配
映射。如果源代碼頁包含的字符在目的代碼頁中未出現(xiàn),則將發(fā)生數(shù)據(jù)丟失。此外,DTS 執(zhí)行復(fù)制時不需要任何轉(zhuǎn)換干
預(yù),這將導(dǎo)致在兩個代碼頁中不是由同一個二進制值表示的數(shù)據(jù)丟失。下面的問題及準(zhǔn)則分別針對使用復(fù)制 SQL Server
對象任務(wù)的情況,和使用復(fù)制列轉(zhuǎn)換在不同排序規(guī)則或代碼頁之間復(fù)制數(shù)據(jù)的情況。

復(fù)制 SQL Server 對象任務(wù)
下面論述復(fù)制 SQL Server 對象任務(wù)如何處理非 Unicode 數(shù)據(jù):

在 SQL Server 2000 實例間復(fù)制數(shù)據(jù)時,只要設(shè)置復(fù)制 SQL Server 對象任務(wù)的 UseCollation 屬性,便不會發(fā)生數(shù)據(jù)丟
失。


將數(shù)據(jù)從 SQL Server 2000 實例復(fù)制到 SQL Server 7.0 時,對于具有與數(shù)據(jù)庫默認(rèn)排序規(guī)則代碼頁相匹配的排序規(guī)則的
列,使用最佳匹配映射。而具有不同代碼頁的列中所存儲的數(shù)據(jù),則被解釋為正在用默認(rèn)代碼頁進行編碼處理,轉(zhuǎn)換過程
中將伴隨數(shù)據(jù)丟失。


將數(shù)據(jù)從 SQL Server 7.0 復(fù)制到SQL Server 2000 實例時,由于 SQL Server 7.0 無法確定其默認(rèn)代碼頁所映射的排序
規(guī)則,UseCollation 屬性不可用。執(zhí)行復(fù)制 SQL Server 對象任務(wù)期間不支持任何排序規(guī)則,因此,將給非 Unicode 目
的列指派目的數(shù)據(jù)庫的默認(rèn)排序規(guī)則。如果與此排序規(guī)則相關(guān)聯(lián)的代碼頁與源數(shù)據(jù)庫的代碼頁不匹配,DTS 將執(zhí)行最佳匹
配映射。


將數(shù)據(jù)從 SQL Server 7.0 復(fù)制到 SQL Server 7.0 時,如果源數(shù)據(jù)庫和目的數(shù)據(jù)庫使用不同的默認(rèn)代碼頁,DTS 將執(zhí)行
最佳匹配映射。
若要確保復(fù)制非 Unicode 時不發(fā)生數(shù)據(jù)丟失,可使用 SQL Server 大容量復(fù)制功能以 Unicode 格式導(dǎo)出數(shù)據(jù),然后使用
大容量復(fù)制或 DTS 導(dǎo)入數(shù)據(jù)。

若要禁用默認(rèn)排序規(guī)則腳本,請?zhí)砑哟a或使用脫接編輯或動態(tài)屬性任務(wù)將 SQLDMOScript2_70Only 的值添加到復(fù)制 SQL
Server 對象任務(wù)的 ScriptOptionEx 屬性中。

復(fù)制列轉(zhuǎn)換
下面論述復(fù)制列轉(zhuǎn)換如何在不同代碼頁之間處理非 Unicode 數(shù)據(jù):

如果源列為 Unicode 而目的列為非 Unicode,則執(zhí)行最佳匹配映射,并嘗試在源列和目的列之間轉(zhuǎn)換數(shù)據(jù)。


如果源列為非 Unicode 而目的列為 Unicode,則不論實際使用的代碼頁是什么,DTS 都將源列視為屬于代碼頁 1252。


如果源列和目的列都為非 Unicode,原始數(shù)據(jù)不經(jīng)轉(zhuǎn)換即被復(fù)制,將發(fā)生部分?jǐn)?shù)據(jù)丟失。  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 广灵县| 酉阳| 和静县| 吴川市| 遵义市| 宜丰县| 天门市| 呼伦贝尔市| 余干县| 阆中市| 两当县| 永福县| 崇信县| 城步| 眉山市| 凤台县| 五台县| 岳池县| 华池县| 沧州市| 吴川市| 南江县| 呼图壁县| 宁河县| 宿松县| 加查县| 波密县| 娄底市| 延吉市| 保德县| 恭城| 陵川县| 南安市| 广西| 华宁县| 县级市| 聊城市| 纳雍县| 蕲春县| 资源县| 阳春市|