之前做了一个跨平台跨数据库操作的功能,sql server 2008(windows64),mysql 5.1(linux);这里重点说明的是两个功能:
1、在sql server中建立触发器,当某些条件满足时,取用户的AD信息,通过sql server的链接服务器,给相关用户发送邮件。
2、当某些条件满足时,给用户发送短信。由于公司的短信数据库在mysql 5.1(linux)上,所以要把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.aspx、http://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的两个数据库”。这通常涉及到数据库之间的数据迁移、同步或者跨平台查询。为了实现这一目标,我们需要借助特定的驱动程序和工具。 在提供的压缩包文件中,有两个...
本主题将深入探讨如何实现SQL Server与MySQL数据库之间的数据同步,这对于确保数据一致性、实时性以及跨平台的数据交换具有重大意义。 首先,我们需要了解SQL Server和MySQL是两种不同类型的数据库管理系统。SQL ...
在IT行业中,数据库管理是一项关键任务,特别是在涉及跨平台数据迁移的时候。本操作文档将详细介绍如何使用Navicat客户端工具将SQL Server的表结构转换到MySQL数据库中。Navicat是一款强大的数据库管理工具,支持...
【标题】:“从sqlserver同步数据到Mysql数据库”是一个典型的跨数据库系统数据迁移的案例。在信息技术领域,数据迁移是常见的操作,特别是在企业级应用中,可能由于业务需求、性能优化或者系统升级等原因,需要将...
总之,通过SQL Server关联并操作MySQL数据库,我们可以实现多数据库环境下的数据整合,但同时也需要注意跨平台操作带来的挑战,如性能、安全和兼容性问题。正确配置和使用ODBC驱动,结合良好的数据库设计和管理策略...
ODBC是微软提出的一种标准接口,允许应用程序通过统一的方式与各种不同类型的数据库进行交互,无论底层数据库系统是SQL Server、Oracle还是MySQL。 首先,让我们详细了解一下SQL Server的ODBC驱动。SQL Server ODBC...
"Oracle|Sqlserver|MySql数据库表结构一键生成工具" 提供了一种高效的方法来自动化这个过程,大大减轻了手动编写文档的工作量。这款工具能够支持三种主流的关系型数据库管理系统:Oracle、SQL Server和MySQL。 ...
SQL Server通常与Windows操作系统紧密集成,而MySQL则跨平台且开源,因此在迁移过程中需要考虑这些差异对应用程序的影响。 要进行SQL Server到MySQL的数据迁移,我们需要一个合适的工具。根据提供的信息,这里提到...
MySQL到SQL Server的转换工具包是解决跨数据库系统迁移问题的有效解决方案。通过DB2DB这样的工具,用户可以简化迁移过程,降低出错风险,从而更加顺利地完成数据库转换任务。在实际操作中,理解转换过程、选择合适的...
总的来说,这个主题涵盖了数据库管理系统的基础知识,LabVIEW的数据库操作,以及跨平台数据库测试的实践。了解这些知识点对于IT专业人员来说至关重要,特别是那些需要处理数据集成、分析和可视化任务的工程师和科学...
Mysql 是一种轻量级的数据库,且是跨平台的,是一个中、小型关系型数据库管理系统,目前属于 Oracle 公司。目前 MySQL 被广泛地应用在 Internet上的中小型网站中。 测试分析 本次测试的重点是分析在千万级数据下...
《SQLSERVER到MYSQL的数据迁移工具mss2sql详解》 在数据库管理中,有时我们需要将数据从一个数据库系统迁移到另一个数据库系统。SQL Server和MySQL是两种广泛应用的关系型数据库管理系统,各自有着不同的特点和优势...
【标题】:“支持Oracle MySQL SQL Server DB2等数据库”意味着这款工具具备跨平台数据库管理的能力。这涵盖了市面上常见的四大关系型数据库管理系统(RDBMS),包括Oracle数据库、MySQL开源数据库、Microsoft SQL ...
标题中的"sqlserver2000,mysql数据库驱动包"提到了两个重要的数据库管理系统:SQL Server 2000和MySQL,以及它们的驱动包。这些驱动包是连接应用程序与数据库之间的桥梁,允许应用程序通过标准接口如ODBC(Open ...
标题“sqlserver导出...总之,"sqlserver导出mysql.zip"提供的工具可以帮助用户轻松地将数据从SQL Server迁移到MySQL,减少了手动操作的复杂性和潜在错误,是数据库管理员和开发人员在跨平台数据管理时的重要助手。
通过实施这一解决方案,数据库管理员可以使用统一的界面,统一操作指令来管理SqlServer和Mysql数据库,从而实现跨数据库系统的统一操作。这可以使得数据库的监控、维护和管理等工作更加高效、一致,并减少因操作系统...
同时,了解不同数据库的驱动类和连接字符串格式,对于跨平台和跨数据库的项目来说至关重要。 为了方便使用,压缩包中的“数据库驱动”可能包含了这四种数据库系统的JDBC驱动jar文件,这些文件可以直接添加到Java...
这三种数据库的JDBC驱动都是Java应用程序与特定数据库系统通信的标准接口,它们遵循JDBC规范,确保了跨数据库平台的一致性。在实际开发中,根据项目的数据库需求,选择合适的驱动并正确配置,就能实现数据库的连接和...