我最近从 ODBC 切换到 SQLSRV 以从 PHP 连接 MS SQL 2008。存储过程中的 PRINT 函数存在一个奇怪的问题。如果 PRINT 函数显示超过大约 700 个字符,则返回“HTTP 错误 500.0 - 内部服务器错误”消息。
以下是我正在使用的工具列表:
- PHP 5.3.6
- 微软 SQL 服务器 2008
- [PHP_MSSQL]extension=php_sqlsrv_53_nts.dll
- IE8(此问题与其他浏览器以及 firefox、chrome 等浏览器有关)
- 网络服务器 IIS
以下是代码PHP CODE:
<?php
$link = sqlsrv_connect( 'dbname\instance2008', array( "UID"=>'UID',"PWD"=>'PWD', "Database"=>'Database_name',"CharacterSet" => "UTF-8", "MultipleActiveResultSets" => 0));
if(!$link) die( print_r(sqlsrv_errors(), true));
sqlsrv_configure('WarningsReturnAsErrors', 0);
$sql = "EXEC spa_i18n_test";
$result = sqlsrv_query($link, $sql);
if(!isset($result)){
error_reporting(2047);
}
while( $row = sqlsrv_fetch_array( $result)){
echo $row[0] . ": " . $row[1] . "<br />";
}
?>
存储过程的脚本。
Create proc spa_i18n_test
AS
SET NOCOUNT ON
print '2222222222222111111111111111112dddddddddddddd2222222222
222111111111111111112dddddddddddddd2222222222222111111
111111111112dddddddddddddd222222222222211111111111111111
2dddddddddddddd222222222222211111111111111122222222222221
11111111111111112dddddddddddddd222222222222211111111111111
1112dddddddddddddd2222222222222111111111111111112dddddddddd
dddd2222222222222111111111111111112dddddddddddddd22222222222
221111111111111112222222222222111111111111111112dddddddddddd
dd2222222222222111111111111111112dddddddddddddd2222222222222
111111111111111112dddddddddddddd2222222222222111111111111111
112dddddddddddddd2222222222222111111111111111222222222222211
1111111111111112ddddddddd22222wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwww'
select '1' a, '2' b
我已经尝试过http://support.microsoft.com/kb/269412中给出的解决方案,但遗憾的是它对我不起作用。
请分享一些解决方法。