{"id":67,"date":"2011-02-27T15:15:00","date_gmt":"2011-02-27T15:15:00","guid":{"rendered":"\/lisa\/post\/2011\/02\/27\/What-a-difference-a-year-and-a-job-change-make.aspx"},"modified":"2021-08-30T13:14:55","modified_gmt":"2021-08-30T20:14:55","slug":"what-a-difference-a-year-and-a-job-change-make","status":"publish","type":"post","link":"https:\/\/spacefold.com\/lisa\/2011\/02\/27\/what-a-difference-a-year-and-a-job-change-make\/","title":{"rendered":"What a difference a year, and a job change, make"},"content":{"rendered":"<p style=\"text-align: left;\">I honestly cannot believe that I <a title=\"blog post on starting xmlRSDocs 2008\" href=\"\/lisa\/2009\/11\/08\/Beginning-to-documenting-RDLs-RDLCs-in-RS-2008\/\">started to work on xmlRSDocs in November 2009<\/a> and, only now, have gotten the whole thing squared away.<\/p>\n<p>But there it is.\u00a0 I did just enough work for my real-life need-at-the-time, and put it aside.<\/p>\n<p>Now real life\u00a0requirements have\u00a0prodded me back into harness on this project, so I&#8217;ve spent all my free time for the past month doing a pretty thorough job on xmlRSDocs 2008.\u00a0 The <a title=\"xmlrsDocs Article-docs page\" href=\"http:\/\/spacefold.com\/articles\/xmlrsdocs\/\">docs<\/a>\u00a0are now up-to-date, and the revamped <a title=\"spacefold downloads page\" href=\"http:\/\/spacefold.com\/downloads-index\/\">download<\/a>\u00a0for xmlRSDocs contains full source, samples, and deployment bits.<\/p>\n<h2>A changed focus<\/h2>\n<p>In this version, there&#8217;s no longer an RDLDocumenter Designer tool, because Custom Properties can now be dealt with through Report Builder and Report Designer\u00a0standard UI. If you don&#8217;t know how to, or don&#8217;t know why you would want to, use Custom Properties to add documentation to a report, you can read the <a title=\"xmlrsDocs Article-docs page\" href=\"http:\/\/spacefold.com\/articles\/xmlrsdocs\/\">docs<\/a>\u00a0for some of my thoughts about the type of custom documentation I think RDLs ought to have.<\/p>\n<p>But don&#8217;t worry about that immediately.\u00a0 It turns out that what people (including me) really need and want is simply good, customizable access to the native contents of an RDL.\u00a0 We simply don&#8217;t have this, out-of-the-box, and we really need it.<\/p>\n<h2>What&#8217;s in it for [you and] me<\/h2>\n<p>Consider this scenario: you want to make a change in a stored procedure or a view, and you want to be certain of what impact this change will have.\u00a0 What do you do?<\/p>\n<p>In SQL Server Management Studio, you can right-click on an object and check its dependencies.\u00a0 Right?<\/p>\n<p>Well, no.\u00a0\u00a0You&#8217;re going to get information\u00a0about intra-database dependencies, sure. But SQL Server Management Studio isn&#8217;t going to look any further than it can see&#8230;\u00a0 and it can&#8217;t see your SSRS reports.<\/p>\n<p>When I joined the <a class=\"srcsLogoRef\" href=\"http:\/\/www.srcs.k12.ca.us\/\">Santa Rosa City Schools District<\/a>, I entered an environment that had literally hundreds of SSRS reports deployed in production servers, most of which had multiple datasets.\u00a0 Whether the datasets were driven by embedded SQL, stored procedures, or semantic models, none of these datasets were &#8220;visible&#8221; using standard means.<\/p>\n<p>Recently, I was trying to figure out the source of an occasional deadlock in a critical database, the one that serves as the source for all these datasets.\u00a0I realized that I absolutely, positively had to include reporting dependencies in the &#8220;universe&#8221; of code I was looking at, to understand performance issues, resource contention, etc.<\/p>\n<p class=\"NB\">Before you say &#8220;why are reports pointed at a transactional database?&#8221; &#8230; don&#8217;t get me started.\u00a0 Just take it as read: 350+ of them <strong>are<\/strong>, whether we like it or not.<\/p>\n<p>I needed clear visibility into the statements and procedures driving those datasets.\u00a0 I also decided I wanted an easy way to list the entities and objects within embedded SQL statements &#8220;buried&#8221; in RDLs,\u00a0to augment\u00a0the dependency lists I could get by rightclicking in SQL Management Studio.<\/p>\n<p>It was already possible to do what I wanted to do using xmlRSDocs, without enhancements.\u00a0 But\u00a0it took a tedious and lengthy pull of all the RDLs from the server using <a title=\"RS Scripter download page\" href=\"http:\/\/www.sqldbatips.com\/showarticle.asp?ID=62\" target=\"_blank\" rel=\"noopener\">RS Scripter<\/a>, and then rearranging the scores of folders of RDLs so that they&#8217;d all be available for parsing and loading.\u00a0 It became abundantly, and somewhat\u00a0painfully, clear to me that\u00a0there was lots more that xmlRSDocs could, and should, do to help.<\/p>\n<p>So I abandoned the idea that I was ever going to update the Custom Report Item for design-time use &#8212; which was cool to do once, but wasn&#8217;t at all practical and isn&#8217;t even necessary any more. I\u00a0rolled up my sleeves to concentrate on creating an SSIS package that would do everything I actually needed.<\/p>\n<p><img decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"\/lisa\/wp-non\/migrated\/2011\/2\/xmlRSDocs2008RSdtsx.png\" alt=\"\" \/><\/p>\n<p>The new package uses SOAP access to grab each RDL from a ReportServer catalog.\u00a0 It processes each RDL according to the proper namespace (because these reports have been created over a very long time span, some are 2005, some are 2008, and some soon will be 2010).\u00a0 As the original package did, it allows you to save the doc.XML results to disk and also to load the documentation to an &#8220;RDL Doc&#8221; database of your choice.<\/p>\n<p>As before, it offers you the change to publish or &#8220;export&#8221; your documentation by invoking an SSRS report &#8212; using URL Access for this action &#8212; at the end of its run.\u00a0 In this delivery, I&#8217;ve included a bare-bones-but-usable RDL and some fancy parsing to support it, so that the &#8220;export&#8221; provides a list of all the entities and procedures on which the RDLs you&#8217;ve documented depend.\u00a0 Of course, you can still use any RDL you choose, and do much more exciting things if you need them, you can still create any schema you like for your xmlRSDocs database, etc, but this is a pretty good base.<\/p>\n<p>TestHarness got revamped with new features, too. This winForm application is now renamed xmlRSDocsHarness, because it turns out to be pretty useful on its own, not just as a teaching tool to help you understand the xmlRSDocs idea.<\/p>\n<p><img decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"\/lisa\/wp-non\/migrated\/2011\/2\/xmlRSDocsHarness.png\" alt=\"\" \/><\/p>\n<p>Enjoy.<\/p>\n<p>Now to\u00a0get\u00a0cracking on that dependency sleuthing&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I honestly cannot believe that I started to work on xmlRSDocs in November 2009 and, only now, have gotten the whole thing squared away. But there it is.\u00a0 I did just enough work for my real-life need-at-the-time, and put it aside. Now real life\u00a0requirements have\u00a0prodded me back into harness on this project, so I&#8217;ve spent<a class=\"more-link\" href=\"https:\/\/spacefold.com\/lisa\/2011\/02\/27\/what-a-difference-a-year-and-a-job-change-make\/\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6,7,10,11],"tags":[],"class_list":["post-67","post","type-post","status-publish","format-standard","hentry","category-reporting","category-sql-server","category-ssis","category-xml-xslt","category-xmlrsdocs"],"_links":{"self":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":2,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":388,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/posts\/67\/revisions\/388"}],"wp:attachment":[{"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spacefold.com\/lisa\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}