You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2016的SSRS PHP SDK是否有更新?求PHP连接示例代码

嘿,我完全懂你现在的麻烦——那个从Codeplex下载的旧SSRS PHP SDK不仅没安装说明,还停更十多年了,用来连SSRS 2016确实不太靠谱。别慌,咱们换个更稳妥的路子:直接用SSRS 2016原生支持的REST API来实现,不需要依赖那个过时的SDK,代码也更简洁稳定。

PHP连接SSRS 2016并调用报表的实现方案

前置准备

  • 确保你的PHP环境启用了curl扩展(大部分默认都已开启,没开的话需要在php.ini里去掉;extension=curl前面的分号,重启服务)
  • 拥有SSRS 2016的访问权限,清楚报表服务器的URL、登录用户名和密码(如果是Windows域身份验证,记得带上域名前缀)

基础代码示例

1. 验证连接并获取报表列表

先跑这段代码确认能正常访问SSRS服务器,拿到报表列表:

<?php
// 配置你的SSRS服务器信息
$ssrsServerUrl = 'http://你的SSRS服务器地址/ReportServer';
$username = 'DOMAIN\your_username'; // 域用户格式,本地用户直接写your_username
$password = 'your_password';

// 初始化CURL会话
$ch = curl_init();

// 设置CURL请求选项
curl_setopt($ch, CURLOPT_URL, $ssrsServerUrl . '/api/v2.0/reports');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); // 适配Windows身份验证
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 临时关闭SSL校验(生产环境建议配置合法证书)

// 执行请求并获取响应
$response = curl_exec($ch);
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// 处理响应结果
if ($httpStatusCode === 200) {
    $reports = json_decode($response, true);
    echo "成功获取报表列表:<br>";
    foreach ($reports as $report) {
        echo "- 报表名称:{$report['name']},完整路径:{$report['path']}<br>";
    }
} else {
    echo "请求失败,状态码:{$httpStatusCode},错误信息:" . curl_error($ch);
}

// 关闭CURL会话
curl_close($ch);
?>

2. 调用报表并导出为PDF

如果要直接导出指定报表为PDF(也支持Excel、Word等格式,只需要改rs:Format的值),用这段代码:

<?php
$ssrsServerUrl = 'http://你的SSRS服务器地址/ReportServer';
$username = 'DOMAIN\your_username';
$password = 'your_password';
$reportFullPath = '/报表文件夹/目标报表名称'; // 比如/FinanceReports/MonthlyRevenue

// 构建导出PDF的请求URL
$exportUrl = "{$ssrsServerUrl}?{$reportFullPath}&rs:Command=Render&rs:Format=PDF";

// 如果需要传递报表参数,直接加在URL后面,比如:
// $exportUrl .= "&Department=IT&ReportMonth=2024-05";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $exportUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$pdfContent = curl_exec($ch);
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpStatusCode === 200) {
    // 直接在浏览器输出PDF
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="report.pdf"');
    echo $pdfContent;
} else {
    echo "导出报表失败,状态码:{$httpStatusCode},错误信息:" . curl_error($ch);
}

curl_close($ch);
?>

实用注意事项

  • 如果你的SSRS用的是基本身份验证,只需要把CURLOPT_HTTPAUTH的值改成CURLAUTH_BASIC就行
  • 生产环境一定要关闭CURLOPT_SSL_VERIFYPEER=false,换成配置合法的SSL证书路径
  • 报表的完整路径可以在SSRS门户里查看:打开报表后,点击右上角的「详情」就能看到路径
  • 支持的导出格式包括:PDF、EXCELOPENXML、WORDOPENXML、CSV、IMAGE等,对应修改rs:Format的值即可

内容的提问来源于stack exchange,提问作者Ioannis Tambakis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:45:55