分享
 
 
 

数据变换和转换注意事项(SQL)

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

使用数据转换服务 (DTS) 转变或转换异类数据和目的服务器之间的数据之前,请考虑不同程序、提供程序以及驱动程序支持数据类型和 SQL 语句的方式的变化。

当使用 Microsoft® SQL Server™ 作为数据源时,请考虑下列事项:

将 real 数据类型转换为 int 数据类型也许不能返回精确的值,因为 SQL Server 2000 只支持精确度为 6 位数字的real 数据类型。例如,real 型数字 2147480000 可能生成 2147480065 的 int 值。

从一个文本文件将 string (DBTYPE_WSTR) 列转换为 date (DBTYPE_DATE) 或 time (DBTYPE_TIME) 列时,OLE DB 数据转

换服务组件只接受一种日期或时间格式 (yyyy-mm-dd hh:mm:ss.fffffffff)。使用日期时间字符串转换,或者使用 CDate

函数编码 Microsoft ActiveX® 脚本转换正确地转换日期。

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

若要通过多步骤访问数据,请避免在转换过程中使用 temp 表。应使用全局 temp 表或在 tempdb 中创建永久表。

从 temp 表返回行的存储过程不能用作转换源。可以使用存储过程从全局 temp 表或表返回行。

在转换数据任务、数据驱动的查询任务或 DTS 设计器中的执行 SQL 任务中使用临时表时,请记住:不能使用 Transact-

SQL 语句或调用 temp 表的存储过程作为源。

该限制并不应用于 DTS 设计器的外部。可使用通过编程方式访问 SQL Server temp 表的源语句或存储过程。

DTS 导入/导出向导和 DTS 设计器

当使用 DTS 导入导出向导和 DTS 设计器创建包时,请考虑以下事项:

DTS 用户界面允许共享任务中现有的连接,但是同一个连接不能既用在一个转换的源中又用在该转换的目的中。

使用 DTS 设计器或 DTS 导入/导出向导,有可能为一些只作为数据源的提供程序指定只读或正在使用状态(例如,

Microsoft Access 和 ODBC DSN )。单击"连接属性"对话框中的"高级"选项卡,然后在"高级连接属性"对话框中,将模式

属性值设置为 1。

使用 DTS 导入/导出向导或 DTS 设计器创建表时,在目的地上创建的表的所有者为当前用户(通常是 dbo),与谁是源表

的所有者无关。这将产生这种情况:dbo 试图在目的地创建一个表,而该表的名称已经存在,从而导致尝试失败。

当使用 DTS 设计器定义数据驱动的查询时,数据目的地必须能够支持 OLE DB ICommand 接口。由于这种限制,类似文本

文件的目的不被支持。

如果 text、ntext 和 image 类型的字段长度超过 8388602 字节,则 DTS 的复制 SQL Server 对象任务将截断超出的部

分。DTS 设计器或 DTS 导入/导出向导不显示任何错误信息,而是显示任务已成功完成。

唯一的失败指示是一条写入日志文件的日志消息,此文件的名称为 ..log,位于"复制 SQL Server 对

象任务属性"对话框的"复制"选项卡所指定的脚本文件目录中。此日志消息详细说明表和列,但不指出发生截断的行。无任

何错误记录写入 DTS 错误文件或 SQL Server 日志。

Microsoft SNA Server

当使用 Microsoft SNA Server 作为数据源时,请考虑下列事项:

AS/400 和 VSAM 的 Microsoft OLE DB 提供程序不支持 DTS 导入/导出向导用来创建或截断表的 SQL 语句。

Microsoft Access

使用 Access 时,应考虑下列事项:

当从 SQL Server 2000 中将数据导出到 Microsoft Access 97 或更早的版本中,Access 的 Microsoft OLE DB 提供程序

在内存中为所有插入设置缓冲区,并且只在 DTS 导入/导出向导完成操作时提交它们。结果是,可以在导出大量表时,面

对内存较小的形势。然而,可以通过构造在多个传递中发送较少行数的 SELECT 语句解决该问题。

Microsoft Visual FoxPro

Microsoft Visual FoxPro® 只支持 numeric 数据类型的 (15,9) 精度。如果导出到 Visual FoxPro 的数据超出该精

度,则会被截断并四舍五入。

Visual FoxPro 不支持 SELECT INTO 语句。

DTS 查询设计器支持 Visual FoxPro INSERT VALUE 语句,但不支持使用 SELECT 语句的 INSERT 语句。

ODBC 的 Microsoft OLE DB 驱动程序无法使用 FoxPro ODBC 驱动程序将 BLOB 写入 Visual FoxPro,因为 Visual

FoxPro 不支持动态游标。

ODBC

当连接到 ODBC 数据源时,请考虑下列事项:

ODBC 的 Microsoft OLE DB 提供程序在执行导出操作时需要一个在带有 BLOB 数据列的所有目标表上的唯一键。

当使用带有 SQL Server ODBC 驱动程序的 ODBC 的 Microsoft OLE DB 提供程序时,在安排带有源行集中其它数据类型的

列之后安排所有 BLOB 列。可以使用 SELECT 语句重新将 BLOB 列安排到源行集的末尾。DTS 导入/导出向导自动地执行该

操作。

重要 当使用带有 SQL Server ODBC 驱动程序的 ODBC 的 Microsoft OLE DB 提供程序时,请尝试预览带有连接忙错误的

存储过程失败。如果使用 SQL Server 的 Microsoft OLE DB 提供程序,该问题就不会发生。

如果一个用于 SQL Server 的 Microsoft ODBC 驱动程序连接由多个线程共享,此连接可能会失败,并返回错误信

息"Connection is busy with results for another hstmt"(此连接正忙于其它 hstmt 的结果)。在某些情况下,这将

影响通过 DTS 导入/导出向导生成的包。使用以下方法之一解决此问题:

将 MaxConcurrentSteps 属性设置为1 以消除竞争的线程。

创建其它的 ODBC 连接以消除连接共享。

使用用于 SQL Server 的 Microsoft OLE DB 提供程序 (SQLOLEDB) 连接数据库。如果需要连接 SQL Server 6.5 数据

库,则运行 Instcatl.sql 以启用通过用于 SQL Server 的 Microsoft OLE DB 提供程序进行访问。

Oracle

当使用 Oracle 作为数据源时,请考虑以下事项:

用于 Oracle 的 Microsoft ODBC 和 OLEDB 驱动程序支持 Oracle 7.3 BLOB 数据类型,不支持 Oracle 8.0 数据类型。

例如,不支持 BLOB、CLOB、NCLOB 和 BFILE。

用于 Oracle 的 Microsoft OBDC 驱动程序不支持将 Unicode 字符串发送到 Oracle 服务器中。Oracle 要求在 Unicode

字符串前加上前缀字母 N。

用于 Oracle 的 Microsoft OBDC 驱动程序不支持 Oracle number 数据类型的负向缩放。

用于 Oracle 的 Microsoft OBDC 驱动程序报告无指定精度的 Oracle number 数据类型的长度为 20 位数字。当从

Oracle (不考虑目的)中导入时,如果有多于 20 位的数字,并且如果目的表还不存在,可能必须手工地增加精度。

在表中 Oracle 仅支持一个 LONG (BLOB) 数据列。

不能导入或导出拥有混合或小写名称的 Oracle 列。也不能通过使用 Oracle 列名称(包含使用 DTS 导入/导出向导的空

格)来转换或复制数据。Oracle 要求精确指定并引用区分大小写的列名称。

若要在 SQL Server 2000 和 Oracle 之间执行分布式事务,必须使用 Oracle 8.0.4.1 版本或更新版本。有关更多信息,

请参见分布式事务。

由于用于 Oracle 的 Microsoft OLE DB 提供程序不支持 IcommandWithParameters,所以它不能用作数据驱动的查询任务

的目的地。在 DTS 设计器中使用此提供程序时,转换数据任务、数据驱动的查询任务以及执行 SQL 任务上的"参数"按钮

将被禁用。

IBM AS/400 上的 DB2

当连接到 DB2 数据源时,请考虑以下事项:

在 AS/400 系统上不支持 Unicode 或 BLOB。

在 AS/400 服务器上不能转换任何有 NULL 列值的表,因为 AS/400 在其 CREATE TABLE 语句中不支持 NULL 语法。然

而,如果编辑 CREATE TABLE 语法以清除对 NULL 的引用时,则可以发送 NULL 值。AS/400 不支持 NOT NULL;如果没指

定就假定为 NULL。

使用 Sybase ODBC 驱动程序

当连接到一个 Sybase ODBC 数据源时,请考虑以下事项:

当使用 DTS 导入/导出向导将数据从 SQL Server 转换到 Sybase 11 版本时:

默认情况下,SQL Server numeric (3,0) 数据类型映射为 Sybase smallmoney。为避免数据丢失,请更改此设置。

默认情况下,SQL Server numeric (18,x 或 19,x) 数据类型映射为 Sybase money 数据类型。为避免数据丢失,请更改

此设置。

将数据移动到一个新的 Sybase 表时,如果单击了"列映射和转换"对话框中的"确定"按钮,向导会返回错误信息"表已存

在"。应该忽略此消息。

不能使用 DTS 导入/导出向导除去并且重新创建 Sybase 表。必须不使用向导来执行此操作。

DTS 查询设计器不支持 Sybase SQLAnywhere CREATE TABLE 语句。

由于 SQLAnywhere 驱动程序中的限制,DTS 导入/导出向导每次只能将一个表移动到 SQLAnywhere 数据库。可以使用

DTS 设计器来克服此限制。然而,因为 SQLAnywhere 驱动

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有