SQL Relay开源的数据库池连接代理服务器
一、SQL Relay是什么?
SQL Relay是一个开源的数据库池连接代理服务器
二、SQL Relay支持哪些数据库?
* Oracle
* MySQL
* mSQL
* PostgreSQL
* Sybase
* MS SQL Server
* IBM DB2
* Interbase
* Sybase
* SQLite
* Lago
* ODBC
* MS Access
三、安装和配置;
不说废话了,开始安装SQL Relay,到 http://sqlrelay.sourceforge.net/ 去下载相应的软件
安装SQL Relay需要先安装Rudiments, 在 http://sqlrelay.sourceforge.net/download.html 可以找到
1、安装Rudiments:
# tar vxzf rudiments-0.28.2.tar.gz
# cd rudiments-0.28.2
# ./configure --prefix=/usr/local/rudiments
# make
# make install
至此,rudiments安装结束
2、安装SQL Relay:
# tar vxzf sqlrelay-0.36.4.tar.gz
# cd sqlrelay-0.36.4
# ./configure --prefix=/usr/local/sqlrelay --with-rudiments-prefix=/usr/local/rudiments --with-mysql-prefix=MySQL安装路径 --with-freetds-prefix=FreeTDS安装路径 --with-oracle-home=Oracle安装路径 --with-php-prefix=PHP安装路径
# make
# make install
安装结束,以上编译参数根据个人需要来设定,因为我同时需要Oracle SQLserver MySQL,所以才加了这么多参数的
3、设置PHP:
修改php.ini
extension_dir = "./"
把以上内容修改为:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922"
根据PHP安装的路径来修改,并不是每个版本的PHP都是这个路径
在php.ini中添加如下内容
extension=sql_relay.so
接下来,介绍SQL Relay如何连接SQL Server
修改FreeTDS的配置文件freetds.conf
加入如下内容:
[msde]
host = 172.16.20.203
port =1433
tds version = 8.0
client charset = GB2312
请根据个人需求来修改
4、修改SQL Relay的配置文件
# cd /usr/local/sqlrelay/etc
# cp sqlrelay.conf.example sqlrelay.conf
把sqlrelay.conf的内容改为:
<?xml version="1.0"?>
< !DOCTYPE instances SYSTEM "sqlrelay.dtd">
< instances>
< instance id="msdetest" port="9000" socket="/tmp/msdetest.socket" dbase="freetds" connections="5" maxconnections="10" maxqueuelength="0" growby="1" ttl="60" endofsession="commit" sessiontimeout="5" runasuser="nobody" runasgroup="nobody" cursors="5" authtier="listener" handoff="pass">
< users>
< user user="sa" password="sa"/>
< /users>
< connections>
< connection connectionid="msdetest" string="server=msde;db=pubs;user=sa;password=sa;" metric="1"/>
< /connections>
< /instance>
< /instances>
四、启动SQL Relay,并测试;
1、启动 SQL Relay
# export PATH=$PATH:/usr/local/sqlrelay/bin
# sqlr-start -id msdetest
2、使用SQL工具:
# sqlrsh -id msdetest
可以直接输入SQL语句
停止SQL Relay:
# sqlr-stop msdetest
3、测试PHP:
写一个PHP文件,内容如下:
<?
$con=sqlrcon_alloc("msdetest",9000,"/tmp/msdetest.socket","sa","sa",0,1);
$cur=sqlrcur_alloc($con);
sqlrcur_sendQuery($cur,"select * from t_gifts");
for ($row=0; $row<sqlrcur_rowCount($cur); $row++) {
for ($col=0; $col<sqlrcur_colCount($cur); $col++) {
echo sqlrcur_getField($cur,$row,$col);
echo ",";
}
echo "<br>\n";
}
sqlrcur_free($cur);
sqlrcon_free($con);
?>
执行这个PHP文件,看看能不能出现数据
全文结束~~
参考:http://hi.baidu.com/mrvsumbeujeinxe/item/8ba0c60888cf47c490571896
相关文章:

关于Android开源库分享平台,(GitClub)微信小程序的开发体验
七八月份的深圳一直在下雨,总有人说雨天适合窝在家看书,对于程序开发者来说更是难得的学习机会。我们502工作室的小伙伴利用这个时间学习了一下微信小程序开发,并上线了一个GitClub小程序,目前功能有些简陋,难免有辣眼…

RSync实现文件备份同步
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:1、可以镜像保存整个目录树和文件系统。2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。3、无须特殊权限即可安装。4、优化的流程&#…
Hibernate annotation多对多配置
角色(用户组),用户多对多。 角色实体配置: private Set<TAuthUser> users;ManyToManyJoinTable(name"t_auth_user_role",joinColumns{JoinColumn(name"role_id")},inverseJoinColumns{JoinColumn(name&…

ajax中的url如何传递变量_如何创建和参数化UDT数据类型中的变量及IN,OUT 等参数?...
从数据类型的意义上说 UDT 并不被 CPU 所识别,而是在离线程序中自定义(组合)的数据类型。 S7 程序的自定义数据类型并不能装载到 S7 CPU 中。UDT 是由递增的编辑器创建并编辑或由源文件的编译而生成。 当在块调用中进行变量传递时是不能将 UDT 作为内存地址区域来传…

[雪峰磁针石博客]kotlin书籍汇总
2019独角兽企业重金招聘Python工程师标准>>> 下载地址 Learning Kotlin by Building Android Applications - 2018 初级 Develop amazing applications that will help you understand and explore the fundamentals of Kotlin while covering 3 various types of p…

web集群时session同步的3种方法
web集群时session同步的3种方法在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状…

属于python文件的操作有_Python的文件操作
1、初始文件操作1、使用python读写文件使用open()函数获取文件句柄,就可以操作文件了,根据打开方式不同能执行的操作也不同。打开方式有:r、w、a、r、w、a、rb、wb、ab、rb、wb、ab,默认用的是r模式2、只读操作(r、rb)2.1、只读模…

[iOS]开发者证书和描述文件的作用
先说下证书吧。 然后是描述文件 转载于:https://www.cnblogs.com/wangqi1221/p/5240273.html

单元格编辑后级联汇总刷新
单元格编辑 级联刷新 PDERPDB db new PDERPDB(); int conid 0; int pid 0; string sql ""; string sqlC ""; if (int.TryParse(Pid, out pid)) { sql string.Format(" UPDATE JL_Project set PCMoney{0} where Pid{1};", pcmoney, Pid); }…

HTTP 协议的通用头域via 的意义以及作用
列出从客户端到 OCS 或者相反方向的响应经过了哪些代理服务器,他们用 什么协议(和版本)发送的请求。 当客户端请求到达第一个代理服务器时,该服务器会在自己发出的请求里面 添…

6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版...
课本源码部分 第6章 树和二叉树 - 树的双亲表示法 ——《数据结构》-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码习题集解析使用说明 课本源码合辑 链接☛☛☛ 《数据结构》课本源码合辑 习题集全解析 …

压力测试 闪存_产品评测 | HPE Nimble AF全闪存系列,诠释真正的高端存储
随着AI、互联网、大数据等技术快速发展,企业对存储设备的需求已踏上一个更高的级别,高性能、低延时、大容量等多种需求的应用场景愈发常见,在这种情况下,寻求能够满足相应工作负载能力的存储设备已成为企业IT管理者的当务之急。这…

Mysql无法选取非聚合列
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 无法选取非聚合列。 更多讨论或者错误提交,也请移步。 1. 前言 最近升级博客,给文章页面底部增加了两个按钮,可以直接…

网络设置巨形帧_Trunk的概念与设置
在二层交换机的性能参数中,常常提到一个重要的指标:TRUNK ,许多的二层交换机产品在介绍其性能时,都会提到能够支持TRUNK 功能,从而可以为互连的交换机之间提供更好的传输性能。那到底什么是TRUNK呢?使用TRU…

epoll使用详解
epoll的工作原理是,你如果想进行IO操作时,先向epoll查询是否可读或可写,如果处于可读或可写状态后,epoll会通过epoll_wait函数通知你,此时你再进行进一步的recv或send操作。epoll仅仅是一个异步事件的通知机制…

软件测试(一)
最近的时间内,我印象最深刻的Bug是在上学期的javaweb的大作业中。 其中的要求是在工作人员的每一条记录后面添加一个修改按钮,要求把前一个页面的内容带入到下一个页面中,由于密码采用的是MD5的加密,所以带入到后面的页面中的内容…

网络分流器-网络分流器IP网络路由交换测试技术探讨
网络分流器1 . 与流量相关的L2-3层高级测试技术探讨戎腾网络分流器: 对于一个L2-3层网络设备,最基本、最重要的测试是流量转发性能测试。作为一个网络转发设备,首先要保证可以高速、低时延、稳定地转发流量。相关的性能测试通常是通过流量生成器…

浅谈https\ssl\数字证书
在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。本文追本溯源围绕这个模式谈一谈。 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的一种安全的http协议…

input不管用 vue_Vue自定义指令实现快速读取Excel
前几天因为业务需求,所维护的而后台中出现了大量关于上传下载Excel的操作。因为我们的后台是基于Vue,并且是在 vue-element-admin 的基础上结合实际需求开发而来。vue-element-admin 中也有一些相关操作 Excel 的示例,都十分清晰明了…

数据结构——算法之(010)( 字符串的左旋转操作)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping163.com】 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cde…

value_counts()
Serise类型: Series.value_counts(normalizeFalse, sortTrue, ascendingFalse, binsNone, dropnaTrue) 功能:返回包含唯一值计数的对象。结果对象将按降序排列,以便第一个元素是最常出现的元素。 不包括默认的NA值。 参数:normali…

DFA和NFA
1.历史:引用正则表达式萌芽于1940年代的神经生理学研究,由著名数学家Stephen Kleene第一个正式描述。具体地说,Kleene归纳了前述的神经生理学研究,在一篇题为《正则集代数》的论文中定义了“正则集”,并在其上定义了一…

adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)
[导读] 生活环境周围信号万万千,对于一个嵌入式er。我们利用技术去了解世界、改变世界。而一个产品要与外界物理环境打交道,一个至关重要的触角就是采样真实模拟世界的信号,翻译成芯片可理解的数字信号,进而实现很多为人服务的应…

Swift泛型
泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。 泛型函数 定义 fun 函数名<T,S&…

02、在层级未知情况下通过递归查找子物体
1、在在层级未知情况下通过递归查找子物体 ,这个主要是用于UI的的层级查找中 2、代码: 1 using System.Collections;2 using System.Collections.Generic;3 using UnityEngine;4 5 public class EnemyManager : MonoBehaviour6 {7 8 private GameOb…

CentOS装机必备-基本设置以及缺失文件
SecureCRT中注意不要使用以Ascii方式上传文件,只有在需要的地方才使用。主要是虚拟机中安装CentOS每次总会做一些设置,记录下来方便以后。 纯粹基本设置,比如本地SecureCRT可以连接虚拟机中的CentOS。 复杂的非基本设置见:Linux …

unity替换mesh测试
直接替换SkinnedMeshRender的Mesh,实现所谓断肢效果(不过最近发现,绑定多mesh似乎更好实现这样的效果。有时间准备写一篇): 只要不改变两个Mesh原始文件的层级,就不会出现权重的错乱问题。 权重映射的测试:http://www.…

matlab中patch命令_matlab 放大平移图形是超出边界问题的处理
matlab提供的图形放大和平移函数zoom和pan可以通过鼠标来控制图形,非常方便,在工具条toolbar上也有对应的按钮。但是在放大或平移自己画的数据图是,有时会出现部分图形超出了坐标系的边界的问题,非常奇怪。经分析和试验࿰…

关于虚拟化技术软硬件兼容问题的探讨
VMware十几年前就已经出现,个人最早使用VMware的时间似乎是2001年或者2002年,当时可以在个人电脑上通过VMware虚拟多套系统,用于学习研究(做实验往往会破坏系统,当时VMware在一些场景下还是比较流行的)。由…

自己开发操作系统
算是《30天自制操作系统》的读书笔记吧,但是我觉得原书不少地方啰嗦,某些做法值得商榷 http://product.china-pub.com/36828381.二进制编译器 首先下载Bzl1621.lzh,这个可以把二进制数编辑的软件。 BZ启动画面打开img文件2.使用虚拟机加载IMG…