zoukankan      html  css  js  c++  java
  • php5.3.x连接MS SQL server2008

    开篇

    因为毕设老师需求的原因,虚拟旅游网站要求的数据库必须使用MS SQL server。

    我最擅长的web编程语言是PHP,但是在PHP中链接MS SQL server是一件非常麻烦的事,我个人分析造成这种麻烦的原因:是因为使用PHP的一大优点就是免费,然而MS SQL server虽然图形化界面操作起来简单,但是其昂贵的授权费让人望而却步;加之MySQL不俗的性能和强大的社区支持,使得真正企业环境里,使用PHP + MS SQL server的人越来越少。

    其实纵观网上的文章,之所以有人选择这样的组合(PHP + MS SQL server)是因为系统的遗留问题。比如php程序员要求在某企业网站上进行二次开发,或者企业原来就是用的MS SQL server数据库。总之,我经过十二小时的奋战,终于通信成功,现在把过程和经验记录如下。

    1. 安装MS SQL server2008 express数据库

    安装的过程比较简单。但是必须记住一点问题,安装时我们设置的——或者说是我们默认的——数据库实例名。

    1.1 数据库默认的实例名

    以MS SQL server2008 express为例,一般默认的实例名是 SQLEXPRESS。而我自行设置的是SQLSERVER,也就是sql server。

    1.2 设置数据库的登陆方式

    我们一定要给sa用户设置一个密码,以便我们将来编写程序访问数据库时的方便。我个人设置的密码是”6个1“。

    2. 登录数据库

    利用管理工具:SQL Server Management Studio,登陆数据库进行管理。如图1。

     

    图1 登陆MS SQL server2008数据库

    2.1登陆时的会遇到的问题

    登录时我遇到了问题,如图2。

     

    图2 登陆时遇到的问题

    错误信息如下:

     在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 53)

    2.2 问题的解决方案

    在我百度了一些解决方案以后,我了解到,服务器名称不能填写默认的:(local)。应该以这样的格式来填写:计算机名称\实例名称。以我个人为例,如图3。

     

    图3 正确的登陆填写

    既然能登陆到数据库,就说明我们的安装是没有问题的。下面我们进行一些关于PHP的设置。

    3 为PHP准备适当的库文件

    PHP5.3以后,其连接数据库的原生代码是由Microsoft团队来维护的。我们需要的库文件(在windows下是.dll文件)在PHP的源码包里是没有的,所以我们需要另行下载。

    参照PHP官方文档是最好的选择。

    http://php.net/manual/zh/book.sqlsrv.php

    3.1 下载并安装Microsoft SQL Server 2012 Native Client

    说句题外话,这一步是我在写博客时,阅读PHP manual中才得知的。怪不得我第一遍在操作时,碰到了php报错,中文大意就是“本机没有安装Microsoft SQL Server 2012 Native Client”。开来英文好,能阅读官方文档是王道啊!

    下载Microsoft SQL Server 2012 Native Client的网址如下:

    http://php.net/manual/zh/sqlsrv.requirements.php

    3.2 下载适当的Microsoft SQL Server Driver for PHP

    由官方文档我们可以得知,对应于PHP5.3.x的适用程序是SQLSRV 3.0。下载网址如下:

    http://www.microsoft.com/en-us/download/details.aspx?id=20098

    3.3 选择适当的库文件

    根据官方文档,我们把3.2步骤中下载的程序——SQLSRV30.EXE——解压缩以后,会得到8个驱动文件(驱动文件以.dll为结尾)。如图4。

     

    图4 SQLSRV30.EXE解压缩展开之后

     

    根据官方文档,php5.3线程安全版本应选择 php_pdo_sqlsrv_53_ts.dll 和 php_sqlsrv_53_ts.dll两个文件,放置在php根目录下的ext文件夹下。例如,在我的机器中,路径是D:\lamp\php5\ext。

    3.4 怎么样得知自己的php是否线程安全

    在phpinfo中,我们查看这样的一条信息。如图5。

     

    图5 phpinfo输出信息

     

    “enable”表示该php是线程安全版本的反之就是非线程安全。

    4. 配置php.ini文件

    关于php.ini文件的配置,完全可以参照如下的网址。

    http://msdn.microsoft.com/en-us/library/cc296203(v=sql.105).aspx

    4.1 使php加载SQLSRV驱动

    在php.ini的拓展模块加载区——文件中extension那块位置,填写如下配置,使php默认加载SQLSRV 驱动。

             extension=php_sqlsrv_53_ts.dll

    4.2 使php加载PDO_SQLSRV驱动

    在与4.1中同样的位置,填写如下配置。

             extension=php_pdo_sqlsrv_53_ts.dll

    为了使php开启pdo驱动,我们还要开启pdo驱动。 

             extension=php_pdo.dll

    4.3验证pdo_sqlsrv是否加载成功

    在phpinfo中看到画黄线的单词,表示加载成功。如图6所示。

     

    图6 phpinfo的输出

    5. 在php运行时动态加载

    我也是现在才知道,php还有这样的神奇功能,让我们暂时注释掉php配置文件里给你刚刚写好的配置,试一下动态加载的功能。

    根据官方文档,dl()这个函数在php5.3被废除了。我因此无法进行测试。

    但是微软官方的php代码如下:

     dl('php_pdo_sqlsrv_53_ts.dll');

    6. 注意事项

    在MS SQL server中,数据表能名称不能叫user,因为有个系统表的名称就是user!

    智慧在街市上呼喊,在宽阔处发声。
  • 相关阅读:
    TCP和UDP的区别
    DATAX 实现python调用cmd 系统控制台,实现在开发工具中内嵌datax (python 多行执行cmd命令)
    DATAX 实现java调用cmd 系统控制台,实现在开发工具中内嵌datax
    六大质量属性——可测试性代码层面描述(以“信息领域热词分析系统”为例)
    信息领域热词分析——质量属性
    DATAX 从scv到csv 从csv到mysql
    DATAX避坑点——MySQL到MYSQL,某个垃圾教程(简书)中,误导新手
    DATAX 按照官方实例 python datax.py ./stream2stream.json 乱码
    Python中plot使用方法小白的福音
    Python 最简实现逻辑回归,针对二维数据进行机器学习
  • 原文地址:https://www.cnblogs.com/fengyubo/p/4625491.html
Copyright © 2011-2022 走看看