最近很多小伙伴都在问mssql数据库如何实现分页存储的代码实例和sql实现mysql的分页功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展centos下docker自动备份my
最近很多小伙伴都在问mssql 数据库如何实现分页存储的代码实例和sql实现mysql的分页功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展centos下docker自动备份 mysql、mssql、ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)、Linux 系统下 ThinkPHP5 链接 MsSQL、lnmp 环境里安装 mssql 及 mssql 的 php 扩展等相关知识,下面开始了哦!
本文目录一览:
mssql 数据库如何实现分页存储的代码实例(sql实现mysql的分页功能)
MSsql 如何实现分页存储的代码实例
create PROCEDURE Sp_Conn_Sort
(
@tblName varchar (255), -- 表名
@strGetFields varchar (1000) = ''*'', -- 需要返回的列
@fldName varchar (255)='''', -- 排序的字段名
@PageSize int = 40, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数,非 0 值则返回
@OrderType bit = 0, -- 设置排序类型,非 0 值则降序
@strWhere varchar (1500)='''' -- 查询条件 (注意:不要加 where)
)
AS
declare @strSQL varchar (5000) -- 主语句
declare @strTmp varchar (110) -- 临时变量
declare @strOrder varchar (400) -- 排序类型
if @doCount != 0
begin
if @strWhere !=''''
set @strSQL = ''select count(*) as Total from '' + @tblName + '' where ''+@strWhere
else
set @strSQL = ''select count(*) as Total from '' + @tblName
end
-- 以上代码的意思是如果 @doCount 传递过来的不是 0,就执行总数统计。以下的所有代码都是 @doCount 为 0 的情况
else
begin
if @OrderType != 0
begin
set @strTmp = ''<(select min''
set @strOrder = '' order by '' + @fldName +'' desc''
-- 如果 @OrderType 不是 0,就执行降序,这句很重要!
end
else
begin
set @strTmp = ''>(select max''
set @strOrder = '' order by '' + @fldName +'' asc''
end
if @PageIndex = 1
begin
if @strWhere != ''''
set @strSQL = ''select top '' + str(@PageSize) +'' ''+@strGetFields+ '' from '' + @tblName + '' where '' + @strWhere + '' '' + @strOrder
else
set @strSQL = ''select top '' + str(@PageSize) +'' ''+@strGetFields+ '' from ''+ @tblName + '' ''+ @strOrder
-- 如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
-- 以下代码赋予了 @strSQL 以真正执行的 SQL 代码
set @strSQL = ''select top '' + str(@PageSize) +'' ''+@strGetFields+ '' from ''
+ @tblName + '' where '' + @fldName + '''' + @strTmp + ''(''+ @fldName + '') from (select top '' + str((@PageIndex-1)*@PageSize) + '' ''+ @fldName + '' from '' + @tblName + '''' + @strOrder + '') as tblTmp)''+ @strOrder
if @strWhere != ''''
set @strSQL = ''select top '' + str(@PageSize) +'' ''+@strGetFields+ '' from ''
+ @tblName + '' where '' + @fldName + '''' + @strTmp + ''(''
+ @fldName + '') from (select top '' + str((@PageIndex-1)*@PageSize) + '' ''
+ @fldName + '' from '' + @tblName + '' where '' + @strWhere + '' ''
+ @strOrder + '') as tblTmp) and '' + @strWhere + '' '' + @strOrder
end
end
exec (@strSQL)
-----------------
sql server 2000 单主键高效分页存储过程 (支持多字段排序)
Create PROC P_viewPage
/**//*
nzperfect [no_mIss] 高效通用分页存储过程 (双向检索) 2007.5.7 QQ:34813284
敬告:适用于单一主键或存在唯一值列的表或视图
ps 教程:Sql 语句为 8000 字节,调用时请注意传入参数及 sql 总长度不要超过指定范围
*/
@TableName VARCHAR (200), -- 表名
@FieldList VARCHAR (2000), -- 显示列名,如果是全部字段则为 *
@PrimaryKey VARCHAR (100), -- 单一主键或唯一值键
@Where VARCHAR (2000), -- 查询条件 不含 ''where'' 字符,如 id>10 and len (userid)>9
@Order VARCHAR (1000), -- 排序 不含 ''order by'' 字符,如 id asc,userid desc,必须指定 asc 或 desc
-- 注意当 @SortType=3 时生效,记住一定要在最后加上主键,否则会让你比较郁闷
@SortType INT, -- 排序规则 1: 正序 asc 2: 倒序 desc 3: 多列排序方法
@RecorderCount INT, -- 记录总数 0: 会返回总记录
@PageSize INT, -- 每页输出的记录数
@PageIndex INT, -- 当前页数
@TotalCount INT OUTPUT , -- 记返回总记录
@TotalPageCount INT OUTPUT -- 返回总页数
AS
SET NOCOUNT ON
IF ISNULL(@TotalCount,'''') = '''' SET @TotalCount = 0
SET
@Order = RTRIM(LTRIM(@Order))
SET @PrimaryKey = RTRIM(LTRIM(@PrimaryKey))
SET @FieldList = REPLACE(RTRIM(LTRIM(@FieldList)),'' '','''')
WHILE CHARINDEX('', '',@Order) > 0 or CHARINDEX('' ,'',@Order) > 0
BEGIN
SET
@Order = REPLACE(
@Order ,'', '','','')
SET
@Order = REPLACE(
@Order ,'' ,'','','')
END
IF ISNULL(@TableName,'''') = '''' or ISNULL(@FieldList,'''') = ''''
or ISNULL(@PrimaryKey,'''') = ''''
or @SortType < 1 or @SortType >3
or @RecorderCount < 0 or @PageSize < 0 or @PageIndex < 0
BEGIN
PRINT(''ERR_00'')
RETURN
END
IF @SortType = 3
BEGIN
IF (UPPER(RIGHT(
@Order ,4))!='' ASC'' AND UPPER(RIGHT(
@Order ,5))!='' DESC'')
BEGIN PRINT(''ERR_02'') RETURN END
END
DECLARE @new_where1 VARCHAR(1000)
DECLARE @new_where2 VARCHAR(1000)
DECLARE @new_order1 VARCHAR(1000)
DECLARE @new_order2 VARCHAR(1000)
DECLARE @new_order3 VARCHAR(1000)
DECLARE
@Sql VARCHAR(8000)
DECLARE @SqlCount NVARCHAR(4000)
IF ISNULL(
@where ,'''') = ''''
BEGIN
SET @new_where1 = '' ''
SET @new_where2 = '' Where ''
END
ELSE
BEGIN
SET @new_where1 = '' Where '' +
@where
SET @new_where2 = '' Where '' +
@where + '' AND ''
END
IF ISNULL(
@order ,'''') = '''' or @SortType = 1 or @SortType = 2
BEGIN
IF @SortType = 1
BEGIN
SET @new_order1 = '' orDER BY '' + @PrimaryKey + '' ASC''
SET @new_order2 = '' orDER BY '' + @PrimaryKey + '' DESC''
END
IF @SortType = 2
BEGIN
SET @new_order1 = '' orDER BY '' + @PrimaryKey + '' DESC''
SET @new_order2 = '' orDER BY '' + @PrimaryKey + '' ASC''
END
END
ELSE
BEGIN
SET @new_order1 = '' orDER BY '' +
@Order
END
IF @SortType = 3 AND CHARINDEX('',''+@PrimaryKey+'' '','',''+@Order)>0
BEGIN
SET @new_order1 = '' orDER BY '' +
@Order
SET @new_order2 =
@Order + '',''
SET @new_order2 = REPLACE(REPLACE(@new_order2,''ASC,'',''{ASC},''),''DESC,'',''{DESC},'')
SET @new_order2 = REPLACE(REPLACE(@new_order2,''{ASC},'',''DESC,''),''{DESC},'',''ASC,'')
SET @new_order2 = '' orDER BY '' + SUBSTRING(@new_order2,1,LEN(@new_order2)-1)
IF @FieldList <> ''*''
BEGIN
SET @new_order3 = REPLACE(REPLACE(
@Order + '','',''ASC,'','',''),''DESC,'','','')
SET @FieldList = '','' + @FieldList
WHILE CHARINDEX('','',@new_order3)>0
BEGIN
IF CHARINDEX(SUBSTRING('',''+@new_order3,1,CHARINDEX('','',@new_order3)),'',''+@FieldList+'','')>0
BEGIN
SET @FieldList =
@FieldList + '','' + SUBSTRING(@new_order3,1,CHARINDEX('','',@new_order3))
END
SET @new_order3 =
SUBSTRING(@new_order3,CHARINDEX('','',@new_order3)+1,LEN(@new_order3))
END
SET @FieldList = SUBSTRING(@FieldList,2,LEN(@FieldList))
END
END
SET @SqlCount = ''Select @TotalCount=COUNT(*),@TotalPageCount=CEILING((COUNT(*)+0.0)/''
+ CAST(@PageSize AS VARCHAR)+'') FROM (Select * FROM '' + @TableName + @new_where1+'') AS T''
IF @RecorderCount = 0
BEGIN
EXEC SP_EXECUTESQL @SqlCount,N''@TotalCount INT OUTPUT,@TotalPageCount INT OUTPUT'',
@TotalCount OUTPUT,@TotalPageCount OUTPUT
END
ELSE
BEGIN
Select @TotalCount = @RecorderCount
END
IF @PageIndex > CEILING((@TotalCount+0.0)/@PageSize)
BEGIN
SET @PageIndex = CEILING((@TotalCount+0.0)/@PageSize)
END
IF @PageIndex = 1 or @PageIndex >= CEILING((@TotalCount+0.0)/@PageSize)
BEGIN
IF @PageIndex = 1 -- 返回第一页数据
BEGIN
SET
@Sql = ''Select * FROM (Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ''
+ @TableName + @new_where1 + @new_order1 +'') AS TMP '' + @new_order1
END
IF @PageIndex >= CEILING ((@TotalCount+0.0)/@PageSize) -- 返回最后一页数据
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM (''
+ ''Select TOP '' + STR(ABS(@PageSize*@PageIndex-@TotalCount-@PageSize))
+ '' '' + @FieldList + '' FROM ''
+ @TableName + @new_where1 + @new_order2 + '' ) AS TMP ''
+ @new_order1
END
END
ELSE
BEGIN
IF @SortType = 1 www.3ppt.com -- 仅主键正序排序
BEGIN
IF @PageIndex <= CEILING ((@TotalCount+0.0)/@PageSize)/2 -- 正向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ''
+ @TableName + @new_where2 + @PrimaryKey + '' > ''
+ ''(Select MAX('' + @PrimaryKey + '') FROM (Select TOP ''
+ STR(@PageSize*(@PageIndex-1)) + '' '' + @PrimaryKey
+ '' FROM '' + @TableName
+ @new_where1 + @new_order1 +'' ) AS TMP) ''+ @new_order1
END
ELSE -- 反向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM (''
+ ''Select TOP '' + STR(@PageSize) + '' ''
+ @FieldList + '' FROM ''
+ @TableName + @new_where2 + @PrimaryKey + '' < ''
+ ''(Select MIN('' + @PrimaryKey + '') FROM (Select TOP ''
+ STR(@TotalCount-@PageSize*@PageIndex) + '' '' + @PrimaryKey
+ '' FROM '' + @TableName
+ @new_where1 + @new_order2 +'' ) AS TMP) ''+ @new_order2
+ '' ) AS TMP '' + @new_order1
END
END
IF @SortType = 2 -- 仅主键反序排序
BEGIN
IF @PageIndex <= CEILING ((@TotalCount+0.0)/@PageSize)/2 -- 正向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ''
+ @TableName + @new_where2 + @PrimaryKey + '' < ''
+ ''(Select MIN('' + @PrimaryKey + '') FROM (Select TOP ''
+ STR(@PageSize*(@PageIndex-1)) + '' '' + @PrimaryKey
+'' FROM ''+ @TableName
+ @new_where1 + @new_order1 + '') AS TMP) ''+ @new_order1
END
ELSE -- 反向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM (''
+ ''Select TOP '' + STR(@PageSize) + '' ''
+ @FieldList + '' FROM ''
+ @TableName + @new_where2 + @PrimaryKey + '' > ''
+ ''(Select MAX('' + @PrimaryKey + '') FROM (Select TOP ''
+ STR(@TotalCount-@PageSize*@PageIndex) + '' '' + @PrimaryKey
+ '' FROM '' + @TableName
+ @new_where1 + @new_order2 +'' ) AS TMP) ''+ @new_order2
+ '' ) AS TMP '' + @new_order1
END
END
IF @SortType = 3 -- 多列排序,必须包含主键,且放置最后,否则不处理
BEGIN
IF CHARINDEX('','' + @PrimaryKey + '' '','','' + @Order) = 0
BEGIN PRINT(''ERR_02'') RETURN END
IF @PageIndex <= CEILING ((@TotalCount+0.0)/@PageSize)/2 -- 正向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ( ''
+ ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ( ''
+ '' Select TOP '' + STR(@PageSize*@PageIndex) + '' '' + @FieldList
+ '' FROM '' + @TableName + @new_where1 + @new_order1 + '' ) AS TMP ''
+ @new_order2 + '' ) AS TMP '' + @new_order1
END
ELSE -- 反向检索
BEGIN
SET
@Sql = ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ( ''
+ ''Select TOP '' + STR(@PageSize) + '' '' + @FieldList + '' FROM ( ''
+ '' Select TOP '' + STR(@TotalCount-@PageSize *@PageIndex+@PageSize) + '' '' + @FieldList
+ '' FROM '' + @TableName + @new_where1 + @new_order2 + '' ) AS TMP ''
+ @new_order1 + '' ) AS TMP '' + @new_order1
END
END
END
PRINT(@SQL)
EXEC(@Sql)

centos下docker自动备份 mysql、mssql
# mysql
docker exec -i mysql bash <<''EOF''
mkdir /backup/mysql/$(date +%Y%m%d)
# 备份指定数据库
mysqldump -uroot -proot test > /backup/mysql/$(date +%Y%m%d)/test_$(date +%Y%m%d_%H%M%S).sql
# 备份所有数据库
# mysqldump --no-defaults --events --all-databases -uroot -padmin > /backup/mysql/$(date +%Y%m%d)/all_$(date +%Y%m%d_%H%M%S).sql
exit
EOF
mkdir /backup/mysql/$(date +%Y%m%d)
docker cp mysql:/backup/mysql/$(date +%Y%m%d) /backup/mysql/
# 新增crontab任务:
# crontab -e
# 每天2点执行脚本
# 0 2 * * * bash /mnt/docker/backup/mysql.sh
# 重启crontabd 服务
# service crond restart
# https://blog.csdn.net/MR1269427885/article/details/82978311
或
db_user="root"
db_passwd="root"
db_name="db_test"
# the directory for story your backup file.you shall change this dir
backup_dir="/usr/software/backup/mysqlbackup"
# date format for backup file (dd-mm-yyyy)
time="$(date +"%Y%m%d%H%M%S")"
mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"_"$time.sql"
mysql备份文件定期删除
------------------------------附加一个mysql备份定时删除--------------------------
1.准备一个脚本文件 rmbak.sh
backup_dir="/data/backup222/4a_db_backup"
#删除七天之前的备份
#find $backup_dir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
#删除一分钟之前的备份
find $backup_dir -name $db_name"*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1
-type f 表示查找普通类型的文件,f 表示普通文件,可不写
-mtime +7 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是-mmin +7表示文件更改时间距现在7分钟以前
-exec rm {} ; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对{ },一个空格和一个\,最后是一个分号;
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的& 表示让该命令在后台执行
2.编辑crontab -e,添加下面,每分钟,如,每分钟一次删除
*/1 * * * * /data/backup222/rmbak.sh
3.重启:service crond restart
注意,rmbak.sh文件的权限,r,保证 定时任务能读取脚本内容,x,保证脚本有可执行权限
MSSQL:
#!/bin/bash
#设置mysql备份目录
folder=/var/opt/mssql/backup
cd $folder
day=`date +%Y%m%d`
#rm -rf $day
#mkdir $day
#cd $day
#数据库服务器,一般为localhost
host=localhost
#用户名
user=sa
#密码
password=''123456''
#要备份的数据库
db=MTS
#数据要保留的天数
days=7
#由于crontab命令是没环境变量,所以sqlcmd命令,要用全路径,否则定时执行会执行失败
/opt/mssql-tools/bin/sqlcmd -H$host -U$user -P$password -Q "
BACKUP DATABASE TESTDB
TO DISK = ''/var/opt/mssql/backup/TESTDB"$day".bak''
WITH FORMAT;
GO"
#删除之前的备份
#cd ..
day=`date -d "$days days ago" +%Y%m%d`
rm -rf "TESTDB"$day".bak"
echo "remove TESTDB"$day".bak"
# https://blog.csdn.net/fuck487/article/details/79295314
# https://blog.51cto.com/svsky/2121967
ps:
分 时 日 月 周 执行命令
第 1 列分钟 1~59,每分钟用 * 或者*/1表示,整点分钟数为00或0
第 2 列小时 1~23(0 表示 0 点)
第 3 列日 1~31
第 4 列月 1~12
第 5 列星期 0~6(0 表示星期天)
第 6 列要运行的命令
0 3 * * * /backup.sh,此命令表示在每天的凌晨三点执行一次脚本,可自行调整时间

ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)
我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。有些是预先生成 (pre-generate) 主键的,如 Oracle 和 PostgreSQL;有些是事后生成 (post-generate) 主键的,如 MySQL 和 SQL Server。但不管是哪种方式,我们都可以用 ibatis 的节点来获取语句所产生的主键。
oracle 例子:
<insert id="insertProduct-ORACLE" parameterClass="product">
<selectKey resultClass="int" type="pre" keyProperty="id" >
SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL
</selectKey>
insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)
</insert>
sql-server 例子:
<insert id="insertProduct-MS-SQL" parameterClass="product">
insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
<selectKey resultClass="int" type="post" keyProperty="id" >
select @@IDENTITY as value
</selectKey>
</insert>
mysql 例子:
<insert id="insertProduct-MYSQL" parameterClass="product">
insert into PRODUCT (PRD_DESCRIPTION) values (#description#)
<selectKey resultClass="int" type="post" keyProperty="id" >
select LAST_INSERT_ID() as value
</selectKey>
</insert>
SQLite 例子:
<insert id="Create" parameterClass="Subject">
INSERT INTO SUBJECT
(SubjectName,QuestionCount,IsNowPaper)
VALUES(#SubjectName#,#QuestionCount#,#IsNowPaper#)
<selectKey resultClass="int" type="post" property="SubjectId">
SELECT seq
FROM sqlite_sequence
WHERE (name = ''SUBJECT'')
</selectKey>
</insert>
注意:name = ''SUBJECT''中SUBJECT为表名称

Linux 系统下 ThinkPHP5 链接 MsSQL
案例
CentOS6.8 系统 ThinkPHP5 链接 MsSQL 数据库。
分析
ThinkPHP5 提供了 Mysql、Pgsql、Sqlite 和 Sqlsrv 四种数据库驱动。Window 系统下有现成的 php_sqlsrv.dll 扩展可用,但 Linux 系统中没有 (本人没有找到)。
尝试 1 未成功,写来以备其它用途
安装 freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
tar -zxvf freetds-patched.tar.gz
cd freetds-*
./configure --prefix=/usr/local/freetds --with-tdsver=auto --enable-msdblib --with-gnu-ld --enable-shared --enable-static
make && make install
安装 mssql
wget http://cn2.php.net/distributions/php-5.6.22.tar.gz
tar -zxvf php-5.6.22.tar.gz
cd php-*/ext/mssql
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
make && make install
修改 php.ini,添加如下配置 (路径请根据环境不同而定)
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/mssql.so"
修改 ThinkPHP5 配置文件 database.php
// 数据库类型
''type'' => ''sqlsrv'',
// 服务器地址
''hostname'' => ''192.168.1.210'',
// 数据库名
''database'' => ''dbname'',
// 用户名
''username'' => ''sa'',
// 密码
''password'' => ''123456'',
// 端口
''hostport'' => ''1433'',
测试
这种方式在 ThinkPHP 中是行不通的,在其它应用环境可以。
尝试 2 成功
安装 freetds
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
tar -zxvf freetds-patched.tar.gz
cd freetds-*
./configure --prefix=/usr/local/freetds --with-tdsver=auto --enable-msdblib --with-gnu-ld --enable-shared --enable-static
make && make install
安装 pdo_dblib
wget http://cn2.php.net/distributions/php-5.6.22.tar.gz
tar -zxvf php-5.6.22.tar.gz
cd php-*/ext/pdo_dblib
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-dblib=/usr/local/freetds
make && make install
修改 php.ini,添加如下配置 (路径请根据环境不同而定)
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/pdo_dblib.so"
修改 ThinkPHP5 配置文件 database.php
// 数据库类型
''type'' => ''dblib'',
// 服务器地址
''hostname'' => ''192.168.1.210'',
// 数据库名
''database'' => ''dbname'',
// 用户名
''username'' => ''sa'',
// 密码
''password'' => ''123456'',
// 端口
''hostport'' => ''1433'',
下载 ThinkPHP 数据库驱动 Dblib 文件
将文件拷贝到 thinkphp/library/think/db
目录。
测试
成功。

lnmp 环境里安装 mssql 及 mssql 的 php 扩展
小活中用到 mssql, 于是在自己 lnmp 环境中安装各 mssql 数据库
步骤如下:
源码编译安装
(1)下载 freetds-stable-0.91 源码:
http://download.csdn.net/download/xhu_eternalcc/7457555(花了 4 积分,没有积分的找我要,微信 zmd1047773569)
上传到根目录下的 download 文件中
(2)编译安装:
# cd /download
# tar zxvf freetds-stable.tgz(解压,)
# cd freetds-0.91
# 编译
# ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
# make
# make install
参数解释:
安装 freetds 到目录 /usr/local/freetds:--prefix=/usr/local/freetds
支持 MSSQL2000:--with-tdsver=8.0 --enable-msdblib
配置 FreeTds 的库文件
将 freetds 的库文件所在路径配置到 LD_LIBRARY_PATH 参数中:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/localfreetds/lib/:
或者直接把 etc/bashrc 的文件 bashrc 直接填写上 LD_LIBRARY_PATH=/usr/localfreetds/lib:$LD_LIBRARY_PATH
这么作的目的是为了避免加载 FreeTds 库文件加载不上的情况。
php 里安装 php-mssql 扩展:
cd /download (把php-mssql扩展下载到download目录里)
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz (下载扩展文件,这里要根据你环境中运行的php版本选择对应的扩展版本下载,我这里php是5.6.30的 所以php-mssql扩展下载对应的版本)
tar -zxvf php-5.6.30.tar.gz
cd /php-5.6.30/ext/mssql
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/
make && make install
编译安装后的结果 如下图
同时 mssql.so 也在 php 扩展文件下生成 (如下图)
把 extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/mssql.so" 添加到 usr/local/php/lib/php.ini 中
引用扩展后,重启 web 服务,通过 phpinfo 查看扩展 mssql 是否开启成功
重启 php /usr/local/php/sbin/php-fpm reload
重启 nginx 进入 nginx 可执行目录 sbin 下,输入命令./nginx -s reload 即可(或者 /application/nginx/sbin/nginx -s reload)
今天关于mssql 数据库如何实现分页存储的代码实例和sql实现mysql的分页功能的讲解已经结束,谢谢您的阅读,如果想了解更多关于centos下docker自动备份 mysql、mssql、ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)、Linux 系统下 ThinkPHP5 链接 MsSQL、lnmp 环境里安装 mssql 及 mssql 的 php 扩展的相关知识,请在本站搜索。