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 工具中的主要功能:

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

SQL Server Reporting Service - 命令行部署脚本介绍D:\RS>rs -? 
SQL Server Reporting Service - 命令行部署脚本介绍Microsoft (R) Reporting Services RS 
SQL Server Reporting Service - 命令行部署脚本介绍Version 
10.0.1600.22 ((SQL_PreRelease).080709-1414 ) x86 
SQL Server Reporting Service - 命令行部署脚本介绍Executes script file contents against the specified Report Server. 
SQL Server Reporting Service - 命令行部署脚本介绍RS -i inputfile -s serverURL 
[-u username] [-p password] 
SQL Server Reporting Service - 命令行部署脚本介绍   
[-l timeout] [-b] [-e endpoint] [-v var=value] [-t] 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍        -i  inputfile   Script file to execute 
SQL Server Reporting Service - 命令行部署脚本介绍        -s  serverURL   URL (including server and vroot) to execute 
SQL Server Reporting Service - 命令行部署脚本介绍                        script against. 
SQL Server Reporting Service - 命令行部署脚本介绍        -u  username    User name used to log in to the server. 
SQL Server Reporting Service - 命令行部署脚本介绍        -p  password    Password used to log in to the server. 
SQL Server Reporting Service - 命令行部署脚本介绍        -e  endpoint    Web service endpoint to use with the script. 
SQL Server Reporting Service - 命令行部署脚本介绍                        Options are: 
SQL Server Reporting Service - 命令行部署脚本介绍                        Exec2005 - The ReportExecution2005 endpoint 
SQL Server Reporting Service - 命令行部署脚本介绍                        Mgmt2005 - The ReportService2005 endpoint 
SQL Server Reporting Service - 命令行部署脚本介绍        -l  timeout     Number of seconds before the connection to the 
SQL Server Reporting Service - 命令行部署脚本介绍                        server times out. Default is 
60 seconds and 0 is 
SQL Server Reporting Service - 命令行部署脚本介绍                        infinite time out. 
SQL Server Reporting Service - 命令行部署脚本介绍        -b              Run as a batch and rollback if commands fail 
SQL Server Reporting Service - 命令行部署脚本介绍        -v  var
=value   Variables and values to pass to the script 
SQL Server Reporting Service - 命令行部署脚本介绍        -t  trace       Include trace information in error message
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍

 

其实看上去也不难, 其中重点介绍一个参数, 大家可以看到-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看一下, 内容如下:

SQL Server Reporting Service - 命令行部署脚本介绍'============================================================================= 
SQL Server Reporting Service - 命令行部署脚本介绍'
  File:      PublishSampleReports.rss 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
  Summary:  Demonstrates a script that can be used with RS.exe to 
SQL Server Reporting Service - 命令行部署脚本介绍'
         publish the sample reports that ship with Reporting Services. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
--------------------------------------------------------------------- 
SQL Server Reporting Service - 命令行部署脚本介绍'
 This file is part of Microsoft SQL Server Code Samples. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
  Copyright (C) Microsoft Corporation.  All rights reserved. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 This source code is intended only as a supplement to Microsoft 
SQL Server Reporting Service - 命令行部署脚本介绍'
 Development Tools and/or on-line documentation.  See these other 
SQL Server Reporting Service - 命令行部署脚本介绍'
 materials for detailed information regarding Microsoft code samples. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 
SQL Server Reporting Service - 命令行部署脚本介绍'
 KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 
SQL Server Reporting Service - 命令行部署脚本介绍'
 IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
SQL Server Reporting Service - 命令行部署脚本介绍'
 PARTICULAR PURPOSE. 
SQL Server Reporting Service - 命令行部署脚本介绍'
============================================================================= 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 1.0 Documentation 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 Read the following in order to familiarize yourself with the sample script. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 1.1 Overview 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 This sample script uses a script file (.rss) and the script environment to run 
SQL Server Reporting Service - 命令行部署脚本介绍'
 Web service operations on a specified report server. The script creates a folder 
SQL Server Reporting Service - 命令行部署脚本介绍'
 that you specify as a command-prompt variable using the 杤 switch, and then 
SQL Server Reporting Service - 命令行部署脚本介绍'
 publishes the sample reports that ship with Reporting Services to a report server. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 Depending on the location of your sample reports, you may need to modify the 
SQL Server Reporting Service - 命令行部署脚本介绍'
 value of the filePath variable, which references the path to your sample reports. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 1.2 Script Variables 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 Variables that are passed on the command line with the -v switch: 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 (a) parentFolder - corresponds to the folder that the script creates and uses 
SQL Server Reporting Service - 命令行部署脚本介绍'
     to contain your published reports 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 1.3 Sample Command Lines 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
 1.3.1 Use the script to publish the sample reports to an AdventureWorks Sample Reports folder. 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍'
       rs -i PublishSampleReports.rss -s http://myserver/reportserver 
SQL Server Reporting Service - 命令行部署脚本介绍'
 
SQL Server Reporting Service - 命令行部署脚本介绍

SQL Server Reporting Service - 命令行部署脚本介绍
Dim definition As [Byte]() = Nothing 
SQL Server Reporting Service - 命令行部署脚本介绍
Dim warnings As Warning() = Nothing 
SQL Server Reporting Service - 命令行部署脚本介绍
Dim parentFolder As String = "AdventureWorks Sample Reports" 
SQL Server Reporting Service - 命令行部署脚本介绍
Dim parentPath As String = "/" + parentFolder 
SQL Server Reporting Service - 命令行部署脚本介绍
Dim filePath As String = "C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports\" 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍SQL Server Reporting Service - 命令行部署脚本介绍
Public Sub Main()Sub Main() 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    rs.Credentials 
= System.Net.CredentialCache.DefaultCredentials 
SQL Server Reporting Service - 命令行部署脚本介绍    
'Create the parent folder 
SQL Server Reporting Service - 命令行部署脚本介绍
    Try 
SQL Server Reporting Service - 命令行部署脚本介绍        rs.CreateFolder(parentFolder, 
"/"Nothing
SQL Server Reporting Service - 命令行部署脚本介绍        Console.WriteLine(
"Parent folder {0} created successfully", parentFolder) 
SQL Server Reporting Service - 命令行部署脚本介绍    
Catch e As Exception 
SQL Server Reporting Service - 命令行部署脚本介绍        Console.WriteLine(e.Message) 
SQL Server Reporting Service - 命令行部署脚本介绍    
End Try 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    
'Create the AdventureWorks shared data source 
SQL Server Reporting Service - 命令行部署脚本介绍
    CreateSampleDataSource("AdventureWorks""SQL""data source=(local);initial catalog=AdventureWorks"
SQL Server Reporting Service - 命令行部署脚本介绍    CreateSampleDataSource(
"AdventureWorksDW""OLEDB-MD", _ 
SQL Server Reporting Service - 命令行部署脚本介绍        
"data source=localhost;initial catalog=Adventure Works DW"
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    
'Publish the sample reports 
SQL Server Reporting Service - 命令行部署脚本介绍
    PublishReport("Company Sales"
SQL Server Reporting Service - 命令行部署脚本介绍    PublishReport(
"Employee Sales Summary"
SQL Server Reporting Service - 命令行部署脚本介绍    PublishReport(
"Product Catalog"
SQL Server Reporting Service - 命令行部署脚本介绍    PublishReport(
"Product Line Sales"
SQL Server Reporting Service - 命令行部署脚本介绍    PublishReport(
"Sales Order Detail"
SQL Server Reporting Service - 命令行部署脚本介绍    PublishReport(
"Territory Sales Drilldown"
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍
End Sub
 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍SQL Server Reporting Service - 命令行部署脚本介绍
Public Sub CreateSampleDataSource()Sub CreateSampleDataSource(name As String, extension As String, connectionString As String
SQL Server Reporting Service - 命令行部署脚本介绍    
'Define the data source definition. 
SQL Server Reporting Service - 命令行部署脚本介绍
    Dim definition As New DataSourceDefinition() 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.CredentialRetrieval 
= CredentialRetrievalEnum.Integrated 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.ConnectString 
= connectionString 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.Enabled 
= True 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.EnabledSpecified 
= True 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.Extension 
= extension 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.ImpersonateUser 
= False 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.ImpersonateUserSpecified 
= True 
SQL Server Reporting Service - 命令行部署脚本介绍    
'Use the default prompt string. 
SQL Server Reporting Service - 命令行部署脚本介绍
    definition.Prompt = Nothing 
SQL Server Reporting Service - 命令行部署脚本介绍    definition.WindowsCredentials 
= False 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍
Try 
SQL Server Reporting Service - 命令行部署脚本介绍    rs.CreateDataSource(name, parentPath, 
False, definition, Nothing
SQL Server Reporting Service - 命令行部署脚本介绍    Console.WriteLine(
"Data source {0} created successfully", name) 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍
Catch e As Exception 
SQL Server Reporting Service - 命令行部署脚本介绍    Console.WriteLine(e.Message) 
SQL Server Reporting Service - 命令行部署脚本介绍
End Try 
SQL Server Reporting Service - 命令行部署脚本介绍
End Sub
 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍SQL Server Reporting Service - 命令行部署脚本介绍
Public Sub PublishReport()Sub PublishReport(ByVal reportName As String
SQL Server Reporting Service - 命令行部署脚本介绍    
Try 
SQL Server Reporting Service - 命令行部署脚本介绍        
Dim stream As FileStream = File.OpenRead(filePath + reportName + ".rdl"
SQL Server Reporting Service - 命令行部署脚本介绍        definition 
= New [Byte](stream.Length) {} 
SQL Server Reporting Service - 命令行部署脚本介绍        stream.Read(definition, 
0CInt(stream.Length)) 
SQL Server Reporting Service - 命令行部署脚本介绍        stream.Close() 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    
Catch e As IOException 
SQL Server Reporting Service - 命令行部署脚本介绍        Console.WriteLine(e.Message) 
SQL Server Reporting Service - 命令行部署脚本介绍    
End Try 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    
Try 
SQL Server Reporting Service - 命令行部署脚本介绍        warnings 
= rs.CreateReport(reportName, parentPath, False, definition, Nothing
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍        
If Not (warnings Is NothingThen 
SQL Server Reporting Service - 命令行部署脚本介绍            
Dim warning As Warning 
SQL Server Reporting Service - 命令行部署脚本介绍            
For Each warning In warnings 
SQL Server Reporting Service - 命令行部署脚本介绍                Console.WriteLine(warning.Message) 
SQL Server Reporting Service - 命令行部署脚本介绍            
Next warning 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍        
Else 
SQL Server Reporting Service - 命令行部署脚本介绍            Console.WriteLine(
"Report: {0} published successfully with no warnings", reportName) 
SQL Server Reporting Service - 命令行部署脚本介绍        
End If 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍    
Catch e As Exception 
SQL Server Reporting Service - 命令行部署脚本介绍        Console.WriteLine(e.Message) 
SQL Server Reporting Service - 命令行部署脚本介绍    
End Try 
SQL Server Reporting Service - 命令行部署脚本介绍
End Sub
 
SQL Server Reporting Service - 命令行部署脚本介绍
SQL Server Reporting Service - 命令行部署脚本介绍

 

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

然后使用:

SQL Server Reporting Service - 命令行部署脚本介绍RS -"PublishReports.rss" -"http://[ReportServer]/ReportServer/" 

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

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

上一篇:分区表查询条件使用浅析


下一篇:[Azure] 创建支持Apache,PHP以及MySQL的CentOS Web Virtual Machine Server