查看原文
其他

mycat系列-对SQL Server的支持

2016-06-23 IT哈哈


配置支持SQL Server

修改conf下的配置schema.xml文件中的以下内容:

配置dataHost

在节点下在新增一个sqlserver的连接


<dataHost name="sqlserver1" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="sqlserver" dbDriver="jdbc"><heartbeat></heartbeat><connectionInitSql></connectionInitSql><writeHost host="hostM1" url="jdbc:sqlserver://localhost:1433" user="sa" password="sa" ></writeHost></dataHost>


1.dbDriver一定为jdbc,dbType代表数据库类型,可以为sqlerver,oracle,mongodb 

2.url地址是jdbc连接的地址,和一般开发java web的jdbc.url地址一致,user,password是用户名和密码 

3.是心跳包的查询语句,可以为空 

4.是连接sqlserver的初始化语句 

5.需要mssqljdbc*.jar包(其它版本也支持) 

6.如果需要支持多个数据库,可以不用指定数据库名,在dataNode中指定

配置表: 

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">

之后加上表的配置:


<table name="people" primaryKey="_ID"  dataNode="dn4" needAddLimit="false"/>


needAddLimit 不自动在sql语句中使用limit

新增dataNode配置:


<dataNode name="dn4" dataHost="sqlserver1" database="test1" /><dataNode name="dn5" dataHost="sqlserver1" database="test2" />

row_number分页

支持row_number和row_number与top结合2种分页,另外支持top限制最大条数。

支持limit语法自动翻译原生分页,详见5.9 limit分页自动转换。

以下分页等价limit 5,10


SELECT *FROM (SELECT sid, ROW_NUMBER() OVER (ORDER BY sid DESC) AS ROWNUM  FROM test  WHERE sts <> 'N'      ) XXWHERE ROWNUM > 5  AND ROWNUM <= 15

row_number与top结合分页

以下分页等价limit 5,10


select * from ( select row_number()over(order by tempColumn)tempRowNumber,* from ( select top 15 tempColumn=0, sid from test where sts<>'N' order by sid  )t )tt where tempRowNumber>5;

top限制最大条数

以下语法控制查询结果最多5条


select top 5 * from test where sts<>'N' order by sid  


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存