<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>William Vaughn&apos;s Musings</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/" />
    <link rel="self" type="application/atom+xml" href="http://betav.com/blog/billva/atom.xml" />
    <id>tag:betav.com,2008-10-28:/blog/billva//3</id>
    <updated>2011-12-21T23:16:10Z</updated>
    <subtitle>Sharing opinions, tips, ramblings and industry trends.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.37</generator>

<entry>
    <title>Making MovableType Changes in IE9</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/12/making-movabletype-changes-in.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2520</id>

    <published>2011-12-21T23:16:05Z</published>
    <updated>2011-12-21T23:16:10Z</updated>

    <summary>Tip: When working with the MovableType (Movable Type) dashboard, be sure to enable the “compatibility” mode in IE9. Otherwise several dialogs won’t work. It’s just another joy of working with IE9. SMTPAuth (Settings panel does not appear)...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>Tip: When working with the MovableType (Movable Type) dashboard, be sure to enable the “compatibility” mode in IE9. Otherwise several dialogs won’t work. It’s just another joy of working with IE9.</p>  <p>SMTPAuth (Settings panel does not appear)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Handling ReportViewer Parameters</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/07/handling-reportviewer-paramete.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2513</id>

    <published>2011-07-16T00:32:38Z</published>
    <updated>2011-07-16T00:35:45Z</updated>

    <summary>A developer asked a question on MSDN that was similar to a question a few days earlier so I decided to help folks get over the problems of setting report parameters in ReportViewer projects....</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="BI Tools" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Data Architectures" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ReportViewer" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Visual Basic .NET" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Visual Studio" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>A developer asked a question on MSDN that was similar to a question a few days earlier so I decided to help folks get over the problems of setting report parameters in ReportViewer projects.</p> ]]>
        <![CDATA[<p> <p>Consider that in a Reporting Services report processor-generated report, all of the parameters (both query and report) are handled behind the scenes. In ReportViewer applications these tasks are all in your court.</p> <p>To illustrate the process of setting report parameters, I wrote an example application that deals with a number of issues. I tried to keep it simple so I could explain the basics: <ol> <li>Setup your data source(s). This might entail almost anything, but you end up with a binable iBindingList object like a DataTable or a TableAdapter (which contains a DataTable). This usually means you've built a parameterized Fill method like the one shown in my example. In my example, the <em>FillByProductLine</em> call passes in a query parameter to the TableAdapter <em>Fill </em>method to populate the DataTable.  <li>Setup your <em>report</em> parameters using the Report Data Window in Visual Studio. While RDLC imported from BIDS or Report Builder might have <em>query</em> parameters, we're going to assume that this report does not. If it does, you'll have to include these as you build your <em>LocalReport.Parameters</em> collection. So, in the example I've provided, I have two report parameters defined: <em>ColorWanted</em> and <em>MaxWeight</em>. This means you'll need to know the number of your report parameters and their names (case-sensitive) to proceed.  <li>Build an array of type <em>ReportParameter </em>that's large enough for ALL parameters--not just the ones you want to set. It's essential that the size of this array matchs the number of report AND data parameters defined IN THE RDLC. (Again, typically if you're not importing from RDL this will be easy to determine—just check the Report Data Parameters list).  <li>For each <em>ReportParameter</em> object in the array, use the <em>New</em> constructor to name the parameter and provide the value.  <li>Once all <em>ReportParameter</em> objects are initialized, use the <em>SetParameters</em> method to push the array into the <em>LocalReport</em> <em>Parameters</em> property.</li></ol> <p>So, what can go wrong? Lots. <ul> <li>The parameter name you specify does not match the RDLC parameter name  <li>You don't specify all of the parameters  <li>The value you provide does not match the type of value expected.</li></ul> <p>So... you need to add exception handlers to your code to deal with the stuff that happens. Note that the exception handlers might not return anything meaningful in the top exception--you might have to drill down into the <em>innnerexception</em> (perhaps several times) to see the "real" exception. <p>Here’s the code that deals with all of these issues including some crude exception handlers:<pre>  <font size="1" face="Consolas">Private Sub btnShowReport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowReport.Click<br />
        Me.ProductsTableAdapter.FillByProductLine(Me.AdventureWorks2008DataSet.Products, tbProductLineWanted.Text)<br />
        ' Populate ReportViewer1 Report Parameters<br />
        Try<br />
            lblStatus.Text = String.Format("Searching for color {0} with weight no more than {1}",<br />
                                           lbColorsWanted.SelectedValue.ToString, tbMaxWeight.Text)<br />
            Dim paParameters(1) As ReportParameter  ' (To reference two parameters)<br />
            paParameters(0) = New ReportParameter("ColorWanted", lbColorsWanted.SelectedValue.ToString)<br />
            paParameters(1) = New ReportParameter("MaxWeight", tbMaxWeight.Text)<br />
            Me.ReportViewer1.LocalReport.SetParameters(paParameters)<br />
        Catch ex As Exception<br />
            '   MsgBox(ex.Message)<br />
            MsgBox(ex.InnerException.Message)<br />
        End Try</p>

<p>        Me.ReportViewer1.RefreshReport()<br />
    End Sub</p>

<p>    Private Sub tbProductLineWanted_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbProductLineWanted.TextChanged<br />
        Me.AvailableColorsTableAdapter.FillByProductLineWanted(Me.AdventureWorks2008DataSet.AvailableColors, tbProductLineWanted.Text)<br />
    End Sub</p>

<p> <br />
    Private Sub ReportViewer1_ReportError(ByVal sender As Object, ByVal e As Microsoft.Reporting.WinForms.ReportErrorEventArgs) Handles ReportViewer1.ReportError<br />
        MsgBox(e.Exception.Message &amp; vbCrLf &amp; e.Exception.InnerException.Message &amp; vbCrLf &amp; e.Exception.InnerException.InnerException.Message)</p>

<p>        e.Handled = True<br />
    End Sub</font></pre><pre>&nbsp;</pre><pre>hth</pre></p>]]>
    </content>
</entry>

<entry>
    <title><![CDATA[Denali&rsquo;s Unfortunate Dependence on SharePoint]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/07/denalis-unfortunate-dependence.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2512</id>

    <published>2011-07-15T17:42:49Z</published>
    <updated>2011-07-15T17:43:26Z</updated>

    <summary>For those of you that don’t use Facebook to follow the Microsoft teams, I commented on a Facebook entry from the Denali team that pointed me to their new Denali blurb....</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>For those of you that don’t use Facebook to follow the Microsoft teams, I commented on a <a href="http://www.microsoft.com/sqlserver/en/us/future-editions/business-intelligence/denali-reporting-services.aspx" target="_blank">Facebook entry from the Denali team</a> that pointed me to their new Denali blurb.</p>  ]]>
        <![CDATA[<p>  <p>My initial comment:</p>  <blockquote>   <p><em>So, it's hard to tell what's new here besides Crescent. Does this mean that Report Builder 4 is a null set? Did they incorporate cascading style sheets into BIDS? What about shared code modules? What about ReportViewer compatibility? There ...are a dozen questions but the website has few answers. Consider that my last webinar (as small cross-section of IT shops) had no-one using 2008 R2. Half were 2005 the rest 2008. There really has to be a compelling ($$$) reason to invest in a new platform. </em></p> </blockquote>  <p>So their response was to see the <a href="http://blogs.msdn.com/b/sqlrsteamblog/archive/2011/07/12/sql-server-codename-quot-denali-quot-ctp3-including-project-quot-crescent-quot-is-now-publically-available.aspx" target="_blank">SQL Server Reporting Services Team Blog</a> entry that describes the Denali release of SQL Server in more detail.</p>  <p>My response was as follows:&#160; </p>  <blockquote>   <p><em>It does help. I helps me see that the Visual Studio ReportViewer sync issue might have a long-term fix (that's the good news). The bad news is the dependency on SharePoint as several of the new features require SharePoint integration. Unfortunately, I don't see a &quot;Native to SharePoint&quot; migration tool that can take the years of work invested in Reporting Services native mode to easily port the catalog and its configuration over to SharePoint. Consider that the vast majority of sites do not have SharePoint integration for a variety of reasons--and might not ever have it. </em></p>    <p><em>Crescent also depends on SharePoint. I also didn't see anything about the other features report developers have been asking for including cascading style sheets, better parameter management, scheduling groups of reports and more. I don't see common solution properties in BIDS or better integration of DLL expressions. I'm afraid you've been working on features that too many of the smaller companies and independent departments within larger companies can't use--not without expensive re-tooling to use SharePoint.</em></p> </blockquote>  <p>After having read the team blog, I find that Report Builder 3 still lives but it’s renamed “Report Builder”. It also seems that there isn’t a new version of RDL—they’re sticking with “2010” but that’s not certain. They don’t say if Report Builder can work with more than one version of RDL—somehow I think that it’s still tied to one generation of RDL. Microsoft also announced that BIDS has been incorporated directly into Visual Studio, so the cross-campus dependency is less severe and they should be able to re-integrate “…within weeks” of Visual Studio’s next release.Thanks—it’s about time. Once Denali is released, ReportViewer applications will no longer have to be second-class citizens—always a generation behind. I wonder if they have added the ReportViewer control to the set of controls available for WPF applications. That would also be nice.</p>  <p>But I didn’t see any indication Microsoft added the ability to set properties on a solution-level to make it easier to build a single multi-project solution to map to large (or the entire) Reporting Services catalog. But that would be integrated into the low-level details and probably not mentioned in the blog. I also don’t see mention of better support for external DLLs like inclusion of VB class-projects in BIDS. I’ll look again once I install Denali. The point is, there is so much that needs to be done—things that <em>ordinary </em>report developers and DBAs need. I don’t see mention of the ability to share common-use code block between reports in lieu of creating and deploying DLLs. Where are these features?</p>  <p>As with other groups at Microsoft, the Reporting Services team seems to be caught up in the frantic SharePoint enthusiasm driven by the largest clients that, for the most part, does not extend beyond Redmond. Sure, I expect a number of larger companies have embraced SharePoint and it’s been improved over the years (from a very rocky start) but it’s expensive to implement, it’s performance is challenged and it’s difficult to manage—at least that’s what I hear from the field. But many, if not most smaller companies I work with can’t afford to start over from scratch to retrain, reinstall, redeploy, retest and all the rest required to add SharePoint and SharePoint integration. At to what end? Will the inexperienced Crescent report tool solve their problems or return enough productivity gains to justify the migration? </p>  <p>So before Microsoft encourages another company to make the cross-continent journey to SharePoint nirvana, they need a migration tool to make it drop-dead easy to transmogrify their native catalogs to SharePoint. They also need to figure out how to make SharePoint easier to install, configure and manage—not to mention run on a par performance-wise with native mode (good luck with that). In other words, they need to build the bridges and railroads before selling land in far-away lands. </p>  <p>In my humble opinion, like the Visual Studio team that’s focusing on Entity Framework (that the vast majority of their customers don’t or can’t afford to use), the SQL Server Reporting Services team seems to have created a new version of Reporting Services that builds the foundations for new features on uncertain ground before finishing the ones they created in the last two versions. </p></p>]]>
    </content>
</entry>

<entry>
    <title>Reporting Services Webinar</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/07/reporting-services-webinar.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2510</id>

    <published>2011-07-11T21:26:46Z</published>
    <updated>2011-07-11T21:26:50Z</updated>

    <summary>Nine Hours of Fast-Paced Training Tomorrow (July 12th) I’ll be presenting my monthly webinar. It’s been updated to include more information about SQL Server Reporting Services (R2) and Visual Studio 2010. This high-impact series of six 90-minute webinars held over...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<h2><font size="4">Nine Hours of Fast-Paced Training</font></h2>  <h1></h1>  <p><img style="margin: 0px 11px 0px 0px; display: inline; float: left" align="left" src="http://betav.com/blog/billva/WindowsLiveWriter/SQLServerandReportingServicesFoundations_E401/Progressive%20Banner_Logo_2.gif" width="253" height="42" />Tomorrow (July 12th) I’ll be presenting <a href="http://www.progressivebusinesstechnologytraining.com/R2/0">my monthly webinar</a>. It’s been updated to include more information about SQL Server Reporting Services (R2) and Visual Studio 2010. This high-impact series of six 90-minute webinars held over three mornings (Pacific time from 09:00-12:30) is for anyone who wants to leverage Business Intelligence Development Studio (BIDS), SQL Server and Reporting Services best practices—learning what works, what doesn't and why. These sessions are for developers, architects and managers who want to know how and (more importantly) <em>when</em> to leverage the power and benefits of SQL Server and Reporting Services. The fee also includes both of my Reporting Services and Visual Studio books. </p>  <blockquote>   <p><em>Incidentally, Progressive does not care how many people sit in on the sessions so you can fill a meeting room or the local theater if you want to. These are also designed to be interactive—that is, I encourage the attendees to chat in questions anytime or ask over the phone at the end.</em></p> </blockquote>  <p>Want a front-row seat in <a href="http://www.progressivebusinesstechnologytraining.com/R2/0">my next Webinar</a>? If so, I’m accepting applications for the live studio audience. All you need to do is send me an note saying why you would like to attend. I can comfortably sit about four people so get your application in early. Let me worry about the conference $999 fee, but if you bring doughnuts for everyone... I’ll pick the audience the Friday before the next talk.</p>]]>
        
    </content>
</entry>

<entry>
    <title><![CDATA[SQL Server Quiz&ndash;June 2011]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/07/sql-server-quizjune-2011.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2509</id>

    <published>2011-07-01T17:48:17Z</published>
    <updated>2011-07-01T17:48:23Z</updated>

    <summary>I was asked to provide a quiz question for the Beyond Relational folks so I came up with this: What issues are exposed when using SSPI authentication? How does one avoid these issues? There were lots of answers that almost...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p><strong>I was asked to provide a quiz question for </strong>the Beyond Relational folks so I came up with this:</p>  <p><strong>What issues are exposed when using SSPI authentication? How does one avoid these issues?</strong></p>  <p>There were lots of answers that almost universally said that using SSPI authentication was the way to go. A number of folks cataloged many of the problems associated with SSPI including having to implement Kerberos when using multiple hops. I’m no fan of Kerberos as it can make a fairly simple client/server or Reporting Services site unmanageable. But everyone missed the point. Consider this scenario:</p>  ]]>
        <![CDATA[<p>  <blockquote>   <p>Bob is a low-level report developer working for Acme Enterprises. They have a number of competitors that would love to see their client lists. Management has made sure that Bob, and other folks like him have few rights on the production database and have no rights to access the Customers database. While Bob can execute SELECT statements against the Parts database, he has no rights on Customers. </p> </blockquote>  <blockquote>   <p>Bob’s manager Betty is really considering demoting him or letting him go due to past performance issues—and that incident with the pig a few weeks ago. Bob knows his situation with the company is probably hopeless, so he decides to try to get at the customer list—he knows he can sell it to Farkle Industries down the street. When Betty tells him to create another report on the parts inventory he sees his opportunity. He creates the report but adds a few lines of SQL to the SELECT query that the report processor executes—something to the effect of “GRANT BOB rights to access everything (especially the customer database)”. He knows that his domain account does not have rights to make permission changes, but he knows that Betty’s does. When Bob runs the report using SSPI authentication, it throws an exception but returns the rowset needed for the report. However, when Betty runs the report, the report processor uses <em>her</em> SSPI authentication credentials and the GRANT statement goes through. Bob is now able to do all the queries he wants to against the customer list. He leaves Acme fat and happy.</p> </blockquote>  <p>This is called a <em>Trojan</em> attack. It’s very easy to implement anywhere that SSPI authentication credentials are used. Because of this very real threat, we recommend that you never use SSPI authentication for reports—at least not against databases that have sensitive information. </p></p>]]>
    </content>
</entry>

<entry>
    <title>SQL Server Quiz June 2011</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/05/sql-server-quiz-june-2011.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2508</id>

    <published>2011-05-31T13:02:30Z</published>
    <updated>2011-06-02T16:41:17Z</updated>

    <summary> The question for the month of June seems deceptively easy: What issues are exposed when using SSPI authentication? How does one avoid these issues? When I initially wrote this question, I was thinking about SQL Server Reporting Services reports...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" border="0" align="left" src="http://beyondrelational.com/cfs-file.ashx/__key/CommunityServer.Components.SiteFiles/logo.png" /></p>  <p><font size="2">The question for the month of June seems deceptively easy:</font></p>  <p><strong><font size="3">What issues are exposed when using SSPI authentication? How does one avoid these issues?</font></strong></p>  <p><font size="2">When I initially wrote this question, I was thinking about SQL Server Reporting Services reports and the data source connections they establish, but the question also applies to applications of all kinds that connect to data sources. As you (should) know, SSPI (or “trusted”) connections use the currently logged in Windows system credentials to pass along to the data source. The trusted approach precludes the need to use hard-coded (or generated) data source-dependent login names and passwords. With SSPI/trusted authentication, if the Windows user has a login account on the target SQL Server (or other data source), the connection is permitted to be (further) authenticated. No, the data source might not authenticate the connection if the user does not have rights on the initial catalog (default database), or if the server is too busy to take on additional connections, but that’s another issue. </font></p>  <ul>   <li><font size="2">The question is, do you know what issues are exposed when you use this <em>trusted</em> connection approach? </font></li>    <li><font size="2">What are the alternatives and why should they be considered? </font></li>    <li><font size="2">What are the downsides to these alternatives?</font> </li> </ul>  <p><font size="2">Want a hint? Check out Chapter 9 of my 7th Edition.</font></p>  <p><font size="2">Note that you are not permitted to post answers to this question until June 1st. 2011.</font></p>  <p><font size="6" face="Freestyle Script">Bill Vaughn</font></p>  <p>   <hr /></p>  <p>Postscript:</p>  <p>So, it seems that most responders to this question think that SSPI is the way to go. Here is another hint: Consider that SQL Server permits an application to submit any number of TSQL operations in a single query.</p>  <p><font size="2">&#160;</font></p>]]>
        
    </content>
</entry>

<entry>
    <title>Microsoft Customers Abandoned Again: SharedView No Longer Supported</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/04/microsoft-customers-abandoned.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2504</id>

    <published>2011-04-04T22:13:24Z</published>
    <updated>2011-04-04T23:10:42Z</updated>

    <summary>Well, it’s official. Microsoft has abandoned another mainstream product with no replacement. When I installed the new IE9 I discovered that SharedView no longer worked. I quickly uninstalled IE9 and submitted a Connect bug and asked my MVP lead to...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Consumer Issues" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tools" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Windows/XP/Vista/Windows 7" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>Well, it’s official. Microsoft has abandoned another mainstream product with no replacement. When I installed the new IE9 I discovered that SharedView no longer worked. I quickly uninstalled IE9 and submitted a Connect bug and asked my MVP lead to check out what’s going on. He got back to me today with the grim news: “Microsoft SharedView is no longer supported by Microsoft.”</p>  <p><a href="http://betav.com/blog/billva/Windows-Live-Writer/Microsoft-Customers-Abandoned-Again-Shar_D1D0/image_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://betav.com/blog/billva/Windows-Live-Writer/Microsoft-Customers-Abandoned-Again-Shar_D1D0/image_thumb.png" width="498" height="66" /></a></p>  <p><a title="http://social.microsoft.com/Forums/en-US/sharedviewbetahelp/threads" href="http://social.microsoft.com/Forums/en-US/sharedviewbetahelp/threads">http://social.microsoft.com/Forums/en-US/sharedviewbetahelp/threads</a></p>  <p>This is pretty sad. I leaves me and many other trainers and support professionals in the lurch. Now I have to find a suitable (non-Microsoft) replacement, test it and learn how to use it as well as update my course materials. I expect this is not nearly as expensive as the costs incurred by others that depend on SharedView on a daily basis.</p>  <p>Why is SharedView important? Yes there are other programs that purport to do the same. The SharedView advantage is that it's a MICROSOFT desktop sharing solution. You don't have to convince a customer that this free program is going to do anything but do what it's supposed to do. It's very lightweight, installs in seconds, is virtually pain-free and is brutally simple for each end to use. We have lots of sites where remote desktop is not an option--especially in my webinar classes. Consider that SV lets me view the system while the customer demonstrates a problem. I can take over his mouse and keyboard but only if he lets me and all he needs to do to take control back is move the mouse or press a key. It gave the customers a lot more confidence in their own system's security.</p>  <p>Wonder why the Microsoft stock is flat or falling while other companies continue to grow even in this economy? Now you know. </p>]]>
        
    </content>
</entry>

<entry>
    <title><![CDATA[American Airlines &ldquo;We know why you fly&rdquo;?]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/03/american-airlines-we-know-why.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2503</id>

    <published>2011-03-21T18:12:34Z</published>
    <updated>2011-03-21T20:38:07Z</updated>

    <summary>The Marquis de Sade would have giggled with glee at the thought of paying a month’s wages to be slowly tortured in the way passengers are treated while traveling in today’s airports. American Airlines thinks they know why I fly....</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Consumer Issues" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>The Marquis de Sade would have giggled with glee at the thought of paying a month’s wages to be slowly tortured in the way passengers are treated while traveling in today’s airports. American Airlines thinks they know why I fly. Perhaps they think they do, but do they understand how to keep a customer?</p>  <p>My wife and I just (barely) endured a long trip to London from Seattle and back via American Airlines. They (and the airports) could have done quite a bit more to make the trip more comfortable (or at least more tolerable) but mostly, they could have done so more quietly.&#160; </p>  ]]>
        <![CDATA[<p>  <p>I like to get to the airport early, so I often spend considerable time in the waiting areas. What I don’t understand was why passengers are pelted with loud warnings about liquids in our carry-on luggage—<em>inside</em> security. This is not entirely American Airline’s fault, but they could get TSA to route their messages to the speakers <em>outside</em> security. Ya, know, it’s one of those pesky wiring things—I’ll bet you can figure it out.</p>  <p>The airports also insist on playing background music to <em>sooth</em> us or to drown out the noise of the maintenance cart with the worn-out wheel. When you’re trying to catch up on work or a novel, but also need to listen for important announcements like your gate has changed (again) or your flight is delayed (again), why flood the air with more noise in the form of pop music? Folks, no matter what tune you choose to play over the speakers, it will be noise to someone. Those that want to listen to music will have brought their own iPod. I know the burger vendor in New York did.</p>  <p>After a dozen dozen announcements about liquids, leaving luggage unattended, taking smoking packages from strangers and unintelligible gate changes, we’re finally herded on the plane. At this point some of us try to make last-minute calls to coordinate with folks at home or back in the office, and now is when American Airlines insists on either playing more music or “get your butt out of the aisle” messages. The latter I understand (to a point), but again, the background music is just more grating noise. </p>  <p>Along the way, we get the recorded safety briefing and a brief respite of quiet—but no, the pilot has to come on and prove that he actually knows where he’s programmed the plane to fly. Folks, I could care less what altitude we’re flying at or that we’re going to pass over Picayune Vermont (unless I’m going to Dallas in which case it means I’m on the wrong plane or the pilot has the wrong flight plan loaded.) Pilots, we already know you’re cool, just get us there in one piece (and watch the rate of descent on touchdown). </p>  <p>When we finally bounce off the runway, we’re often very, very tired from having been strapped to seats that were worn out 10 years ago, having to deal with airline food (if you can call it that) and worn-out electronics that you might expect to find in a ghetto pawn shop. Flying worn-out planes <em>is</em> American Airline’s fault. And we’re still a long way from home or hotel. At this point, passengers need to coordinate with people on the ground but no, there are more verbose “welcome to (someplace along the way)” messages followed by a (usually unintelligible) announcement of where your bags might (eventually) be dumped. And more music. After an 8+ hour flight across the Atlantic plus an 8+ hour flight across the US after a 5+ hour layover I’m in no mood for calypso music. Trying to be pleasant to the immigration agent takes all of the energy and civility I have left. </p>  <p>But no, as we walk that last 1/4 mile to baggage claim, dealing with broken escalators and shoving Europeans, we’re again warned not to put liquids in our carry-on luggage and not to accept candy from strangers. Dead on our feet, we still have another 40 minutes to wait,&#160; before our bags are extruded from the bowels of the luggage machine—all the time being assaulted to the tune of a pop song that someone in corporate thought we would like. I don’t. And we have to face the same trip on the way home. </p>  <p>American Airlines and the airline terminals: have you wondered why we don’t want to fly anymore? Yes, some stuff is expensive to fix. I understand that you’ve ordered new planes, but you can deal with some of the thousand needles of irritation just by being more sensitive to the assaults we passengers have to endure. Stop playing music, making meaningless announcements and understanding that not everyone likes disco music at 4 in the morning.</p></p>]]>
    </content>
</entry>

<entry>
    <title>Is SQL Server Express Enough for the Job?</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/02/is-sql-server-express-enough-f.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2502</id>

    <published>2011-02-22T20:39:36Z</published>
    <updated>2011-02-22T20:40:10Z</updated>

    <summary>I’m working the forums this week and I’ve already seen several questions asking if SQL Server Express Edition is up to the task. Shown below are the Microsoft links to Express’ limitations but I would like to clarify just what...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="DBA Issues" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Data Architectures" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Express Edition" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Compact" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Server" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>I’m working the forums this week and I’ve already seen several questions asking if SQL Server Express Edition is up to the task. Shown below are the Microsoft links to Express’ limitations but I would like to clarify just what the mean (and can’t say).</p>  ]]>
        <![CDATA[<p>  <p>Back in my Microsoft days, I was an (unofficial) PM for MSDE--the predecessor for SQL Express. I'll tell you what I have been telling folks for decades. It's not usually the horse that determines the speed, it's the rider. If your applications are built correctly, you'll have no trouble supporting dozens to hundreds of users on a fairly simple SQL Server Express server. Today’s versions of SQL Server all share the same binaries (except for the Compact Edition) so they all work with the same applications. However, the SQL Express edition limits two important performance-enhancing benefits: RAM cache and parallel processing. Instead of letting you cache a big hunk of the database pages currently being accessed in RAM you’re limited to 1GB. In addition, instead of using several threads (processors) to fetch the data all at the same time, you’re limited to a single thread. But do these limitations really mean you can’t use SQL Server Express to support a small business? IMHO, it does not. </p>  <p>Remember that what makes SQL Server fast is the amount of work it has to do (duhhh).</p>  <ul>   <li>If it has to constantly hit the hard disk for data, it will be slower. The solution: add more RAM to cache the rows. In SQL Express this is going to be limited to 1GB.</li>    <li>Make sure that nothing else is running on the server--nothing (not even a print server, reporting services, exchange, IIS or even Castle Wolfenstein screen-saver). This means that the processor is not being distracted by other tasks and can focus on pulling your SQL Server wagon with all of it’s might.</li>    <li>Make sure that the client queries are well-written and return just the rows they need at the time. Fetching too many rows flushes the (limited) cache. </li>    <li>Don’t put pictures or documents in the database. One big picture can flush the entire RAM cache. Put BLOBs in files and put the paths in the DB. </li>    <li>Make sure that the database indexes are well designed and USED. If you fetch too many rows the indexes won't be used at all. Learn how to code and maintain indexes. Too many are just as bad as too few. Indexes can help focused queries but slow down updates. </li>    <li>Having a dual or quad-core (or better) processor will help the OS (Windows) stay out of the way. While SQL Express won't use the other processors to parallel process, the rest of the system will. </li>    <li>Pre-allocate the database to the size you expect it to be two years (or more) from now. Do the same for Model (which is used to create Temp) to eliminate the need to constantly stretch Temp during the day. </li> </ul>  <p>Most of these tips and more are in my book... hth</p>  <p>Come to my next <a href="http://www.progressivebusinesstechnologytraining.com/EM/0" target="_blank">Progressive webinar</a> (“Visual Studio, SQL Server and Reporting Services”) where we discuss these issues at length.</p>  <hr />  <p>For all the official details see <a href="http://www.microsoft.com/sqlserver/en/us/editions/express.aspx">http://www.microsoft.com/sqlserver/en/us/editions/express.aspx</a> and <a href="http://www.microsoft.com/express/Database/">http://www.microsoft.com/express/Database/</a>. </p></p>]]>
    </content>
</entry>

<entry>
    <title>Sharing Managed Code in Report Expressions</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2011/02/sharing-managed-code-in-report.html" />
    <id>tag:betav.com,2011:/blog/billva//3.2501</id>

    <published>2011-02-12T19:47:26Z</published>
    <updated>2011-02-12T20:08:26Z</updated>

    <summary> My new webinar/lab class launches next week on February 8-10. It’s the premier edition of a series of lectures and lab exercises that walk report developers through the process of learning enough Visual Basic to create serious report expressions...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Announcements" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Progressive" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Visual Basic .NET" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Webinars" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p><img src="http://www.progressivebusinesstechnologytraining.com/ac/img/Banner_Logo.gif" /></p>  <p>My <a href="http://www.progressivebusinesstechnologytraining.com/1GV/0" target="_blank">new webinar/lab class</a> launches next week on February 8-10. It’s the premier edition of a series of lectures and lab exercises that walk report developers through the process of learning enough Visual Basic to create serious report expressions for use with Reporting Services reports. </p>  <p>We follow the introduction to Visual Basic with an in-depth discussion of how to add code-based expressions to your reports, but more importantly, how to <em>share the code</em> between reports. The final session shows how to create <em>managed</em>-code DLLs that can be developed in C#, VB.NET or any .NET CLR language and leveraged by the report processor when rendering your report. </p>  <p>The <em>mentored lab exercises</em> walk you through the process of creating a Visual Basic test-harness, coding and debugging complex code expressions and finally, you’ll create your own sharable managed-code DLL that can be used in all kinds of deployed reports. </p>  <p>Here’s the <a href="http://www.progressivebusinesstechnologytraining.com/1GV/0/2/p4MMHCc/p5MKS36Xi/p0e" target="_blank">link to the Progressive site</a>. </p>  ]]>
        <![CDATA[<p>  <p>This is another one of my <u>lab-based courses</u>. Consider how hard it is to absorb new technical material when you don’t have a chance to try it out until you get back to your office. By including mentored labs immediately following each lecture, we’re able to help students dig into the concepts while the instructor is right there waiting to help. This approach has been very well received, as it encourages the maximum amount of learning in the least amount of time. All of the software used for the labs is free—thanks to Microsoft’s generosity. We also include easy-to-understand setup instructions to make installation easy. Several sample projects and reports are also included to illustrate the points discussed in the lectures.</p>  <hr />  <h2><font style="font-weight: bold" size="3">PROGRAM HIGHLIGHTS</font></h2>  <ul>   <li><strong>Visual Basic for Report Developers </strong></li>    <ul>     <li>Understanding Visual Basic </li>      <li>Creating Functions and Subroutines </li>      <li>Declaring Typed Constants and Variables</li>      <li>Managing Conditional Expressions and Looping</li>      <li>Testing and Debugging Expressions </li>      <li>Building an Expression Test-Harness Application</li>   </ul>    <li><strong>Implementing Report Expressions&#160; </strong></li>    <ul>     <li>Creating Internal Report Expressions </li>      <li>Creating External Report Expressions </li>      <li>Coding Report Expression</li>      <li>Working with the Expression Editor</li>      <li>Managing Expressions in Calculated Fields and Data Queries </li>      <li>Solving Typical Problems with Expressions</li>   </ul>    <li><strong>Sharing Report Expression Code&#160; </strong></li>    <ul>     <li>Expression Code Reuse and Sharing Issues </li>      <li>Creating Managed Assemblies for use in Report Expressions </li>      <li>Integrating Business Intelligence and Visual Studio </li>      <li>Creating, Testing and Deploying Custom Managed DLLs</li>      <li>Deploying Reports Containing Custom DLLs</li>   </ul> </ul></p>]]>
    </content>
</entry>

<entry>
    <title>Trying to Move Files with SharePoint Integration</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2010/12/trying-to-move-files-with-shar.html" />
    <id>tag:betav.com,2010:/blog/billva//3.2500</id>

    <published>2010-12-11T23:38:01Z</published>
    <updated>2010-12-11T23:38:05Z</updated>

    <summary>I’m prepping for my webinar next week that includes new content on Reporting Services SharePoint Integration and I came across a problem. In Report Manager I can easily “move” a report from folder to folder—it’s just a point-and-click operation with...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="BI Tools" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SharePoint" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>I’m prepping for my webinar next week that includes new content on Reporting Services SharePoint Integration and I came across a problem. In Report Manager I can easily “move” a report from folder to folder—it’s just a point-and-click operation with a GUI interface that shows the destination folder. I tried to do the same with SharePoint and discovered that there is no “move”—just a copy operation that’s a lot harder to use and not nearly as intuitive as it should be. </p>  ]]>
        <![CDATA[<p>  <p>While I found that I can launch the dialog to move a selected report to a new location, it's not at all clear what goes in the &quot;Destination document library or folder&quot; URL. It says I can provide a &quot;folder&quot; but no, it really needs a URL. Why not let users browse to the location (like the Report Manager does) and let SharePoint figure out the URL?</p>  <p>To find what the URL really should be, I navigated (with another instance of the browser) to the target location in the SharePoint Library and pasted in the URL:</p>  <p>&#160;<a href="http://betavhv1/SitePages/Home.aspx?RootFolder=%2FShared%20Documents%2FProgressive%20Demos&amp;FolderCTID=0x0120006A119C4454857745988F2FB710E11D19&amp;View={E12517D0-B124-41A6-8EF9-03722E4C655E">http://betavhv1/SitePages/Home.aspx?RootFolder=%2FShared%20Documents%2FProgressive%20Demos&amp;FolderCTID=0x0120006A119C4454857745988F2FB710E11D19&amp;View={E12517D0-B124-41A6-8EF9-03722E4C655E</a>}. </p>  <p>Ya gotta be kidding. Thankfully, it turns out all I needed was: </p>  <p>http://betavhv1/Shared documents/Progressive Demos</p>  <p>Folks, what seems intuitive to those who work with SharePoint every day is not necessarily that intuitive for the rest of the planet. All they needed was a “typical” example or better yet a drag and drop approach. I would have been happy with the approach used by Report Manager.</p>  <p>There also does not seem to be any way to move or delete sets of reports or actually &quot;move&quot; them--copy to a new folder and delete the source.</p>  <p>This SharePoint UI has a long way to go to equal Report Manager. They haven’t won me over yet.</p>  <hr /></p>]]>
    </content>
</entry>

<entry>
    <title><![CDATA[Managing Report Expressions&mdash;a Wish List]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2010/11/managing-report-expressionsa-w.html" />
    <id>tag:betav.com,2010:/blog/billva//3.2499</id>

    <published>2010-11-15T20:30:07Z</published>
    <updated>2010-11-15T20:45:41Z</updated>

    <summary>This entry focuses on the code developers add to reports make them work, look better or expose custom functionality. Sometimes it’s simply adding green-bar but when these expressions get complex or have to be incorporated in many places in the...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Events and Conferences" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Future Conferences" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Report Builder" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ReportViewer" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Visual Studio" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Webinars" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>This entry focuses on the code developers add to reports make them work, look better or expose custom functionality. Sometimes it’s simply adding green-bar but when these expressions get complex or have to be incorporated in many places in the report or in many reports (or both) productivity suffers. </p>  ]]>
        <![CDATA[<p>  <p>I’m working on a new webinar lab course for Progressive (to be premiered in February) to address these issues. It’s currently entitled “Managing Report Expressions” and targeted to report DBAs that don’t have much experience with Visual Basic, expression handling or expression code reuse and sharing. It starts out with a primer on basic Visual Basic followed by a session on the inner workings of RDL expressions. The third session focuses entirely on building, reusing and sharing internal and external “code” expressions—those written in VB.NET and other managed languages. Yes, I expect I’ll have to have to write a C# example or two as well. </p>  <p>While developing examples for this series of webinars I discovered that reusing and sharing expression code is not easy. That is, all of the code to do simple things like green-bar, background color inversion, language selection and other more complex financial or mapping functions has to be hand-entered into individual properties and Tablix cells each time in every report that uses them. </p>  <p>I have a few suggestions that might help with your productivity when using today’s Reporting Services and BI tools implementations and a few suggestions (and wishes) that are intended to lobby the Microsoft Reporting Services team. </p>  <h2><font size="3"><font style="font-weight: bold">Use a Custom Report Template</font></font></h2>  <h2>My first suggestion for those trying to reuse code expressions is to include them into a “template” that’s used as a starting place for your new reports. This can include the customer’s layout and color scheme as well as a report Code property filled with needed Functions and constants. Of course, when this code needs updating (as all code does), you’ll have to open your report, past in the new code and retest—hopefully not having to re-touch the report itself. </h2>  <h2><font size="3"><font style="font-weight: bold">Leverage the Report Code Property</font></font></h2>  <p>But the template approach does not address the problem of the individual report element properties that have to be reset one-by-one. As you can imagine, when it comes time to fix a bug or simply update the expression to adapt to changing business rules, you’ll discover that you’re stuck with a time-consuming process fraught with danger. Perhaps you missed one or more properties, incorrectly entered the expression and well… your imagination can take it from here. </p>  <p>The solution here is to de-reference the expressions. That is, I suggest putting as much expression code as possible code into the Report Code property and simply reference it from the individual expressions with the <em>Code.</em> syntax. This way several element properties that share the same expression can be changed at the same time. Since the report developer does not have to dig all through the report to ferret out the expressions (often hidden under several layers of UI) it means that a simple change to a “common” expression used throughout the report would be simple. This approach would also make the RDL smaller and faster to compile and execute. Yes, you still have to test the change—you don’t get a free pass there.</p>  <p><font size="3"><strong>Wish: Get the BI tools Intellisense™ to recognize Report Code and external DLL references.</strong></font></p>  <p>As it is, when you attempt to reference a code expression, the BI tools don’t pre-compile the Report Code property code block so it does not know it’s there or what functions it exposes. This makes it far too easy to misspell the function names or other objects exposed by the code. I suggest taking a lesson from the Visual Basic team and adding this functionality as well as step-through debugging.</p>  <p><strong><font size="3">Wish: Add Visual Basic code projects to the BI tools</font></strong></p>  <p>So, if you want to create a managed code DLL into your report project, you’ll have to use the full-blown Visual Studio (or Visual Basic Express) to write the code and build a prototype front-end to test it—the BI tools don’t contain any form of VB application projects. Folks (at Microsoft), this is just a packaging issue. Start talking with the Visual Studio people (they’re just across campus) and get the issues worked out. I would settle for the ability to create a VB class but having the ability to create the (now “obsolete”) Windows forms application to build a test harness would be nice(er). </p>  <p><strong><font size="3">Wish: Automatically set the Post-Build Events</font></strong></p>  <p>When you’re ready to test your report that references a DLL it’s essential that you copy the latest version of the DLL to the “secret” (well, undocumented) locations so the Preview window or debug mode can find it. I suggest that the BI tools help developers build the correct command scripts to copy the DLLs to the correct folders.</p>  <p><font size="3"><strong>Wish: A BI tools mechanism to leverage shareable code</strong></font></p>  <p>The problem with the local Report Code property is that in the real-world companies don’t have just one report—they have dozens to many hundreds or thousands of reports. This means there could be as many independently managed Report Code blocks as there are reports. In many cases the entire report catalog is managed in large Visual Studio BI solutions that have a project for each directory of the Reporting Services (or SharePoint) report catalog. This leads me to my first wish:</p>  <p><strong><u>Create a mechanism to support a common code block</u></strong> that’s managed on a project or (better yet) on a solution basis. This code would be compiled into the RDL as it’s being previewed or deployed—drawing it from a common source. I envision this implemented in a way that’s similar to the shared Data Sources, Datasets or Report Parts. Sure, you might consider implementing this as an external DLL, but given the current limitations of the report processor and the complexities of deploying code DLLs, I think some way to build and manage common code expressions that get incorporated into the RDL automatically is the next (easiest to implement) step. This would eventually lead to external DLL solutions if necessary but in many cases this would not be required except if you have DLLs written in languages other than Visual Basic. I also envision adding a “reference” to these XML code blocks in the report that would be resolved by the report processor when invoked to locate the code block. Of course, this would be expression-driven.</p>  <p><strong><font size="3">Wish: Document External Code DLL Development and Deployment</font></strong></p>  <p>So this one is easy for Microsoft to implement—they don’t (shouldn’t) change the code at all—just document it. When I was writing examples for the various flavors of external code references I found that for each way that reports are deployed and executed there was a different method to deploy the external code assemblies (DLLs)—all of which are heavily under-documented (to be kind). Basically, Microsoft needs to document the following scenarios where reports reference external DLLs in:</p>  <ul>   <li>Visual Studio BI tools Debug mode and Preview window</li>    <li>Reporting Services server-hosted implementations</li>    <li>ReportViewer Visual Studio development-time testing</li>    <li>ReportViewer deployed application hosted on a client system</li>    <li>Report Builder development, testing and rendering</li> </ul>  <p>Developers need to know how to:</p>  <ul>   <li>Create a suitable DLL that can be referenced by the Report Processor.</li>    <li>Compile the DLL and place it in the “right” location where the Report Processor can see it at runtime.</li>    <li>Deploy solutions using server-hosted reports as well as applications using the ReportViewer control.</li>    <li>Understand how DLLs are cached in memory when referenced by the report processor and know how to flush the old version as you’re developing.</li>    <li>Understand the implications of code access security so they know what works and what won’t (and in what scenarios).</li>    <li>Understand the ramifications of shared code. That is, what happens when someone changes a DLL? Do the reports continue to use the old code? How does DLL versioning play a role?</li> </ul>  <p>Folks, I’ve already figured out my answers to most of these questions (thanks to a couple of friends at Microsoft and in the UK). The next question is, are these the <em>right</em> answers? That’s what I want Microsoft to provide. I’ll be providing these answers in my webinars. Unfortunately, none of the upcoming conferences wanted to let me present developer sessions based on this content (at least not so far) so you’ll have to wait for the eBook, a magazine article or come to a local user group meeting in Redmond where I’ll be presenting the prototype of the sessions in late January or February (2010).</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fcbe6608-841c-41ec-bdb7-4a29bf647b9f" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/SQL+Server+Reporting+Services" rel="tag">SQL Server Reporting Services</a>,<a href="http://technorati.com/tags/Report+Development" rel="tag">Report Development</a>,<a href="http://technorati.com/tags/DLLs" rel="tag">DLLs</a>,<a href="http://technorati.com/tags/Code+property" rel="tag">Code property</a>,<a href="http://technorati.com/tags/report+deployment" rel="tag">report deployment</a></div></p>]]>
    </content>
</entry>

<entry>
    <title>A Real Hero</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2010/11/a-real-hero.html" />
    <id>tag:betav.com,2010:/blog/billva//3.2498</id>

    <published>2010-11-11T16:23:26Z</published>
    <updated>2010-11-11T16:23:31Z</updated>

    <summary>Here&apos;s a story sent to me on the web: ____________ You&apos;re a 19 year old kid. You&apos;re critically wounded and dying in the jungle somewhere in the Central Highlands of Vietnam. It&apos;s&#160; November 11, 1967.&#160;&#160; LZ (landing zone) X-ray. Your...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Veteran&apos;s Affairs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>Here's a story sent to me on the web:</p>  <p>____________</p>  <p>You're a 19 year old kid. You're critically wounded and dying in the jungle somewhere in the Central Highlands of Vietnam. It's&#160; November 11, 1967.&#160;&#160; LZ (landing zone) X-ray. Your unit is outnumbered 8-1 and the enemy fire is so intense, from 100 yards away, that&#160; your CO (commanding officer) has ordered the Medevac helicopters to stop coming in. You're lying there, listening to the enemy machine guns and you know you're not getting out. Your family is half way around the world, 12,000 miles away, and you'll never see them again. As the world starts to fade in and out, you know this is the day. </p>  <p>Then - over the machine gun noise - you faintly hear that sound of a helicopter. You look&#160; up to see a Huey coming in. But ... It doesn't&#160; seem real because no Medevac markings are on it. Captain Ed Freeman is coming in for you. He's not Medevac so it's not his job, but he heard the radio call and decided he's flying his Huey down into the machine gun fire anyway. Even after the Medevacs were ordered not to come. He's coming anyway. And he drops it in and sits there in the machine gun fire, as they load 3 of you at a time on board. Then he flies you up and out through the gunfire to the doctors and nurses and safety. And, he kept coming back!! 13 more&#160; times!! Until all the wounded were out. No one knew until the mission was over that the Captain had been hit 4 times in the legs and left arm. He took 29 of you and your buddies out that day. Some would not have made it without the Captain and his Huey. </p>  <p>Medal&#160; of Honor Recipient, Captain&#160; Ed Freeman, United States Air Force,&#160; <br />died on August 20, 2008&#160; at the age of 70 due to complications from Parkinson's disease.&#160;&#160; He was buried with full military honors at the Idaho State Veterans Cemetery in Boise.    <br />&#160; <br />May God Bless and Rest His Soul. </p>  <p>I bet you didn't hear about this real hero's passing,&#160; but we've sure seen a whole bunch about Michael Jackson, Tiger Woods and the bickering of congress over Health Reform. </p>  <p>______________</p>  <p>I’m also a Vietnam Vet. I flew for the 7/17 Air Cavalry for 9 months in II Corps (the Central Highlands) in 1969. I'm no Ed Freeman--not anywhere near it. But Ed was a member of our Vietnam Helicopter Pilots Association here in Washington State and I was proud to have known him. </p>  <p>By far, most of my missions in Vietnam were a walk in the park compared to so many others that flew back into danger to help others left behind. Those that came back returned as different people. Some still suffer today. And America didn’t learn the lessons of Vietnam. Our military is still fighting the longest war in its history, for reasons that we now find to be clouded, in a country with corrupt leaders, where our technology cannot win the hearts and support of the families that struggle for existence. Like Vietnam, the Afghan war cannot be won with bombs and bullets (according to our own generals). Like the Vietnamese, the men, women and children in the middle-east just want peace. So do nearly all Veterans. It’s why we fight and die and come back wounded only to find our jobs are gone and our families and marriages forever scarred. And we commit suicide at an alarming rate. So yes, tell a Veteran “Thanks” but remember him when you go to to polls to vote. Too many of the candidates wanted to cut funding for Veteran hospitals, clinics and counseling. There are lots of ways to support the troops—even if you don’t believe in the current war.   </p>]]>
        
    </content>
</entry>

<entry>
    <title>Free Software for the Un/Under Employed</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2010/10/free-software-for-the-ununder.html" />
    <id>tag:betav.com,2010:/blog/billva//3.2497</id>

    <published>2010-10-20T16:02:09Z</published>
    <updated>2010-10-20T16:02:12Z</updated>

    <summary>I just got this message from Arnie Rowland and it looks like a great offer. Basically, if you’re unemployed or underemployed he’ll provide the software if you’ll provide the talent to create an application for … well, I’ll let him...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>I just got this message from Arnie Rowland and it looks like a great offer. Basically, if you’re unemployed or underemployed he’ll provide the software if you’ll provide the talent to create an application for … well, I’ll let him give you the details.</p> ]]>
        <![CDATA[<p>  <p>Letter from Arnie Rowland: _______________________________________________________________________</p>  <p>Hi,    <br />I am leading an effort to provide software, training, books, and software tools to unemployed (or significantly underemployed) developers. The package of software, etc., has a value exceeding $17,000.     <br />Of course, there is a catch. We ask the developer to take on a small software development project for a non-profit, school, or church.     <br />I ask that you pass this information through your network of friends, collegues, and contacts in order to get the word out to eligible developers. Also, pass the word to any deserving non-profits, schools, and churches where you may contacts. An non-profit can submit a proposal and perhaps a developer will take it on. I would love to see more submissions from Oregon and Washington.     <br />The idea is to provide the tools, motivation, and opportunity for the developer to improve his/her skills in order to improve marketability. And at the same time, do good for society.     <br />Full details are here: <a href="http://www.linkedin.com/redirect?url=http%3A%2F%2Fbit%2Ely%2FcadT0y&amp;urlhash=JCgb&amp;_t=mbox_mebc">http://bit.ly/cadT0y</a>    <br />Thanks in advance for your help.     <br />Arnie Rowland, Ph.D., MCITP, MCDBA, MCSE, MCT, MVP (SQL Server) </p></p>]]>
    </content>
</entry>

<entry>
    <title><![CDATA[Reporting Services&mdash;Team Development]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2010/09/reporting-servicesteam-develop.html" />
    <id>tag:betav.com,2010:/blog/billva//3.2495</id>

    <published>2010-09-02T18:24:42Z</published>
    <updated>2010-09-02T18:41:13Z</updated>

    <summary>Just thinking aloud here. So, let’s say you have a team of report developers and you find that more than one report needs to access a common set of routines....</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <category term="Development" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ReportViewer" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Reporting Services Integration" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="SQL Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Software" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tools" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://betav.com/blog/billva/">
        <![CDATA[<p>Just thinking aloud here. So, let’s say you have a team of report developers and you find that more than one report needs to access a common set of routines. </p> ]]>
        <![CDATA[<p>  <p>In the first scenario, let’s assume that this expression (while complex) does not change that much over time. As I see it, Microsoft expects every developer to manually locate, copy and paste this code into their report properties. Because the expression does not change, it’s just a matter of tediously pasting in the code and hooking up the parameters (if any). IMHO, I think it would be nice if the code property could be automatically loaded from a file in the BI project.</p>  <p>However, in the second scenario where the code is subject to change, this cut-copy-paste scenario gets tedious (and dangerous) as each report must be revisited, edited by hand and recompiled, tested and redeployed. This might take hours to weeks to accomplish if there are a lot of reports and the chances for errors or omissions are manifest. IMHO there should be a mechanism to permit a single change to a single VB file in the BI project that would be automatically incorporated into all reports in the project upon request. This concept of a set of global project properties and the ability to apply these values to a set of reports in a solution is new but sorely needed. This same concept could apply to re-directing deploying reports, share datasets, share report parts or data sources to different servers or folders by simply changing a global variable. </p>  <p>For this shared code that changes scenario I recommend putting the code into a DLL that’s accessible not only at design/preview time in the BI tools or in a VS ReportViewer project but at runtime where the sever-hosted report processor can find it. The problem here is that the mechanisms to do this are not at all clear and not automated. I think it would be great if VS BI project DLLs could be automatically deployed to the correct Reporting Services bin folder and properly registered (as required). </p>  <p>In summary, As MS has implemented in the 2008 R2, the concept of shared datasets is intriguing. This gives developers the ability to create a commonly required rowset to be leveraged by any number of reports. Not only that, they’ve implemented shared report parts which lets a report developer construct a customized report control for reuse by several reports. That’s cool, but what if there was a commonly accessible set of <em>code</em> snippets that could be centrally managed and easily incorporated into reports? This way the developer would simply include the common code parts into their new reports to incorporate these blocks of Visual Basic code in every report. Since they are centrally managed, changes made to the host would be propagated to the reports leveraging the code. </p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:401f827e-7267-4a1e-9ff8-a3e738f33994" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Reporting+Services" rel="tag">Reporting Services</a>,<a href="http://technorati.com/tags/RDL" rel="tag">RDL</a></div></p>]]>
    </content>
</entry>

</feed>

