`
fengxu0706
  • 浏览: 15635 次
社区版块
存档分类
最新评论

sql server 与mysql跨平台跨数据库操作

    博客分类:
  • DB
阅读更多

     之前做了一个跨平台跨数据库操作的功能,sql server 2008windows64,mysql 5.1linux);这里重点说明的是两个功能:

1、在sql server中建立触发器,当某些条件满足时,取用户的AD信息,通过sql server的链接服务器,给相关用户发送邮件。

2、当某些条件满足时,给用户发送短信。由于公司的短信数据库在mysql 5.1linux)上,所以要把sql server表中的数据插入到mysql表中。

功能说起来不多,从但是里面涉及到很多之前没接触过的东西,在一些功能点上花费了很多时间。

 

功能1详细

(1)

先说第一个功能,想获取用户的AD信息,就要先建AD链接服务器和登陆权限

 

--Create the linked server

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
     [ , [ @provider= ] 'provider_name' ]
     [ , [ @datasrc= ] 'data_source' ] 
     [ , [ @location= ] 'location' ] 
     [ , [ @provstr= ] 'provider_string' ] 
     [ , [ @catalog= ] 'catalog' ] 

--Create the login account 
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' 
     [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ] 
     [ , [ @locallogin = ] 'locallogin' ] 
     [ , [ @rmtuser = ] 'rmtuser' ] 
     [ , [ @rmtpassword = ] 'rmtpassword' ] 

关于sp_addlinkedsrvlogin大家可以看一下http://technet.microsoft.com/zh-cn/library/ms190479.aspxhttp://technet.microsoft.com/zh-cn/library/ms189811.aspx里面有详细的介绍

 

(2)取AD信息

 

SELECT 
  @EMAIL=mail,@TEL=telephoneNumber 
FROM OPENQUERY
(
  ADSI,
  'SELECT  要显示的字段 
  FROM ''LDAP://[LDAP服务器ip]:[LDAP服务器端口]/dc=[公司的域名],dc=com,dc=cn'''
)

 

(3)配置SQL SERVER数据库邮件

    这里不多说了,网上有很多例子

 

(4)调用数据库邮件存储过程(msdb.dbo.sp_send_dbmail)

    EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'SQLMailConfig',--数据库邮件配置文件名
    @recipients = @EMAIL,--邮箱地址
    @body = @EMAIL_CONTENT,--内容
    @subject = @subject;--标题

 

功能2详细

(1)分布式事务问题处理

     要实现短信功能,需要把数据insert到mysql的数据库表中。在sql server触发器中调用mysql链接服务器进行mysql表的insert操作会产生分布式事务。由于mysql部署在linux系统的机器上,sql server是在windows平台上,由于操作系统不同无法采用windows平台上的MSDTC服务,所以为避免产生分布式事务,通过 loopback 服务器链接执行远过程调用, 让此过程拥有独立的事务作用域(适用于 SQL Server 2008 )具体步骤,

 

--建立 LOOPBACK 服务器链接
EXEC sp_addlinkedserver @server = N'loopback' , @srvproduct = N' ' , @provider = N'SQLNCLI'
 , @datasrc = @@SERVERNAME
--设置服务器链接选项,阻止 SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)
EXEC sp_serveroption loopback, N'rpc out' , 'TRUE'
EXEC sp_serveroption loopback, N'remote proc transaction promotion' , 'FALSE' 

 
    然后用把insert操作放到一个存储过程中,再用loopback调用这个存储过程,这样就可避免远过程调用而将本地事务提升为分布事务了。但是这样做会存在不安全因素,但是对于我们公司内网来说基本不存在这个问题。

--loopback调用有insert操作的存储过程
exec loopback.有insert操作的存储过程

 

(2)无法向mysql插入中文字符

     本次mysql数据库版本为5.1,odbc驱动为5.2,采用链接服务器方式访问mysql时,不能插入中文字符。mysql数据库是UTF-8的编码,理论上是可以支持中文字符的,但是插入中文字符为空。经过多方面的查找,发现是由于mysql与odbc驱动的版本不一致而导致的这种问题,换成5.1版本的odbc驱动,问题得以解决。由于数据库直连的方式会涉及很多其它方面的问题,所以开发时尽量采用相同版本,避免不必要的麻烦。

 

 重点内容就是这么多,给自己记录一下,也希望可以给大家帮助。。。

 

分享到:
评论

相关推荐

    连接mysql sqlserver的两个数据库

    首先,我们来看标题提到的“连接mysql sqlserver的两个数据库”。这通常涉及到数据库之间的数据迁移、同步或者跨平台查询。为了实现这一目标,我们需要借助特定的驱动程序和工具。 在提供的压缩包文件中,有两个...

    sqlserver与mysql数据库同步

    本主题将深入探讨如何实现SQL Server与MySQL数据库之间的数据同步,这对于确保数据一致性、实时性以及跨平台的数据交换具有重大意义。 首先,我们需要了解SQL Server和MySQL是两种不同类型的数据库管理系统。SQL ...

    Navicat客户端sqlserver表结构转到mysql数据库中操作文档

    在IT行业中,数据库管理是一项关键任务,特别是在涉及跨平台数据迁移的时候。本操作文档将详细介绍如何使用Navicat客户端工具将SQL Server的表结构转换到MySQL数据库中。Navicat是一款强大的数据库管理工具,支持...

    从sqlserver同步数据到Mysql数据库

    【标题】:“从sqlserver同步数据到Mysql数据库”是一个典型的跨数据库系统数据迁移的案例。在信息技术领域,数据迁移是常见的操作,特别是在企业级应用中,可能由于业务需求、性能优化或者系统升级等原因,需要将...

    sqlserver数据库关联mysql

    总之,通过SQL Server关联并操作MySQL数据库,我们可以实现多数据库环境下的数据整合,但同时也需要注意跨平台操作带来的挑战,如性能、安全和兼容性问题。正确配置和使用ODBC驱动,结合良好的数据库设计和管理策略...

    sqlserver/oracle/mysql/等数据库驱动大全

    ODBC是微软提出的一种标准接口,允许应用程序通过统一的方式与各种不同类型的数据库进行交互,无论底层数据库系统是SQL Server、Oracle还是MySQL。 首先,让我们详细了解一下SQL Server的ODBC驱动。SQL Server ODBC...

    Oracle|Sqlserver|MySql数据库表结构一键生成工具

    "Oracle|Sqlserver|MySql数据库表结构一键生成工具" 提供了一种高效的方法来自动化这个过程,大大减轻了手动编写文档的工作量。这款工具能够支持三种主流的关系型数据库管理系统:Oracle、SQL Server和MySQL。 ...

    SQL Server数据库迁移Mysql数据库工具

    SQL Server通常与Windows操作系统紧密集成,而MySQL则跨平台且开源,因此在迁移过程中需要考虑这些差异对应用程序的影响。 要进行SQL Server到MySQL的数据迁移,我们需要一个合适的工具。根据提供的信息,这里提到...

    mysql数据库转换成SQLserver工具包

    MySQL到SQL Server的转换工具包是解决跨数据库系统迁移问题的有效解决方案。通过DB2DB这样的工具,用户可以简化迁移过程,降低出错风险,从而更加顺利地完成数据库转换任务。在实际操作中,理解转换过程、选择合适的...

    SQL SERVER ACCESS MYSQL 数据库的测试

    总的来说,这个主题涵盖了数据库管理系统的基础知识,LabVIEW的数据库操作,以及跨平台数据库测试的实践。了解这些知识点对于IT专业人员来说至关重要,特别是那些需要处理数据集成、分析和可视化任务的工程师和科学...

    千万级数据Sql Server 与Mysql分析

    Mysql 是一种轻量级的数据库,且是跨平台的,是一个中、小型关系型数据库管理系统,目前属于 Oracle 公司。目前 MySQL 被广泛地应用在 Internet上的中小型网站中。 测试分析 本次测试的重点是分析在千万级数据下...

    SQLSERVER转MYSQL工具 mss2sql

    《SQLSERVER到MYSQL的数据迁移工具mss2sql详解》 在数据库管理中,有时我们需要将数据从一个数据库系统迁移到另一个数据库系统。SQL Server和MySQL是两种广泛应用的关系型数据库管理系统,各自有着不同的特点和优势...

    支持 oracle mysql sql server db2等数据库

    【标题】:“支持Oracle MySQL SQL Server DB2等数据库”意味着这款工具具备跨平台数据库管理的能力。这涵盖了市面上常见的四大关系型数据库管理系统(RDBMS),包括Oracle数据库、MySQL开源数据库、Microsoft SQL ...

    sqlserver2000,mysql数据库驱动包

    标题中的"sqlserver2000,mysql数据库驱动包"提到了两个重要的数据库管理系统:SQL Server 2000和MySQL,以及它们的驱动包。这些驱动包是连接应用程序与数据库之间的桥梁,允许应用程序通过标准接口如ODBC(Open ...

    sqlserver导出mysql.zip

    标题“sqlserver导出...总之,"sqlserver导出mysql.zip"提供的工具可以帮助用户轻松地将数据从SQL Server迁移到MySQL,减少了手动操作的复杂性和潜在错误,是数据库管理员和开发人员在跨平台数据管理时的重要助手。

    Sql Server、Mysql数据库统一管理解决方案.pdf

    通过实施这一解决方案,数据库管理员可以使用统一的界面,统一操作指令来管理SqlServer和Mysql数据库,从而实现跨数据库系统的统一操作。这可以使得数据库的监控、维护和管理等工作更加高效、一致,并减少因操作系统...

    jtds,mysql,oracle,sqlserver数据库驱动与连接字符串

    同时,了解不同数据库的驱动类和连接字符串格式,对于跨平台和跨数据库的项目来说至关重要。 为了方便使用,压缩包中的“数据库驱动”可能包含了这四种数据库系统的JDBC驱动jar文件,这些文件可以直接添加到Java...

    连接mysql,oracle,SqlServer数据库的jar包

    这三种数据库的JDBC驱动都是Java应用程序与特定数据库系统通信的标准接口,它们遵循JDBC规范,确保了跨数据库平台的一致性。在实际开发中,根据项目的数据库需求,选择合适的驱动并正确配置,就能实现数据库的连接和...

Global site tag (gtag.js) - Google Analytics