<?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>2012-08-17T17:18:11Z</updated>
    <subtitle>Sharing opinions, tips, ramblings and industry trends.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.38</generator>

<entry>
    <title><![CDATA[Windows 8&ndash;Not Quite Soup]]></title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2012/08/windows-8not-quite-soup.html" />
    <id>tag:betav.com,2012:/blog/billva//3.2537</id>

    <published>2012-08-17T17:18:08Z</published>
    <updated>2012-08-17T17:18:11Z</updated>

    <summary>When my mom was making dinner, my brothers and I would stick our heads in the kitchen and ask if it was time to eat. My mother was what they used to call a “housewife” and she actually “cooked” stuff—not...</summary>
    <author>
        <name>William Vaughn</name>
        <uri>http://www.betav.com</uri>
    </author>
    
        <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>When my mom was making dinner, my brothers and I would stick our heads in the kitchen and ask if it was time to eat. My mother was what they used to call a “housewife” and she actually “cooked” stuff—not just assemble the parts out of a box. All too often she would tell us “It’s not soup yet,” when the food on the stove had not been sufficiently cooked. It might have smelled delicious and looked edible, but it took time to soften the beans and work the spicy flavors into the meat. She would know when it was ready, even if it took another hour to cook. We never starved. Her cooking was worth waiting for. </p>  <p>I’m afraid Windows 8 isn’t soup yet. I was as anxious as a hungry teen when it came to the official launch of Windows 8. I had heard so many stories about its marvels that I wanted to be one of the first to try it. No, I didn’t try the betas or “nearly ready” versions because I didn’t have the time to build up a separate system or a Hyper-V to host it. I’ve been working with pre-released software for too long to install it over a functioning OS. So I guess I must take part of the blame in Windows 8’s shortcomings.</p>  <p>As I said, I’ve been working with Windows for a long time—since Version 1 when it was delivered on floppies and ran as an application on top of DOS. That was in ‘86 when I first joined Microsoft and worked with the Windows Developer Liaison team. Windows has come a long way since then.</p>  <p>So what happened? Well, there’s a laundry-list of stuff that worked and didn’t work, but I’ll get to that. First consider that I know how complex operating systems can be. I’ve written new OSs, modified other company’s OSs and taught developers how to program to them. I’ve also installed early versions of every version of Windows since the early days—many, many times. Windows 8 is following the same pattern as all of the others. Too bad it seems more like Vista than Windows 3 or Windows 7.</p>  <p>If you don’t want to read the list of issues and just want my recommendation, here it is: Wait. Wait until SP1 comes out. By this time, the hardware and software companies that are still alive (they fall by the wayside faster than old runners in the Boston marathon) will have released updated Windows 8 drivers, application updates and patches so their stuff works. By that time Microsoft will have released Media Center and added a “What happened to my XXXX in Windows 7” help topic.</p>  <p><strong><font size="3">The Hardware</font></strong></p>  <p>As a point of reference, my hardware platform is a i7 980x with 12GB of RAM, SSD drive and dual monitors being driven by a NVidia high-performance video card. The system profiles at 7.6 (it’s fast). </p>  <p align="center"><em>My references to the “unmetro” user interface address the copyright debacle caused by Microsoft’s inability to find a name that someone else isn’t using (again). Might I suggest “Google” before picking a name? I’ll just call it “UM” for reference sake. </em></p>  <h1><font style="font-weight: bold" size="3">Surprises and Disappointments</font></h1>  <p>Here’s what I found (or didn’t find).</p>  <li>I have an MSDN license (thanks to the Microsoft MVP program) so I tried to access the site on August 15th—the first release date. Unfortunately, the site could not take the traffic and repeatedly crashed. The MSDN staff on the phone had no idea what was going on. Apparently, there were no Clouds in Redmond that day. I decided to get some lunch, and later in the day the site was working again. As I’ve said before, there’s nothing like success to bring a company (even as large as Microsoft) to its knees.</li>  <li>While I&#160; waited, I did some research on the new versions. It looked like I wanted the “Enterprise” version. No, it’s not because I’m running a starship here, but it had some worthwhile features, and I hate it when you have invested months in an OS only to find that the feature you really need isn’t in that SKU. </li>  <li>I tried to upgrade my current Windows 7 Ultimate to Enterprise. Nope, no go. I hade to settle for the “Pro” version. Thankfully, this version was happy to overlay my existing Windows 7 system. And yes, I had done a full backup the previous day using Windows Backup. First mistake.</li>  <li>Once Win8 installed and settled down, I started getting lost in the new look and feel. The “unmetro” (UM) user interface (UI) was a big change. I discovered at once I had quick launch toolbars on <em>both</em> monitors. Not good. I use every bit of the second monitor for work. Icons and toolbars belong on the “primary” monitor. No work-around—minor irritation.</li>  <li>Discovering how to get the UM to work was helped by the (very brief) intro video. However, when clicking on the “Start” chicklet at the lower-left often triggered the application on the second row of the quick-launch toolbar. I’m not going to get started on the UI. I expect that I’ll get used to it in time. There are far more serious issues to discuss. And yes, I did discover a nice new Remote Desktop application. Intuitive, innovative and useful. But my gadgets were all gone—never to return. Not good.</li>  <li>I use this system for a variety of purposes. While my office apps still work, many of the others do not. These include my fingerprint reader, WinTV, Windows Media Center, my security camera apps, Camtasia Studio, SnagIt and Windows Backup. You can add about six gadgets to this list that I used heavily to give me real-time feedback on applications and OS performance. <strong>Strike 1. I use this system to record video from external cameras—none of which work with Windows 8.</strong></li>  <li>Once the OS was installed, I immediately tried to get a “starting point” backup established. Unfortunately, there was no Windows Backup visible and no references to it in “Search”.&#160; I did some research (on Google) and discovered it’s been replaced with new technology because “no one” was using Windows Backup. Isn’t that special. I’m someone, I use it. Silly me. I did find an old reference to “Windows 7 File Recovery”. And there it was. Dumb. So I didn’t want to overly my existing Win7 backup image so I told it to backup to a web server. After many (many) hours, (over a 1Ghz backbone to a dedicated file server), Windows 8 dropped the LAN. After repeated retries and resets, the only solution was to reboot and start over. <strong>Strike 2. I can’t have a system with an unstable LAN. </strong></li>  <li>I also use “System Restore” to roll back the registry and other systems software when things go wrong as they invariably do in my work. There is no sign of this functionality. This is serious but I hope to work around it with other backup software.</li>  <li>I finally pulled the backup target drive and replaced it with a clean drive. I keep my backup drives on a USB3 drive carrier so they can be easily pulled for archival and emergencies. Unfortunately, the system would no longer boot without this drive in place<strong>. Strike 3. Saving critical boot information on external drives is unacceptable.</strong></li>  <li>Throughout all of this I was constantly using Search to try to find out how to do stuff. Some of the time it helped by all too often it came up blank. “Gadgets” nothing. “Backup” nothing. Actually, that’s not true. “Backup” found an old copy of a Norton Ghost backup manual, but nothing from Microsoft. In frustration I typed “Help” and way down on the list was Microsoft’s help interface. Why isn’t <em>Help and Support</em> on the same top-level menu with Search? The problem we’re facing is the mountain of information, misinformation and rumor exposed by Bing and Google searches. Given the length of time Windows 8 has been in public beta, there is a landfill of articles out there—many of which are no longer applicable. This means that Microsoft needs to ensure that their system-resident help topics are the first point of information. And folks before you ship a product, expunge the “This stuff is preliminary” warnings. I was on the help team and it does not have to be this way.</li>  <p>&#160;</p>  <h1><font style="font-weight: bold" size="3">My Plans</font></h1>  <p>Because of these serious issues and the host of not-so-serious-issues that I’ve discovered just in the last 48 hours, I’m going to have to take the following steps:</p>  <p>Restore my Windows 7 system if I can. If I can’t, I plan to do a clean install of Windows 7 on this system. It will take a week to do, but I can’t have an unreliable system that’s not ready for production. Sure, a year from now, I might try again. By then the video hardware and software companies will probably have sorted out their Windows 8 issues. Until then, I’ll be sticking with Windows 7. It’s too important to me. I expect it is for you too.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Who is William Vaughn?</title>
    <link rel="alternate" type="text/html" href="http://betav.com/blog/billva/2012/07/who-is-william-vaughn.html" />
    <id>tag:betav.com,2012:/blog/billva//3.2536</id>

    <published>2012-07-17T21:45:48Z</published>
    <updated>2012-07-17T21:45:51Z</updated>

    <summary>I’m not a new author—far from it. I’ve written over a dozen books and contributed chapters to a handful of others. I’ve written more magazine and Internet articles than Justin Bieber’s hair stylists, and I’m not counting the documentation I...</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’m not a new author—far from it. I’ve written over a dozen books and contributed chapters to a handful of others. I’ve written more magazine and Internet articles than Justin Bieber’s hair stylists, and I’m not counting the documentation I pumped out for Microsoft. Except for my two novels, these were all ‘technical fiction’. You know, books written about Microsoft software for developers. One has to be pretty imaginative to write an easy-to-read book on the data access interfaces SQL Server and still keep the reader awake. </p>  <p>Apparently, none of this experience helps get one recognized as a competent writer in the young adult world. That’s understandable—very few teens read <em>Hitchhiker’s Guide to Visual Studio and SQL Server (7th Edition), </em>and they wouldn’t get the jokes anyway. That’s fine. I know how to restart my career on a new path. I’ve had to do it many, many times over the last forty years. Anyone who’s worked in the personal computer industry also knows how to file for unemployment.</p>  <p>So I had an idea for a novel. I wanted to tell a story about our turbulent times. I saw political corruption, corporations buying their own laws and media spigots to dump their propaganda on the public. I saw many social problems ignored or glossed over by the books impressionable teens were reading. I was convinced that our future leaders needed another <em>1984, Animal Farm</em> or <em>Alice In Wonderland</em>. Ambitious? Of course. I expect that Don Quixote and I are cut from the same cloth.</p>  <p><a href="http://betav.com/blog/billva/Windows-Live-Writer/9df3564f8a73_A831/The%20Owl%20Wrangler%20POD%20Cover%20(just%20front)_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 3px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="The Owl Wrangler POD Cover (just front)" border="0" alt="The Owl Wrangler POD Cover (just front)" align="left" src="http://betav.com/blog/billva/Windows-Live-Writer/9df3564f8a73_A831/The%20Owl%20Wrangler%20POD%20Cover%20(just%20front)_thumb.jpg" width="163" height="244" /></a>I spent about three years and a bunch of money on classes, books, editors and illustrators to create <em>The Owl Wrangler. </em>On the surface, it’s a young adult story about tiny forest elves. No taller than a pinecone, they live in the forests around the Northwest. They have parents, teachers and village elders that expect and demand quite a bit from them. They’re faced with many of the same hormonal and social pressures that my own kids faced when they were in their teens. But these elven teens are special. Many of them have fledgling magical powers that they’re just learning to wield. </p>  <p>The result? Tepid sales but 99% 5-star reviews—but only 9 of them. I thought it was time to start marketing in earnest. I found a publisher that was “very interested”, but communicating with them is like standing in the back of a busy bar trying to get a drink on a Friday night. I’m still looking for a sincerely interested publisher. Sure, I’ve been racking up rejection letters, but my ego can only take so much rejection. I’m not as frail as George McFly, no experienced author is, but given the state of the publishing industry, does it make sense to keep prodding publishers that only want best sellers? One of the blog articles that clog up my browser like malware pop-ups, suggested that the only key to success for a new author was to write—and keep writing. So I did.</p>  <p><a href="http://betav.com/blog/billva/Windows-Live-Writer/9df3564f8a73_A831/Copy%20of%20Front%20Cover%20Cats%20Eyes_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Copy of Front Cover Cats Eyes" border="0" alt="Copy of Front Cover Cats Eyes" align="right" src="http://betav.com/blog/billva/Windows-Live-Writer/9df3564f8a73_A831/Copy%20of%20Front%20Cover%20Cats%20Eyes_thumb.jpg" width="160" height="244" /></a>The story continued with <i>Guardians of the Sacred Seven</i>. This took another couple of years, more classes, editors, copyeditors, conference fees and thousands of hours on Facebook, Twitter and countless blogs and reading similar fantasies. Two years later, volume two of <i>The Owl Wrangler</i> trilogy is done. I’m happy with it. Taking my own advice, I’m writing the third. Frankly, the characters are calling me now to come back and listen to their stories.</p>  <p>Sure, I keep getting the occasional request to consult on SQL Server or Reporting Services projects, but I’m having too much fun. I’ll keep writing and until my arthritis locks up my hands entirely, I’ll keep doing so.</p>  <p>Follow me on @vaughnwilliam or on Facebook <a title="https://www.facebook.com/OwlWrangler" href="https://www.facebook.com/OwlWrangler">https://www.facebook.com/OwlWrangler</a>. </p>  <p align="justify"><font size="2" face="Garamond">&#160;</font></p>]]>
        
    </content>
</entry>

<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>

</feed>
