SqlServer访问MySQL总结

环境:Windows XP + SqlServer2000 + MySQL 5.1.30
1. 新建ODBC数据源
http://dev.mysql.com/downloads/connector/odbc/3.51.html下载MySQL ODBC 3.51 Driver(我安装ODBC 5.1不能添加数据源,一到点击测试或者选择database的时候就死机),原因未知
2. 我的电脑--控制面板—管理工具—数据源-系统DSN(或者用户DSN,最好设置为系统DSN)—添加—选择Mysql ODBC 3.5.1 Driver(Data source Name:填以后要使用数据源名称,有效名就行,description随便填,server:localhost(或者ip地址) User,password,database自己选)—确定
3. SqlServer—企业管理器—安全性---链接服务器—新建…………(或者直接使用sql语句创建)
EXEC sp_addlinkedserver  @server = 'MySQLDB(新建链接服务器名称)', @srvproduct='MySQL', @provider = 'MSDASQL', @datasrc = 'myDSN(数据源名称)' 
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='MySQLDB(同上)',@useself='false',@locallogin='sa',@rmtuser='mysql的用户名',@rmtpassword='mysql的密码'

4.(转)MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器 .
位置:控制面板--管理工具--服务--Distributed Transaction Coordinator
依存关系:Remote Procedure Call(RPC)和Security Accounts Manager
建议:一般家用计算机涉及不到,除非你启用Message Queuing服务,可以停止。
解决办法: 1. 在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动
2.在CMD下运行"net start msdtc"开启服务后正常。
注:如果在第1步Distributed Transaction Coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。重新创建 MSDTC 日志,并重新启动服务的步骤如下:
(1) 单击"开始",单击"运行",输入 cmd 后按"确定"。
(2) 输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务)
(3) 最后输入:net start msdtc 回车,搞定!
5. 启动服务Remote Procedure Call (RPC)可以访问了,例子:
SELECT factLocation FROM OPENQUERY (MySQLDB ,'select ov.space_name from objtag_views ov' ) 

6. OPENQUERY (MySQLDB ,'select ov.space_name from objtag_views ov' )直接当做表来使用, (MySQLDB :ODBC名称,sql语句跟直接在MySQL中写是一样的)例:
select id,number,asset_name,fact_location,handle_on,storage_location from objtag ob  union all 
select ac.id,ac.number,ac.name as asset_name,ac.storage_location,ac.created_on as handle_on,op.fact_location
from assets_cards ac,
OPENQUERY (MySQLDB ,'select ov.tag_id as id ,ov.space_name as fact_location from objtag_views ov' ) op
where op.id=ac.id

7. 查询结果出现中文乱码,首先将MySQL数据库表设置为gb2312,然后设置ODBC连接字符集为gb2312如图:a.

[img]http://dl.iteye.com/upload/attachment/161228/c2f81652-cdfc-3da8-91d1-f8112584e9ca.jpg[/img]

b.我的电脑—控制面板---管理工具—数据源(ODBC)-


[img]http://dl.iteye.com/upload/attachment/161226/1630ee2d-890c-3af6-8a2b-f491f1ab0e72.jpg[/img]

8.报错
org.hibernate.util.JDBCExceptionReporter - SQL Error: 7391, SQLState: S0001
2009-10-27 17:11:17,781 [http-2008-6] ERROR org.hibernate.util.JDBCExceptionReporter - 该操作未能执行,因为 OLE DB 提供程序 'MSDASQL' 无法启动分布式事务。
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor - could not execute query),


解决方法:不知道怎么解决的了,必须启动服务Distributed Transaction Coordinator,可能是sql语句正确就不会报错

9.结束
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值