仓酷云
标题:
MSSQL编程:[保藏]使用SQL Server Reporting Servi...
[打印本页]
作者:
冷月葬花魂
时间:
2015-1-16 22:35
标题:
MSSQL编程:[保藏]使用SQL Server Reporting Servi...
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。server|services|程序使用SQLServerReportingServices从使用程序天生用户友爱的报表公布日期:09/03/2004|更新日期:09/03/2004
JohnC.Hancock
http://www.microsoft.com/china/msdn/library/data/sqlserver/SQLServerReportServ.mspx
本文会商:•
Reporting
•
计划和部署报表
•
利用ReportingServices的Web服务
•
包管报表的平安
本文利用以下手艺:
SQLServer、ASP.NET、VisualBasic.NET
代码下载:
SQLServerReportingServices.exe(222KB)
本页内容ReportingServices概述计划第一个报表部署和测试将报表增加到Web使用程序将报表嵌进到Web使用程序中包管报表的平安利用ReportingServicesWeb服务定阅报表接上去该怎样做?
天真的报表功效是年夜多半营业使用程序的一个请求,这些报表功效在集成到Web使用程序中以后用处加倍普遍。使用SQLServer®2000ReportingServices的最新版本,您能够轻松地具有来自各类数据源的报表天生功效。在本文中,我将先容利用VisualStudio®和ReportingServices来编写报表,并演示怎样将报表集成到Web使用程序中。
ReportingServices是基于服务器的报表天生平台,该平台构建在.NETFramework上并与SQLServer2000集成在一同,因而您可使用一个扩大的基于Web服务的API将丰厚的报表天生功效集成到使用程序中。只管报表服务器利用SQLServer作为报表的贮存库,但使用OLEDB、ODBC或ADO.NET供应程序的任何数据源都能够用来为报表供应数据,这就使得ReportingServices成为在各类企业情况中天生报表的极佳工具。
ReportingServices是作为SQLServer2000的一部分而受权的,因而假如您有已受权的SQLServer的正本,则能够在统一服务器上运转ReportingServices而无需付出分外的允许证用度。假如您决意在自力的、还没有经SQLServer受权的盘算机(比方,Web服务器)上运转ReportingServices,您将必要购置分外的SQLServer允许证。
要入手下手利用ReportingServices,您能够下载位于SQLServer2000ReportingServices的120天试用版软件,它还包含有关怎样取得该产物的安装媒体的申明。在安装该产物时,请确保选中包含示例报表的选项,由于我要将这些报表集成到本文的Web使用程序中。
ReportingServices概述
ReportingServices报表计划利用新的VisualStudio.NET2003报表计划器,在安装有VisualStudio的统一盘算机上安装了ReportingServices后,该计划器就能够利用。计划器以新的基于XML报表界说言语(RDL)输入报表结构和数据会见的申明,而RDL文件会公布到报表服务器。假如您但愿为用户供应创作功效,也能够利用第三方的报表计划器。
办理员可使用基于Web的报表办理器来办理已公布的报表,而且能够实行一些义务,比方,包管某些用户组报表的平安或变动已部署报表的数据源毗连字符串。用户也能够利用报表办理器来扫瞄和检察报表;可是良多公司偏向于利用URL哀求或ReportingServicesWeb服务,将报表检察间接集成到它们现有的外部Web站点或使用程序中。
ReportingServices系统布局
能够将报表参数化,如许用户能够在检察报表时从选择列表中举行选择;它们还能够导出为多种格局,比方,Microsoft®Excel、PDF和XML。只管及时报表供应最新的数据,也能够将报表缓存一段工夫以进步功能并削减数据源上的负载。关于商务智能使用程序,报表能够会见AnalysisServicesOLAP多维数据集,并且ReportingServices乃至能够导进现有的MicrosoftAccess报表,只管因为这两种手艺间存在差别,它其实不能撑持一切的Access功效。有关ReportingServices系统布局的具体情形,请拜见。
前往页首计划第一个报表
只管我先容的重点在于将报表集成到使用程序中而不是创作报表,但熟习ReportingServices的最好举措就是当即动手创立一个新的报表项目。为此,请翻开VisualStudio并利用ReportProjectWizard创立一个新的项目,该导游位于BusinessIntelligenceProjects部分。为您的项目指定一个称号,单击“OK”,然后将显现报表导游对话框。在您选择数据源的这一步骤中,单击“Edit”按钮,以便指定毗连到您数据库服务器上的AdventureWorks2000,单击“OK”,然后选中使其成为共享数据源的选项。
单击“Next”进进到“DesigntheQuery”步骤,指定复杂的SQL语句(比方,“SELECT*FROMProduct”),然后单击“Next”。ReportingServices撑持显现一组流动列的尺度表格局(Tabular)报表,也撑持利用带有静态列的交织表款式视图的矩阵式(Matrix)报表,因而为该报表选择Tabular,然后单击“Next”。
将某些列(比方,ProductID和Name)拖到Details部分并单击“Next”。选择默许的Bold款式,单击“Next”,然后指定您的报表服务器的假造目次的URL,比方,http://MyServer/ReportServer。如今,单击“Next”。最初一步,您能够为您的第一个报表指命名称,比方,ProductsReport;然后单击“Finish”。
该导游将会创立该项目,同时还创立一个能够由多个报表共享AdventureWorks2000数据源,和一个在计划器中翻开的有关Products数据的报表(请拜见)。默许情形下,显现使您能够修正报表计划的Layout选项卡。
VisualStudio报表计划器
Data选项卡用于指定报表的查询,包含设置参数以便在实行报表时提醒用户供应值。单击“Preview”选项卡来测试报表显现给用户的体例。
如今,您能够将附加的报表增加到该项目,大概经由过程增加附加列、将数据分组、增加汇总、乃至是增加可以显现来自其他查询的数据的附加表来修正Products报表。与良多报表计划器分歧,ReportingServices利用带外计划,这使得它能够轻松地创立将各类源的数据会合在统一个地位的报表。
您方才创立的报表项目由以后驻留在您的开辟盘算机上的一组文件构成。为了将这些报表公布给用户,您必要将该项目部署到报表服务器。
前往页首部署和测试
在部署报表项目之前,必要指定将项目部署到哪个服务器。假如您最后利用该导游创立了报表项目,那末您大概已指定了方针服务器。
要反省该设置或指定一个新服务器,请选择“Project|Properties”来显现ProjectProperties对话框。举行该设置使您能够指定项目标文件夹名和ReportingServicesWeb服务的URL。在菜单上选择“Build|DeploySolution”将构建报表项目,然后将其部署到服务器。
在部署报表项目后,您就能够举行测试了。已部署到服务器的每一个报表都具有独一的路径,该路径能够用于在扫瞄器中显现报表。比方,要显现您创立的第一个报表,请翻开扫瞄器并导航到http://MyServer/ReportServer?/Report+Project1/Products+Report。这会以HTML格局出现报表并在页面的顶端显现一个工具栏,以便使您能够对报表举行翻页、变动缩放比例,乃至以各类其他格局(比方,PDF)检察报表。
您还能够经由过程导航到服务器上的以下URL,来扫瞄已部署到服务器的一切报表项目标列表:http://MyServer/ReportServer。报表服务器供应使您能够检察已部署的报表范例和检察报表的最小的用户界面。
报表办理器是一个加倍友爱、功效更丰厚的工具,能够经由过程复杂地导航到当地服务器上的以下URL来会见该工具:http://MyServer/Reports。
前往页首将报表增加到Web使用程序
既然您晓得怎样计划、部署和测试报表,就让我们将这些报表集成到使用程序中吧!良多Web使用程序都包含针对每一个用户的自界说主页,一般称为“仪表板”。这个页面一般供应针对用户量身定做的择要式信息并作为跳转点来会见使用程序的其他功效。
我将利用ReportingServices附带的示例报表构建一个仪表板来演示报表集成,如所示。假如您在安装过程当中安装了示例报表,您能够翻开该报表项目(安装到ReportingServicesamplesReports)并将其部署到测试服务器。您可使用报表办理器工具经由过程扫瞄到SampleReports文件夹来测试示例报表。
仪表板Web使用程序
为用户供应从使用程序会见报表的权限的最复杂办法就是利用超等链接。如您已看到的那样,每一个报表都具有独一的、用于在扫瞄器中显现报表的路径。关于仪表板使用程序,报表应当在独自的窗口中翻开,因而我将为该超等链接指定一个方针。到今朝为止,这长短常复杂的,可是关于具有参数报表的报表(比方,EmployeeSalesSummary报表)来讲,情形又怎样呢?要真正地将报表集成到使用程序中,您一般必要为参数指定某些值,以便用户不会被常常提醒。
ReportingServices使这项义务十分复杂:报表参数的值能够指定为URL的一部分。比方,EmployeeSalesSummary报表具有ReportYear、ReportMonth和EmpID参数,因而显现编号为24的员工在11月份的发卖额的超等链接能够是:
<ahref="http://MyServer/ReportServer?/SampleReports/EmployeeSalesSummary&ReportMonth=11&EmpID=24"target="_blank">NovemberSalesSummary</a>
不具有在URL中指定的值的参数将利用在报表计划器中设置的默许值,因而方才展现的示例发卖汇总报表利用的ReportYear值是2003。ReportingServices另有一组用于把持报表显现体例的内置参数。这些参数经由过程加上前缀“rs:”来区分您本人的报表参数。
个中最有效的一个参数就是rs:Format参数,它用于指定出现报表的格局。这使您能够包含不必要显现在HTML中的报表,还可使用诸如PDF乃至是XML的格局。其他经常使用参数是rs:Command,唆使出要使用到您所指定的路径的操纵。比方,rs:Command=Render将出现一个报表,而rs:Command=ListChildren将列出文件夹中一切项。
假如您没有指天命令,ReportingServices将检察您指定的路径并盘算出要接纳的得当操纵,比方,出现报表。显现了rs:parameters的列表。
另外一组内置参数把持各类输入格局的举动并利用rc:prefix。每一个报表格局都具有其本人特定的一组参数。比方,要以没有题目行的逗号分开值(CSV)格局出现报表,您应当利用rc:NoHeader参数:
<ahref="http://MyServer/ReportServer?/SampleReports/CompanySales&rs:Command=Render&rs:Format=CSV&rc:NoHeader=true">CompanySales</a>
HTML格局具有十分多的rc:parameters,在将报表集成到Web使用程序中时为您供应良多的天真性。假如使用程序将报表参数选择传送到报表,那末您大概要经由过程将rc:Parameters设置为false来制止提醒用户,乃至能够经由过程将rc:Toolbar设置为false来封闭全部工具栏。有关经常使用HTMLrc:parameters的列表的具体信息,请拜见。
假如您的Web使用程序利用框架来显现报表(好比说,在左边窗格中显现报表列表,在右边窗格中显现报表内容),您将必要利用rc:LinkTarget参数来指定内容框架的称号。不然,当用户点击报表中的恣意嵌进链接时,扫瞄器就会利用全部窗口来从头显现报表,而不是保存导航窗格和内容窗格的框架。
您可使用我先容过的URL参数来增加“疾速启动”地区,该地区包括利用户能够翻开经常使用报表的超等链接的列表(请拜见)。每一个超等链接将其方针设置为_blank以在自力的扫瞄器窗口中翻开报表,并利用诸如rs:Format=EXCEL如许的参数来把持报表在扫瞄器中的显现体例。
前往页首将报表嵌进到Web使用程序中
假如在用户检察报表时,不再利用弹出新的扫瞄器窗口,您大概但愿实践地将报表嵌进到本人的Web页中。最复杂的办法就是在Web页上利用IFRAME,并利用我先容过的基于URL的不异手艺来设置SRC属性。假如您利用这类手艺,牢记要将rc:LinkTarget参数设置为IFRAME的称号,以免当用户单击报表的链接时在框架外弹出恣意一个框架。
假如您之前计划过ASP.NET的服务器控件,您大概会以为IFRAME手艺其实不非常完善,由于它请求Web开辟职员了解ReportingServices的URL参数语法才干构建得当的SRC字符串。构建一个封装有一切参数并使开辟职员能够复杂地设置诸如ReportPath和Zoom之类的参数的服务器控件岂非不是一个更好的设法吗?
ReportingServices十分便利地附带了名为ReportViewer的示例(安装到ReportingServicesamplesApplicationsReportViewer目次),它能够完成这个设法。该控件封装了IFRAME和URL会见参数逻辑,并供应了一个更复杂的用于将报表嵌进到使用程序中的办法。要利用该控件,请翻开并构建ReportViewer办理计划,然后经由过程扫瞄到ReportViewer办理计划的bin目次中的ReportViewer.dll,切换到您的Web使用程序并将该控件增加到工具箱中。
您可使用该控件将嵌进报表增加到仪表板使用程序中。将控件增加到Web页,设置高度和宽度属性并增加以下代码以便在页面中显现一个报表:
PrivateSubPage_Load(ByValsenderAsSystem.Object,ByVal_eAsSystem.EventArgs)HandlesMyBase.LoadIfNotIsPostBackThenReportViewer1.ServerUrl="http://MyServer/ReportServer"ReportViewer1.ReportPath="/SampleReports/SalesOrder"&_"Detail&SalesOrderNumber=so8153"ReportViewer1.Toolbar=ReportViewer.multiState.FalseReportViewer1.Zoom="75"EndIfEndSub
前往页首包管报表的平安
ReportingServices平安性利用熟习的基于脚色的模子。用户和组能够分派给诸如SystemAdministrator或Browser之类的脚色,特定脚色的一切成员都将同意实行为该脚色界说的操纵。
报表办理器用于实行与平安性相干的义务,比方,分派用户脚色或修正项(比方,报表)的权限等。默许情形下,AdministratorsWindows组同时是一切文件夹的SystemAdministrator和ContentManager的成员。为了扩大报表会见到其他用户,用户帐户或组必需增加到诸如Browser的脚色中。这一般是在文件夹级设置的,同时也能够针对独自的报表举行重写。
除回护对报表的会见外,办理员还必需决意怎样将报表毗连到源数据库。能够设置数据源利用集成的平安性,以即可以利用以后的用户帐户举行数据库毗连。别的,还能够界说Windows?或SQLServer用户名和暗码,并将其平安地存储在报表服务器数据库中。这类办法请求报表运转在无用户交互(比方,定阅所触及的交互)的情形下。
前往页首利用ReportingServicesWeb服务
到今朝为止,我一向利用的URL会见办法供应了一种疾速便利的体例来检察报表并指定参数,可是它不克不及供应对一切可用的报表办理功效的会见。ReportingServices还附带了一个具有丰厚功效的API,为您供应经由过程Web服务对初级功效的会见。比方,该Web服务包含用于办理报表的数据源信息的办法大概列举某个文件夹中一切项的办法。
我将利用Web服务将报表的静态列表增加到仪表板使用程序中。为此,您将必要利用AddWebReference将一个Web服务援用增加到使用程序中。指定到Web服务的路径,以下所示:
http://MyServer/ReportServer/ReportService.asmx
在增加援用后,您能够创立ReportingService代办署理类的一个实例,并挪用该服务上的一个办法,就像我在此处完成的一样:
PrivateSubLoadSampleReports()DimrsAsNewReportingServicers.Credentials=System.Net.CredentialCache.DefaultCredentialsDimitemAsCatalogItemForEachitemInrs.ListChildren("/SampleReports",False)Ifitem.Type=ItemTypeEnum.ReportThenDropDownList1.Items.Add(NewListItem(item.Name,item.Path))EndIfNextEndSub
假如您正在一个Intranet情况中部署使用程序,您要经由过程将增加到使用程序的web.config文件中来启用摹拟。您还要将客户端登录凭证传送到该服务,如后面的示例所示。
ListChildren办法前往CatalogItem工具的数组,该数组暗示用户有权检察的项,包含报表、文件夹和数据源。Path属性供应了到项的独一路径,比方,/SampleReports/SalesOrderDetail,Type属性使您能够区分报表和其他范例的项。
既然我已将报表称号加载到了下拉列表中,我必需决意怎样在仪表板使用程序内显现报表。我决意扩大我初期编写的ReportViewer代码而且只需用户选择某个报表并点击“Go”按钮就变动ReportPath属性。您还可使用IFRAME并将SRC设置为得当的URL(并为报表的称号加上前缀“http://MyServer/ReportServer?”)。
除报表办理功效外,Web服务供应的其他次要功效就是报表出现。年夜多半使用程序(包含报表办理器使用程序)都利用Web服务功效来列出报表或变动设置,并利用我先容过的URL办法来显现报表。可是,假如您想要完整把持报表内容在使用程序中处置的体例,可使用ReportingService类的Render办法。该办法前往一个能够在今后保留到输入文件的字节数组;取决于哀求的格局,输入文件能够是图形文件或Excel电子表格。假如您要以HTML格局出现报表,大概会加倍庞大一些,由于您将必要利用RenderStream办法来分离出现图象或其他资本。
只管本文的会商重点在于Web使用程序,您也能够利用不异的手艺将报表天生功效增加到基于Windows的使用程序中。最复杂的办法还是利用URL会见,大概从使用程序启动用户的扫瞄器,大概包含MicrosoftWebBrowserActiveX?控件并利用Navigate办法来加载得当的URL。当您想要更好地把持某些操纵(比方,在图片框中显现了局或将文件间接保留到磁盘的操纵)时,Web服务的Render办法是一个很好的备选办法。
信息事情者一般必需处置两品种型的报表:当他们必要搜集信息时他们想要取得的范例和每周都呈现在他们桌面上或他们电子邮件中的范例。至此,我已重点论述了用户猎取他们本人的报表的历程,但ReportingServices还包含一种十分壮大的称为定阅的功效,它使您能够将报表“推”给客户。
前往页首定阅报表
ReportingServices定阅功效让用户依照企图吸收报表。报表一般会经由过程电子邮件发送到用户,但ReportingServices同时还让您将报表天生到一个文件共享乃至能够编写本人的提交扩大。这使您能够轻松地完成份发义务,比方,向每一个发卖代表以电子邮件体例发送每周发卖统计报表,大概设置每个月财务报表在每月的最初一天运转,并将其作为一个PDF写出到公司文件共享。
在设置定阅前,您必要思索报表将怎样毗连到数据库以检索其数据。因而,定阅的报表将不会由用户间接实行,您没法为数据源利用集成的平安性,但在报表运转时必需指定要利用的用户名和暗码。假如您试图为利用集成平安性的报表设置定阅,ReportingServices将会前往一个毛病。
要变动示例报表的数据源,请翻开“ReportManager|SampleReports”,然后单击AdventureWorks数据源。该数据源由一切示例报表共享,因而对它所做的任何变动将会影响一切报表。选中“Credentialsstoredsecurelyinthereportserver”选项,指定一个具有会见AdventureWorks数据库权限的帐户的无效域用户名和暗码,选中“UseasWindowscredentialswhenconnectingtothedatasourceoption”,然后单击“Apply”按钮。请注重,这类变动意味着指定的帐户将一直用于毗连该数据库,不论实践上是哪一个用户运转该报表。
因而,您已筹办好深切研讨并检察供应对定阅会见的Web服务API。利用Web服务的这一部分比利用List或Render办法要多一些应战,次要缘故原由在于可用选项的数目。我将要利用的办法是CreateSubscription,它也属于ReportingService类。有关该办法的参数的具体申明,请参阅ReportingService类,但最基础的是您必要指定要定阅的报表、天生企图(比方,每周一凌晨或每个月的最初一个周五)、电子邮件选项(包含电子邮件地点)和一切报表参数值。
我已将名为EmailSubscriber的有用工具类包含在本文的示例代码中,该示例代码择要了某些庞大的内容。仪表板使用程序利用该类同意用户指定他们的电子邮件地点并使EmployeeSalesSummary报表经由过程电子邮件每周一发送给他们。在产物使用程序中,您能够调剂每一个用户的报表,比方,当您创立定阅时,能够依据员工的Windows用户帐户检索他们的员工ID,然后得当地设置报表参数。
假如您不但愿比及下周一才测试您的定阅,它有助于您懂得有关ReportingServices怎样处置定阅企图的更多信息。当您创立一个定阅时,ReportingServices会创立一个依据请求的企图实行的SQLServer代办署理功课。您能够经由过程翻开EnterpriseManager,睁开Management、SQLServerAgent和Jobs文件夹来检察这个功课。该定阅功课将具有“ReportServer”种别,并以由ReportingServices用来跟踪该功课的GUID定名。右键单击该功课并选择StartJob,假如您已准确地设置了您报表的各个方面,您的报表将会发送电子邮件给您。
前往页首接上去该怎样做?
您能够用来向使用程序中增加主要报表天生功效的两个其他ReportingServices功效包含DataDrivenSubscriptions和Snapshots,前者使您能够设置用户的邮件列表并以电子邮件情势将特定参数化的报表发送给他们,后者是在企图点的报表视图,同时还能够供应报表的汗青视图。ReportingServices是利用模块化的系统布局构建的,假如您必要更壮大的功效,它可使您利用本人喜欢的、以.NET为方针的言语来增加功效壮大的新扩大。
JohnC.Hancock是Microsoft的初级参谋,努力于商务智能和.NET开辟。他如今假寓在多伦多,要接洽他,请会见http://www.johnchancock.net。
摘自2004年8月刊的MSDNMagazine。
您能够在当地报刊亭购置大概最好定阅。
转到原英文页面
CSV逻辑上由逗号分割数据的存储引擎
作者:
活着的死人
时间:
2015-1-16 23:08
标题:
MSSQL编程:[保藏]使用SQL Server Reporting Servi...
是要和操作系统进行Socket通讯的场景。否则建议慎重!
作者:
爱飞
时间:
2015-1-20 07:40
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
作者:
第二个灵魂
时间:
2015-1-28 23:53
发几份SQL课件,以飨阅者
作者:
谁可相欹
时间:
2015-2-5 23:01
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
作者:
简单生活
时间:
2015-2-14 02:14
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
作者:
只想知道
时间:
2015-3-4 04:03
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
作者:
飘灵儿
时间:
2015-3-11 16:16
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
作者:
山那边是海
时间:
2015-3-19 01:59
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
作者:
莫相离
时间:
2015-3-27 03:24
无法深入到数据库系统层面去了解和探究
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2