<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">using Stuart.Cogitation;</title><subtitle type="html">musings on work at microsoft</subtitle><id>http://blogs.msdn.com/supde/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/supde/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-08-10T17:11:00Z</updated><entry><title>SQL Server 2005 Report Builder webcast</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/11/23/268627.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/11/23/268627.aspx</id><published>2004-11-23T18:41:00Z</published><updated>2004-11-23T18:41:00Z</updated><content type="html">&lt;div&gt;I recently became aware of the following webcast about Report Builder, the framework for ad-hoc reporting in SQL Server 2005 (Yukon). &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032259394&amp;amp;EventCategory=5&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;&lt;strong&gt;TechNet Webcast: End-user, Ad Hoc Reporting in SQL Server 2005 Reporting Services&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;To my knowledge, Report Builder is based on the ActiveViews technology that MS purchased in Spring '04. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;I haven't had an opportunity to view this webcast yet, but wanted to link it so that others were aware (and so that I can easily find the link later when I'm ready to view it myself ... ;) &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;cheers,&lt;/div&gt; &lt;div&gt;~stuart &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=268627" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author><category term="SQL Reporting Services" scheme="http://blogs.msdn.com/supde/archive/tags/SQL+Reporting+Services/default.aspx" /></entry><entry><title>TIP: Displaying images created using RenderStream</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/11/08/254034.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/11/08/254034.aspx</id><published>2004-11-08T18:50:00Z</published><updated>2004-11-08T18:50:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I'm working on an application that uses the Render() and RenderStream() methods of the SRS ReportingService interface. This app is an ASP.NET WebForm that calls Render() for a given report (and RenderStream if the report contains stream resources – images, charts, etc), gets the results back as HTML, and outputs the HTML inline in the WebForm. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;As I got started on it, I had some problems getting the rendered images to appear in the report. It turns out that these resources are output without any file extension, so IE wasn't sure how to handle them. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The fix: &lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;In Internet Information Services Manager, navigate to the directory where external resources are rendered (the ASP.NET Machine account &amp;lt;machinename&amp;gt;\ASPNET will need to have write permissions to this directory in order to successfully create resources)&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Open the Properties page for this directory, and select the HTTP Headers tab&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Click 'File Types'&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Click 'New Type' &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;In 'Associated Extension', enter '*' (no quotes)&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;In 'Content Type (MIME)', enter 'image/png' (no quotes)&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Note, the above will only work for charts within the report. I haven't yet figured out how to do this for multiple file types (say, PNG, CSS, etc). If anyone knows how, I'd love to hear! &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;cheers,&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;~stuart &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=254034" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author><category term="SQL Reporting Services" scheme="http://blogs.msdn.com/supde/archive/tags/SQL+Reporting+Services/default.aspx" /></entry><entry><title>TIP: Moving Reporting Servers between domains</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/11/08/254010.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/11/08/254010.aspx</id><published>2004-11-08T18:26:00Z</published><updated>2004-11-08T18:26:00Z</updated><content type="html">&lt;div&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I recently had to move some development SRS machines from one domain to another at work. This consisted of two cluster web boxes, and one SQL Server, using SQL auth. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;After doing so, I received the following error: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Reporting Services Error &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;The report server cannot open a connection to the report server database. A connection to the database is required for all requests and processing. (rsReportServerDatabaseUnavailable) Get Online Help &lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;Login failed for user '&amp;lt;domainname&amp;gt;\&amp;lt;servername&amp;gt;$'. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The fix for this (thanks to the SRS team!) is as follows:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Create a new SQL login for the new machine account. &lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Add the new SQL account to the RSExec role in the following DBs: &lt;/li&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;ReportServer&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;ReportServerTempDB&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;msdb&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1; tab-stops: list 1.0in"&gt;master&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Of course, if you set up your SQL box to use non-standard DB names, replace ReportServer and ReportServerTempDB with the names you have used. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I hope that someone out there finds this useful. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;cheers,&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;~stuart &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=254010" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author><category term="SQL Reporting Services" scheme="http://blogs.msdn.com/supde/archive/tags/SQL+Reporting+Services/default.aspx" /></entry><entry><title>Emerging from the darkness</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/09/29/235866.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/09/29/235866.aspx</id><published>2004-09-29T20:43:00Z</published><updated>2004-09-29T20:43:00Z</updated><content type="html">&lt;div&gt;I haven't posted for a month or so; I was on vacation for a couple of weeks, then spent most of last week in class. As a result, I've been pretty buried in catch-up work. I hope to get back into the swing of things more actively in the near future. I'm looking forward to hearing what announcements come out of the SQL PASS conference, which is going on this week. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;More soon. &lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=235866" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author></entry><entry><title>A few interesting local-search tools</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/08/20/217947.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/08/20/217947.aspx</id><published>2004-08-20T20:39:00Z</published><updated>2004-08-20T20:39:00Z</updated><content type="html">&lt;div&gt;I'm sure most blog-readers are now familiar with &lt;a href="http://www.lookoutsoft.com/Lookout/"&gt;Lookout&lt;/a&gt;, the local search tool that integrates into Outlook (recently acquired by Microsoft). Lookout builds a local index of your Outlook mail store, and provides a search interface into that index. I've been using it for a few months, and find it exceptionally useful; it's fast (no more waiting for Outlook's native search), and accurate. My only gripes so far: 1) The lack of a hotkey to give the search box focus. I don't want to take my hands off the keyboard if I can avoid it. 2) When I empty my Deleted Items folder, I'll still get results from there until the next complete index occurs. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;While scanning Battelle's search blog (see immediately prior post), I noticed this tool: &lt;a href="http://www.recalltoolbar.com/"&gt;Recall Toolbar&lt;/a&gt;, which operates on a similar concept -- building&amp;nbsp;a local index of web pages you have viewed and providing a way to search it. I haven't installed this yet, so can't comment on it personally, but it sure seems like a great idea. If anybody out there (yes, you three ...) tries or has tried it, please let me know what you think.&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=217947" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author></entry><entry><title>searching ... </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/08/20/217918.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/08/20/217918.aspx</id><published>2004-08-20T20:04:00Z</published><updated>2004-08-20T20:04:00Z</updated><content type="html">&lt;div&gt;As I mentioned in my initial entry, quite a bit of my MS employment history was as a Development Manager; this included MSDN Online, Technet Online, brief stint as owner of the Microsoft.com Download Center, and search.microsoft.com. My experience with search was a difficult time for many reasons, but it was a great experience; it left me with a big interest in the problem space that hasn't gone away despite me moving on to new projects. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;So, I was pleased when I recently discovered &lt;a href="http://battellemedia.com/"&gt;John Battelle's search blog&lt;/a&gt;. I haven't had a chance to dig in too deeply as of yet, but there seems to be good material here. Other search-heads might find it of interest as well. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;cheers,&lt;/div&gt; &lt;div&gt;~stuart&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=217918" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author></entry><entry><title>Conditional display of Subreport</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/08/18/216635.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/08/18/216635.aspx</id><published>2004-08-18T17:50:00Z</published><updated>2004-08-18T17:50:00Z</updated><content type="html">&lt;div&gt;My current reporting project includes a requirement for daily / weekly / monthly view of distribution and recurrence of user visits to Microsoft.com. The displayed data will differ based on the date period used, so I decided to use multiple subreports within the main report, showing a different one based on the date period. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;My initial idea here was to use an expression for the report name, something along the lines of:&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;="Recurrence" &amp;amp; Parameters!Period.Value&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font color="#000000"&gt;Unfortunately, Subreport/ReportName only supports literal strings, so I can't use an expression here. &lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;The other option I had considered was including all the subreports into the parent, and toggling visibility based on the date period value, as above. My concern with this approach was that all the subreports would execute even if they would never be displayed. One of the fine devs on the SQL Reporting Services team was kind enough to inform me that "&lt;font color="#000080" size="2"&gt;If subreports are hidden and cannot be made visible via a toggle item, they are not executed.&lt;/font&gt;" This is great news, and will allow me to do exactly what I want -- render the parent report (which will be the same across period) and *only* the appropriate subreport. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;One trick to setting the appropriate expression for this, if doing so in the Report Deisgner UI: the value entered via the Visibility tab on the Subreport Properties dialog ends up as content of the Subreport/Visibility/Hidden element. If you want the element to display, you need to make sure your expression evaluates to false. This tripped me up when doing it through the&amp;nbsp;UI the first few times; once I looked at the underlying RDL I quickly figured out the problem. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;In the UI, the expression for the RecurrenceDaily subreport looks like this: &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;=Parameters!Period.Value&amp;nbsp;&amp;lt;&amp;gt; "Day"&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Which translates to the following in RDL (non-essential elements elided for brevity): &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Subreport Name="subrptDaily"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;ReportName&amp;gt;RecurrenceDaily&amp;lt;/ReportName&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;Visibility&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Hidden&amp;gt;=Parameters!Period.Value &amp;amp;lt;&amp;amp;gt; "Day"&amp;lt;/Hidden&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/Visibility&amp;gt;&lt;br /&gt;&amp;lt;/Subreport&amp;gt;&lt;/font&gt;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;Again, I hope this proves useful to someone out there. &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;cheers,&lt;/div&gt; &lt;div&gt;~stuart &lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=216635" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author><category term="SQL Reporting Services" scheme="http://blogs.msdn.com/supde/archive/tags/SQL+Reporting+Services/default.aspx" /></entry><entry><title>Finding the right item with FindItems</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/08/11/213037.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/08/11/213037.aspx</id><published>2004-08-11T22:01:00Z</published><updated>2004-08-11T22:01:00Z</updated><content type="html">&lt;p&gt;I have recently been developing against the SRS web service API, and have noticed a few peculiar things about its design. One in particular is the difference in behavior between &lt;a href="http://msdn.microsoft.com/library/en-us/rsprog/htm/rsp_ref_soapapi_service_lz_2yt2.asp"&gt;ListChildren&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/en-us/rsprog/htm/rsp_ref_soapapi_service_ak_0vp2.asp"&gt;FindItems&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Both of these methods take a parent path parameter (among others; see the links above for complete signatures) and return a CatalogItem[] collection. The difference is that ListChildren allows you to specify whether or not you want to search recursively. FindItems will only match items in (or presumably below, but I haven’t confirmed this) the path you pass to it. If you want to find children in the entire report server database, you pass "/" as the path, and it will return any item that matches your search criteria.&lt;/p&gt; &lt;p&gt;And there’s the rub. Consider the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You’re looking for a report named "foo" at the root &lt;li&gt;There is no such item, but there is a "foo" report under subfolder "bar" (and maybe other "foo" items throughout the catalog)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You’ll get an item (or more) returned, but because you’re searching the entire catalog, it won’t be the item you want. Drat!&lt;/p&gt; &lt;p&gt;Here’s some sample code that ensures you get the item you want, culled from a command-line utility I created to ease report deployment for our release management and operations teams:&lt;/p&gt; &lt;div class="clsCode"&gt;using RptSvc = ReportingServices.ReportServer;&lt;br /&gt;// ReportingServices.ReportServer class via VS.NET-generated Web Reference code&lt;br /&gt;&lt;br /&gt;namespace RptSvcDeployer&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;class Deployer&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static RptSvc.CatalogItem GetItem( string ItemPath, RptSvc.ItemTypeEnum Type )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string Parent = ItemPath.Substring( 0, ItemPath.LastIndexOf("/") );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string Item&amp;nbsp;&amp;nbsp; = ItemPath.Remove( 0, Parent.Length + 1 );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( 0 == Parent.Length ) Parent = "/";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// create search condition for FindItems call&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RptSvc.SearchCondition srchCond = new RptSvc.SearchCondition();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srchCond.Condition&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= RptSvc.ConditionEnum.Equals;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srchCond.ConditionSpecified&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srchCond.Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "Name";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;srchCond.Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= Item;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RptSvc.SearchCondition[] conditions = { srchCond };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RptSvc.CatalogItem[] itemsFound = rs.FindItems( Parent, RptSvc.BooleanOperatorEnum.And, conditions );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RptSvc.CatalogItem foundItem&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= null; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( null != itemsFound )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach ( RptSvc.CatalogItem ItemFound in itemsFound )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( Type == ItemFound.Type &amp;amp;&amp;amp; ItemPath.ToLower() == ItemFound.Path.ToLower() )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foundItem = ItemFound;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return foundItem;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The GetItem method takes a string path to the desired item (folder, report, data source, etc) in the report server database, as well as the item type from the ItemTypeEnum enumerator, makes the call to the web service, and then iterates through the CatalogItem[] collection returned, comparing the passed type and path of the desired item to the .Type and .Path properties of the current CatalogItem. It returns either an exact match or null. &amp;nbsp;&lt;/p&gt; &lt;p&gt;Including the item type in the call ensures that you don't end up with a datasource or folder named "foo" off the root when you're looking for a report. &lt;/p&gt; &lt;p&gt;Hope someone finds this useful! &lt;/p&gt; &lt;p&gt; &lt;hr id="null" /&gt; &lt;/p&gt; &lt;p&gt;This posting is provided "AS IS" with no warranties, and confers no rights. &lt;br /&gt;Use of included script samples are subject to the terms specified at &lt;a href="http://www.microsoft.com/info/cpyright.htm"&gt;http://www.microsoft.com/info/cpyright.htm&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=213037" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author><category term="SQL Reporting Services" scheme="http://blogs.msdn.com/supde/archive/tags/SQL+Reporting+Services/default.aspx" /></entry><entry><title>first post!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/supde/archive/2004/08/10/212262.aspx" /><id>http://blogs.msdn.com/supde/archive/2004/08/10/212262.aspx</id><published>2004-08-11T00:11:00Z</published><updated>2004-08-11T00:11:00Z</updated><content type="html">&lt;P&gt;Oh, wait a minute. This isn't slashdot. Regardless, this is my first post on my shiny new blog. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Who:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I'm Stuart Updegrave; I work as a developer in the Business Intelligence team for Microsoft.com. I've been working at Microsoft for over 7 years now, as a Web Developer, Dev Manager and most recently&amp;nbsp;SDE. I consider myself pretty competent in most web-dev skills targeting IIS and IE -- ASP/ASP.NET, XML, XSLT, JScript, DOM, [insert TLA here]. Before coming to MS, I was a big VRML geek for a while, used to be pretty active on comp.lang.javascript. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What: &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Currently I spend a fair bit of time working with &lt;A href="http://www.microsoft.com/sql/reporting/"&gt;SQL Server 2000 Reporting Services&lt;/A&gt;. I've been using it since beta1, mostly developing reports using the Report Designer tools integrated into Visual Studio.NET 2003. Recently I've been working more with RDL generation, accessing the ReportingService() web service interface, and such. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I'll be using this space to call out some of the things I discover during the course of my SRS adventures, in hopes that someone out there might find them useful. &lt;/P&gt;
&lt;P&gt;Coming soon, a few words on FindItems. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=212262" width="1" height="1"&gt;</content><author><name>supde</name><uri>http://blogs.msdn.com/members/supde.aspx</uri></author></entry></feed>