You are here

在Drupal下访问MS SQL SERVER

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2010-04-20 12:45

首先写了一个测试函数mssql.module,用于测试,结果出现以下问题:

warning: Wrong parameter count for mssql_init() in F:\xampp\htdocs\wg\includes\module.inc on line 483.
warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 172.16.230.128 in F:\xampp\htdocs\wg\sites\all\modules\mssql\mssql.module on line 27.
warning: mssql_select_db(): supplied argument is not a valid MS SQL-Link resource in F:\xampp\htdocs\wg\sites\all\modules\mssql\mssql.module on line 28.
warning: mssql_query() [function.mssql-query]: Unable to connect to server: (null) in F:\xampp\htdocs\wg\sites\all\modules\mssql\mssql.module on line 31.
warning: mssql_query() [function.mssql-query]: A link to the server could not be established in F:\xampp\htdocs\wg\sites\all\modules\mssql\mssql.module on line 31.
warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in F:\xampp\htdocs\wg\sites\all\modules\mssql\mssql.module on line 33.
 
结果在网上搜索,竟然没有人遇到这样的问题.我怀疑是配置的问题,检查PHP的配置文件,按照网上的说明,
1、打开php.inextension=php_mssql.dll的注释符号去掉。
2、打开php.inmssql.secure_connection = Off改为on
问题仍然存在,后来我想,是不是我的模块的命名的问题,我把测试模块的名字改为了msssql,多了一个s.因为我觉得mssql会用到一个init的函数,而这个函数恰好是Drupal的钩子函数.
换了名字以后,第一个问题解决了.又出现新的问题.
·                                 warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: 202.96.154.194 in F:\xampp\htdocs\wg\sites\all\modules\msssql\msssql.module on line 27.
·                                 warning: mssql_select_db(): supplied argument is not a valid MS SQL-Link resource in F:\xampp\htdocs\wg\sites\all\modules\msssql\msssql.module on line 28.
·                                 warning: mssql_query() [function.mssql-query]: Unable to connect to server: (null) in F:\xampp\htdocs\wg\sites\all\modules\msssql\msssql.module on line 31.
·                                 warning: mssql_query() [function.mssql-query]: A link to the server could not be established in F:\xampp\htdocs\wg\sites\all\modules\msssql\msssql.module on line 31.
·                                 warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in F:\xampp\htdocs\wg\sites\all\modules\msssql\msssql.module on line 33.
找了许久,发现还是配置的问题,在网上看到的, NTWDBLIB.DLL这个文件的版本有问题,我用的是PHP自带的.从网上找了一个比较新的,下载了下来,复制到php安装目录和apache的bin目录以及c:\windows\system32目录下.这样错误消息又变了:
第一句出线了乱码,使用记事本查看元文件,看到乱码对应的消息为:
“用户 '(null)' 登录失败。原因: 未与信任 SQL Server 连接相关联。 (severity 14)”.
通过baidu,找到了原因,原来我启用
mssql.secure_connection = On,
把它改为Off,就可以了.

终于可以正常工作,返回了正确的结果.

Drupal版本: