在企业环境中,将报告部署到生产环境通常意味着开发者无法直接访问。任何对生产环境的更改都必须经过严格的文档记录,并由专门的人员执行,如发布经理、系统管理员、数据库管理员等。这些专业人员通常不会在他们的桌面上安装BIDS,也不希望安装。因此,简单地告诉他们打开项目,右键单击并点击“部署”是行不通的。因为当点击“部署”时,BIDS在后台做了很多事情。
首先,如何编写SSRS脚本?SSRS附带了rs.exe工具,它位于机器上的"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\rs.exe"(位置可能不同),并在MSDN页面上有描述。rs.exe接受的“脚本”文件是常规的VB.NET代码,可以调用全局rs对象的方法,该对象实际上是SSRS Web服务的代理。可以在脚本中放入任何有效的VB.NET语句,包括读取文件、打开套接字等。
SSRS Web服务的WSDL定义位于http://reportServerName/ReportServer/ReportService2005.asmx?wsdl,这是2005版本的协议,或者位于http://reportServerName/ReportServer/ReportService2010.asmx?wsdl,这是2010版本。实际上,rs.exe所做的就是:
这些步骤在每次调用脚本时都会执行,可能需要相当长的时间。另一个限制是必须使用VB.NET,C#不被支持。此外,代码中不能有任何Imports指令,因为它被rs生成的代码包围,类中间的Imports是不允许的。所以,如果使用像System.Xml.XmlDocument这样的类,它们必须是完全限定的。
如果上述任何问题,可能想要绕过rs.exe并自己生成代理。简单地创建一个控制台应用程序,并添加一个Web引用到ReportServiceXXXX.asmx?wsdl。“脚本”现在将是一个可执行文件。缺点是失去了动态编译:快速修改脚本“即时”不再是一个选项。
以下是一个使用rs.exe工具的简单示例: