SSIS连接的一个问题,急

LearyCJY 2010-06-03 12:52:35
SSIS中如何用OLE DB源连接Sybase啊,我选了OLE DB连接,在连接管理器中新建连接,选的是本机 OLE DB/Sybase OLEDB Provider,测试连接成功,但是,选初始目录的时候下拉框没什么东西,于是我就手动填写了数据库的名称,测试连接,成功。于是就新建立了一个OLE DB连接管理器,我就用了这个连接管理器,选择了Sql命令,但是当我只是简单的select 1的时候预览就报错了,报错为弹出了个东西,上面写着:
数据流任务【OLE DB源1【1546】出错】:SSIS错误代码DTS_E_OILDBERROR。出现OLE DB错误。错误代码:0x080004001。
数据流任务【OLE DB源1【1546】出错】:无法再数据源中检索列信息。请确保数据库中存在目标表。
Package【连接管理器【我取的连接管理器名称】】出错:连接管理器无法脱离事务。
其他信息:
异常来自HRESULT:0xC020204A(Microsoft.SqlServer.DTSPiplineWrap)
这样的错误信息,不知道什么原因,OLE能不能连到Sybase啊?我用ADO.net的那个源是可以连过去,但是用那个之后传入的参数就不能使用了,这个就相当令人蛋疼了。请教高手们,这个OLE DB能不能连Sybase呢?怎么都连部上去呢。。。不知道什么原因。
...全文
582 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
LearyCJY 2010-06-05
  • 打赏
  • 举报
回复
呵呵。。。11楼哥你是最棒的。。。哈哈。。。厉害。。。明白了
永生天地 2010-06-03
  • 打赏
  • 举报
回复
sybase..不熟

select 1 可以吗?

写个完全的呢
dawugui 2010-06-03
  • 打赏
  • 举报
回复
参考这个:
SQL Server到SYBASE连接服务器的实现 

作者: CCBZZP


本文的测试环境为:
操作系统: WINDOWS2000 SERVER (繁体系统)
安装数据库: SQLSERVER2000(英文版)和SYBASE8.0客户端(英文版)


具体实现步骤:
1.要求pc机上安装SYBASE8.0客户端软件和sqlserver2000软件。
2.配置windows的ODBC数据源:
开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择ADAPTIVE SERVER ANYWHERE8.0—》自定义数据源名称(随意如: SYBASETEST)—》数据库名称(必选!)—》OK完成。

3. 选择刚才配置的数据源名称, 再选择 配置, 跳出SYBASETEST MESSAGES:

The data source is not connected. Connecting to the data source will provide useful information during configuration. Would you like to connect to the data source?

选择YES(OK或确认)即可

进入CONNECT TO SYBASE DATABASE画面:

USER ID: 输入SYBASE DATABASE的用户

PASSWORD: 输入SYBASE DATABASE的用户的密码

CONNECTION MODE: 可以选择默认的SHARE模式

选择OK(确认)即可!

配置和测试ODBC完成!


4.配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:SYBASE ADAPTIVE SERVER ANYWHERE PROVIDER8.0; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的SYBASE数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入SYBASE的数据库用户名和密码—》服务器选项标签页可默认—》确定。
5.准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该SYBASE数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[SYBASE用户].[表名]。更详细具体的使用这里不再赘述。
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
不知道怎么贴图片,都是手打的,哎。。。自己先顶个
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
哥们哥们来嘛。。。怎么解决的呀?
mixboss 2010-06-03
  • 打赏
  • 举报
回复
问题和楼主一样不过还是解决了
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
我用的是ODBC源啦。。但是那样的话就没办法弄参数进sql查找了,如何用odbc又能够支持那个参数查找呢?
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
建立的时候用ODBC,您是说ssis中用ado.net的那个数据源吗?但是那个数据源的话我就不知道如何筛选出sybase里面的数据,比如传了个开始时间和结束时间进去,我就不知道如何将这两个时间放入sql语句中,因为那个里面没有添加变量的地方,有没有好方法提供个?谢谢啦
--小F-- 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pbsh 的回复:]
建立连接时不要用OLE DB,用ODBC试试看,使用New connection...

下面的方法你参考下,看有没有用.


SQL Server怎样才能访问sybase中的表

  答:具体步骤如下:

  1: 安装sybase客户端

  版本的要求:

  Sybase Client 11.9.2 for NT

  1.1:安装完成后,运行开始-……
[/Quote]
学习
pbsh 2010-06-03
  • 打赏
  • 举报
回复
建立连接时不要用OLE DB,用ODBC试试看,使用New connection...

下面的方法你参考下,看有没有用.


SQL Server怎样才能访问sybase中的表

  答:具体步骤如下:

  1: 安装sybase客户端

  版本的要求:

  Sybase Client 11.9.2 for NT

  1.1:安装完成后,运行开始->程序->sybase->Dsedit

  1.2:选择菜单的'Server Object',-> 'Add' 输入服务名 比如 1.70

  1.3:然后在Server列表中选择'1.70',双击右边的对话框server address栏,在Network Address Attribute对话框中 选择add 填入ip地址,比如132.228.1.70,4300,ok 确定

  1.4:选择工具栏的Ping Server按钮测试是否能连通服务器(红色的类似闪电的按钮)

  2:在ODBC中建立DSN>

  管理工具->数据源ODBC

  新建一个系统DSN,名称设为 1.70

  在创建新数据源对话框中选择'Sybase System11'数据源驱动程序,

  General属性的DSN datasouce name: 填入 1.70,

  database: 填入sybase数据库名

  确定保存

  3:建立链接服务器

  企业管理器->安全性->建链接服务器->新建链接服务器

  3.1:常规标签栏目中

  名称sybase,

  服务器类型选其他数据源,在提供程序的名称中选择

  Microsoft OLE DB Provider FOR ODBC

  数据源:填入DSN名字 1.70

  3.2:安全性栏目中

  本地登陆填入sa

  远程用户和远程密码填入sybase的用户名和密码

  3.3:使用此安全上下文建立连接

  远程登陆 输入sybase的用户名和密码

  使用密码 输入密码

  确定保存

  4: 用sa身份登陆查询分析器

  执行以下sql语句就能查出sybase数据

  select * from 链接服务器名(本例子为sybase).sybase的数据库名.dbo.sybase的表名

  注: 如果在执行查询时发现这个问题: 链接服务器 "sybase" 的 OLE DB 访问接口 "MSDASQL" 为列提供的元数据不一致。

  解决方法:: 不要直接用下面这种语句

  select * from sybase.dbname.dbo.tablename

  只需要换个语句,就能解决问题。具体语句如下:

  select * from openquery(sybase,'select * from dbname.dbo.tablename ')
pbsh 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 learycjy 的回复:]
11楼哥。。。能给个Q或者什么联系的之类吗?好请教请教你啊。。。呵呵
[/Quote]

公司规定,使用任何聊天工具罚款500RMB。。。So,通信基本靠喊~
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
11楼哥。。。能给个Q或者什么联系的之类吗?好请教请教你啊。。。呵呵
pbsh 2010-06-03
  • 打赏
  • 举报
回复
关于数据流的部分没有细写,这部分你应该很清楚的吧。
pbsh 2010-06-03
  • 打赏
  • 举报
回复
我尝试了一下ODBC的动态参数连接,不过我只有sql server源,没有sybase环境。楼主可以参考一下。

1、建立ODBC源,指向你的sybase数据库。
2、在连接管理器中右键-》新建ADO.NET连接-》新建-》.Net提供程序-》Odbc Data Provider
3、创建DataReader源,右键-》显示高级编辑器-》连接管理器标签-》在连接管理器中选择上步创建的odbc连接.
4、定义变量,包括输入参数和脚本语句变量。
5、使用脚本组件定义一个SQL查询,引用之前定义的变量。
6、在DataReader源的sql_command中输入一个类似的查询语句,然后对数据列进行影射,定义好数据流。
7、在数据流的属性中,选择expression。
8、选择属性[Datareader 源].sqlcommand,在表达式列中指定脚本定义的查询语句变量。
9、数据流组件的DelayValidation属性指定为True。

希望对你有所帮助。
LearyCJY 2010-06-03
  • 打赏
  • 举报
回复
感谢楼上两位仁兄光临我的店,写个完整的也一样:
select * from 表,也一样报那个错,我用ssis中的ado是可以连上去,但是ado连上去读表名也是读不出来,提示一大堆东西,其中有一样是 驱动【adaptive Server Enterprise】sp_odbc_tables存储过程没有,很蛋疼。但是用sql方式却可以查找出数据,也能将数据读取过来,太奇怪了。

594

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧