SQL Server Reporting Service - 命令行部署脚本介绍

首先应公司老总要求写了英文版: http://www.cnblogs.com/WilsonWu/archive/2009/02/19/1394200.html

英文不好别笑话.

进入正题!

使用 SQL Server Reporting Service 的朋友应该都会遇到与此类似的问题, 尤其是在产品中, 比如我们有若干个报表形成的一个产品, 这些报表是需要用户部署在报表服务器上的才能使用的, 我们可以只给用户 RDL 报表文件和一个文档教程, 让他们自己上传, 自己配置数据源等等, 但是这样也许令人感到这个产品太不人性化, 而 SQL Server Reporting Service 也想到了这点, 它给我们提供了一个名为 RS.exe 的小工具, 这个工具就可以帮助我们以命令行的形式做一些有关 Reporting Service 的工作, 现在先介绍一下 RS.exe 工具中的主要功能:

首先使用-?命令获取一些帮助信息:

D:\RS>rs -? 
Microsoft (R) Reporting Services RS 
Version 10.0.1600.22 ((SQL_PreRelease).080709-1414 ) x86 
Executes script file contents against the specified Report Server. 
RS -i inputfile -s serverURL [-u username] [-p password] 
   [-l timeout] [-b] [-e endpoint] [-v var=value] [-t] 

        -i  inputfile   Script file to execute 
        -s  serverURL   URL (including server and vroot) to execute 
                        script against. 
        -u  username    User name used to log in to the server. 
        -p  password    Password used to log in to the server. 
        -e  endpoint    Web service endpoint to use with the script. 
                        Options are: 
                        Exec2005 - The ReportExecution2005 endpoint 
                        Mgmt2005 - The ReportService2005 endpoint 
        -l  timeout     Number of seconds before the connection to the 
                        server times out. Default is 60 seconds and 0 is 
                        infinite time out. 
        -b              Run as a batch and rollback if commands fail 
        -v  var=value   Variables and values to pass to the script 
        -t  trace       Include trace information in error message

 

其实看上去也不难, 其中重点介绍一个参数, 大家可以看到-i这个参数中需要传输一个脚本文件给该工具, 其实这个脚本文件也是一般的VB.NET语法写的, 在网上查了一些资料, SQL Server 安装包中没有默认包含脚本实例, 所以我们需要自己下载一下, 大家可以通过: http://www.codeplex.com/MSFTRSProdSamples 这个网站下载并安装, 其中会下载到一个安装包, 它包含了所有 SQL Server 中技术的实例, 安装完成后, 我们进入C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services 目录, 然后找到一个名为 "Script Samples" 的目录, 这个目录中有若干个RSS为后缀的文件, 这些文件就是脚本文件里, 打开一个名为PublishSampleReports.rss看一下, 内容如下:

'============================================================================= 
'  File:      PublishSampleReports.rss 

'  Summary:  Demonstrates a script that can be used with RS.exe to 
'         publish the sample reports that ship with Reporting Services. 

'--------------------------------------------------------------------- 
' This file is part of Microsoft SQL Server Code Samples. 

'  Copyright (C) Microsoft Corporation.  All rights reserved. 

' This source code is intended only as a supplement to Microsoft 
' Development Tools and/or on-line documentation.  See these other 
' materials for detailed information regarding Microsoft code samples. 

' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 
' KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 
' IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
' PARTICULAR PURPOSE. 
'============================================================================= 

' 1.0 Documentation 

' Read the following in order to familiarize yourself with the sample script. 

' 1.1 Overview 

' This sample script uses a script file (.rss) and the script environment to run 
' Web service operations on a specified report server. The script creates a folder 
' that you specify as a command-prompt variable using the 杤 switch, and then 
' publishes the sample reports that ship with Reporting Services to a report server. 
' Depending on the location of your sample reports, you may need to modify the 
' value of the filePath variable, which references the path to your sample reports. 

' 1.2 Script Variables 

' Variables that are passed on the command line with the -v switch: 

' (a) parentFolder - corresponds to the folder that the script creates and uses 
'     to contain your published reports 

' 1.3 Sample Command Lines 


' 1.3.1 Use the script to publish the sample reports to an AdventureWorks Sample Reports folder. 

'       rs -i PublishSampleReports.rss -s http://myserver/reportserver 


Dim definition As [Byte]() = Nothing 
Dim warnings As Warning() = Nothing 
Dim parentFolder As String = "AdventureWorks Sample Reports" 
Dim parentPath As String = "/" + parentFolder 
Dim filePath As String = "C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports\" 

Public Sub Main()Sub Main() 

    rs.Credentials = System.Net.CredentialCache.DefaultCredentials 
    'Create the parent folder 
    Try 
        rs.CreateFolder(parentFolder, "/", Nothing) 
        Console.WriteLine("Parent folder {0} created successfully", parentFolder) 
    Catch e As Exception 
        Console.WriteLine(e.Message) 
    End Try 

    'Create the AdventureWorks shared data source 
    CreateSampleDataSource("AdventureWorks", "SQL", "data source=(local);initial catalog=AdventureWorks") 
    CreateSampleDataSource("AdventureWorksDW", "OLEDB-MD", _ 
        "data source=localhost;initial catalog=Adventure Works DW") 

    'Publish the sample reports 
    PublishReport("Company Sales") 
    PublishReport("Employee Sales Summary") 
    PublishReport("Product Catalog") 
    PublishReport("Product Line Sales") 
    PublishReport("Sales Order Detail") 
    PublishReport("Territory Sales Drilldown") 

End Sub 

Public Sub CreateSampleDataSource()Sub CreateSampleDataSource(name As String, extension As String, connectionString As String) 
    'Define the data source definition. 
    Dim definition As New DataSourceDefinition() 
    definition.CredentialRetrieval = CredentialRetrievalEnum.Integrated 
    definition.ConnectString = connectionString 
    definition.Enabled = True 
    definition.EnabledSpecified = True 
    definition.Extension = extension 
    definition.ImpersonateUser = False 
    definition.ImpersonateUserSpecified = True 
    'Use the default prompt string. 
    definition.Prompt = Nothing 
    definition.WindowsCredentials = False 

Try 
    rs.CreateDataSource(name, parentPath, False, definition, Nothing) 
    Console.WriteLine("Data source {0} created successfully", name) 

Catch e As Exception 
    Console.WriteLine(e.Message) 
End Try 
End Sub 

Public Sub PublishReport()Sub PublishReport(ByVal reportName As String) 
    Try 
        Dim stream As FileStream = File.OpenRead(filePath + reportName + ".rdl") 
        definition = New [Byte](stream.Length) {} 
        stream.Read(definition, 0, CInt(stream.Length)) 
        stream.Close() 

    Catch e As IOException 
        Console.WriteLine(e.Message) 
    End Try 

    Try 
        warnings = rs.CreateReport(reportName, parentPath, False, definition, Nothing) 

        If Not (warnings Is Nothing) Then 
            Dim warning As Warning 
            For Each warning In warnings 
                Console.WriteLine(warning.Message) 
            Next warning 

        Else 
            Console.WriteLine("Report: {0} published successfully with no warnings", reportName) 
        End If 

    Catch e As Exception 
        Console.WriteLine(e.Message) 
    End Try 
End Sub 

 

除了一些专有的rs链接服务器的操作, 大部分代码还是很清晰的, 而且发布数据源和报表都单独列为一个方法, 我们只要摘取其中的内容, 建立我们的新报表就可以完成一个可用的发布报表的脚本了, 这里我不写了, 如果懒得下载的朋友直接使用上面的代码也是一样的.

然后使用:

RS -i "PublishReports.rss" -s "http://[ReportServer]/ReportServer/" 

命令就可以执行报表部署操作了.

介绍就到这里, 我将在近期发布一篇关于TFS和报表服务技巧的文章, 其中会具体给大家一个实例代码, 敬请期待! 感谢!

时间: 2024-09-20 06:39:54

SQL Server Reporting Service - 命令行部署脚本介绍的相关文章

SQL Server Reporting Service - 一步部署 TFS 项目报表

上次介绍了 SQL Server Reporting Service 命令行部署报表的基本内容, 利用这些知识我们可以轻松的部署报表, 然而在 TFS 中, 每个项目都有它对应的报表, 这些报表如果要一个个的更新也是件痛苦的事情, 现在我也遇到了这个问题, 针对 TFS 开发了两张报表, 但是如何将这些报表应用到所有项目上呢? 结合之前的部署脚本知识, 我们可以使用下面方法实现: 首先建立一个批处理文件ImportWIT.bat, 用来更新某个项目的Work Item定义文件:   @ECHO 

SQL Server Reporting Service - Deployment by command line

Chinese version: http://www.cnblogs.com/WilsonWu/archive/2009/02/19/1394198.html Some times when we use the SQL Server Reporting Service will get the same problem, if we have a product constituted by some reports, and there is a new release will be p

[收藏]利用SQL Server Reporting Services 从应用程序生成用户友好的报表

server|services|程序 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 发布日期: 09/03/2004 | 更新日期: 09/03/2004John C. Hancock   http://www.microsoft.com/china/msdn/library/data/sqlserver/SQLServerReportServ.mspx本文讨论:•Reporting•设计和部署报表•使用 Reporting Services 的

在SQL Server中使用命令调用SSIS包

  在SQL Server中可以使用dtexec命令运行SSIS包(2005以上版本),当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包. 具体操作步骤如下: 1.首先,当然是要在Business Intelligence中设计好包,并调试通过. 2.然后,有两种方式可以在SQL Server中使用命令运行SSIS包 第一种是直接执行ssis包文件,命令如: exec xp_cmdshell 'dtexec /f "c:test.dtsx"' 第二种是将包文

在SQL Server中使用命令调用SSIS包的具体方法_MsSql

具体操作步骤如下: 1.首先,当然是要在Business Intelligence中设计好包,并调试通过. 2.然后,有两种方式可以在SQL Server中使用命令运行SSIS包 第一种是直接执行ssis包文件,命令如: exec xp_cmdshell 'dtexec /f "c:\test.dtsx"' 第二种是将包文件发布或者导入到Integration Services服务中,然后再执行. 发布包是在Business Intelligence中生成发布文件,并发布到Integr

微软Sql server analysis service数据挖掘技术

原文:微软Sql server analysis service数据挖掘技术 最新在一个项目中要求用到微软SSAS中的数据挖掘功能,虽然以前做项目的时候也经常用到SSAS中的多维数据集 (就是CUBE),但是始终没有对SSAS中的数据挖掘功能进行过了解.所以借着项目需求这股东风最近了解了下SSAS的数据挖掘,这里先写一篇博客做一个简要的归纳.   说到数据挖掘,我们首先需要知道SSAS数据挖掘能干什么,为什么需要进行数据挖掘.我们先来看一个例子假设我们数据库中现在有一张表叫CustomersBo

基于SQL Server 2008 Service B“.NET研究”roker构建企业级消息系统

1.引言 Microsoft 在SQL Server 2005引入了服务代理 (Service Broker 简称SSB) 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则.Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持. 这使开发人员可以轻松地创建使用数据库引擎组件在完全不同的数据库之间进行通信的复杂应用程序.开发人员可以使用 Servi

在SQL Server中使用命令调用SSIS包的具体方法

具体操作步骤如下: 1.首先,当然是要在Business Intelligence中设计好包,并调试通过. 2.然后,有两种方式可以在SQL Server中使用命令运行SSIS包 第一种是直接执行ssis包文件,命令如: exec xp_cmdshell 'dtexec /f "c:\test.dtsx"' 第二种是将包文件发布或者导入到Integration Services服务中,然后再执行. 发布包是在Business Intelligence中生成发布文件,并发布到Integr

SQL Server 2008的升级和部署问题

本文是以问答的形式来介绍SQL Server 2008的升级与部署,希望通过本文能给大家一些提高和帮助.     Q:现在我所在的公司正在使用SQL 2005这个版本,那么SQL 从05升级到SQL 08的PDS(数据保护系统)过程中,我们最好选择什么方法呢?那么在升级到SQL 08后,SSIS(生成高性能数据集成解决方案平台)会不会有所提高呢? A:其实从SQL 2000里面的DPS升级到SQL 2005里面的DPS升级是一样的,我们推荐的方法仍然是重写,因为SQL 2005跟SQL 2008