<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>William (Bill) Vaughn&apos;s Musings</title>
      <link>http://betav.com/blog/billva/</link>
      <description>Sharing opinions, tips and ramblings and industry trends.</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Sun, 26 Oct 2008 14:59:00 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=4.21-en</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>This is a test from Windows Live Writer</title>
         <description><![CDATA[<p><a href="http://betav.com/blog/billvaWindowsLiveWriter/ThisisatestfromWindowsLiveWriter_D2B7/2987991120052425996ZlNoUo_th_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="79" alt="2987991120052425996ZlNoUo_th" src="http://betav.com/blog/billvaWindowsLiveWriter/ThisisatestfromWindowsLiveWriter_D2B7/2987991120052425996ZlNoUo_th_thumb.jpg" width="104" border="0" /></a> Just to see if this is working. These are the tire chains I'm trying to sell. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/this_is_a_test_from_windows_li.html</link>
         <guid>http://betav.com/blog/billva/2008/10/this_is_a_test_from_windows_li.html</guid>
         <category></category>
         <pubDate>Sun, 26 Oct 2008 14:59:00 -0800</pubDate>
      </item>
      
      <item>
         <title>Upgrading My Blog</title>
         <description><![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://betav.com/blog/billva\assets_c\2008\10\billva2.html" onclick="window.open('http://betav.com/blog/billva\assets_c\2008\10\billva2.html','popup','width=320,height=240,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://betav.com/blog/billva/assets_c/2008/10/billva2-thumb-320x240.jpg" width="320" height="240" alt="billva2.jpg" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></a></span>Please excuse the disruption. I'm upgrading the blog software to Movable Type 4.2 and there are a few disconnects. When I'm don't I hope to be able to confirm comments with CAPTCHA instead of having to log in with anyone... </p>

<p>If you want to post a comment, send me some mail until I get this fixed. billva@betav.com with "BLOG Comment" in the subject line...</p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/upgrading_my_blog.html</link>
         <guid>http://betav.com/blog/billva/2008/10/upgrading_my_blog.html</guid>
         <category>Administration Notes</category>
         <pubDate>Sun, 26 Oct 2008 14:47:21 -0800</pubDate>
      </item>
      
      <item>
         <title>Is Microsoft Listening or Open for Output Only?</title>
         <description><![CDATA[<p>Folks, we're at that rare point in time when the developer community can have some modicum of influence on how the next version of Visual Studio will work. I highly encourage everyone to get active and start pinging the development teams with your issues, bugs, wish-lists and gripes. No, you don't need to be negative, as VS has come a long way over the last decade but there are still many issues that are left unresolved over several versions so we (all) need to be persistent and vocal. I have outlined a few of these issues below. Do they sound familiar? Sure, these are the same issues we've been asking for since.... well, for a very long time.</p>  <p>I&#8217;m convinced by the hundreds of developer and customer interviews I&#8217;ve done over the years that building a SELECT query without a WHERE clause is just wrong. It makes an assumption that the application can consume all of the rows in the target table. Unless you're fetching a list of valid US states, populating a pick list that contains a few hundred rows, or creating a (very) simple single-user application, it simply does not make sense. It almost never makes sense for DataSets you intend to update. IMHO, no demo done by Microsoft should show this practice. In addition, no code generator should be permitted to ship that does not at least ask the developer for a WHERE clause and handle the inevitable parameters it requires. That's where VS falls short. The Data Source Configuration wizard still does not capture a WHERE clause or the parameters. The generated UI code should automatically build elements to capture and validate these parameters&#8212;very much like the Report Data window in the BI tools. These are very well done, and this metaphor should be leveraged to that end. IMHO, it&#8217;s irresponsible to lead developers along the wrong path--even when dealing with novices--especially when dealing with novices. By asking for a WHERE clause, you help developers learn the <em>right</em> way to execute a SELECT query from the very beginning. Sure, developers can just skip over that step--as long as they have a note from their mom.</p>  <p>In that same vein, the Data Source configuration wizard should NOT permit developers to choose all of the objects displayed (as in the screen shot attached here). Doing so generates strongly typed DataSets with no WHERE clauses for ALL of the tables in the database&#8212;even if there are thousands of tables with millions of rows. Again, developers should always be encouraged to use best practices when building code. While asking for all of the tables in the database might make sense in a demo, it rarely makes sense in a real application. Don&#8217;t dumb down the wizards to accommodate toy or sample databases. Assume that the application being built is a serious production application with millions of rows stored in thousands of tables, not an Access replacement or a simple app for a two-user home business. Even then, if the motivation is to make things easier, then help the developer learn the <em>right </em>way to solve the problem. </p>  <p>So, when does Microsoft plan to address the age-old problem of an evolving schema? The Entity Framework and the proposed drag-and-drop metaphor (the same one we&#8217;ve seen since the dawn of time in the RAD languages), makes an invalid assumption; that the database schema is cast in stone. In reality, the schema is almost always in flux while an application is being developed and long there-after as the development team's understanding of the business problem evolves over time. The UI developer rarely gets to change the schema, but in the current drag-and-drop metaphor, the developer has to do all of the work again when it changes. This all too often makes use of the drag-and-drop (that demos so well) impractical to use in a production shop. IMHO, Microsoft needs to AUTOMATICALLY change the generated code to reflect schema changes or at least mark code that's invalidated when the schema changes so developers can fix it. This is more than simply noting in the data model where changes have been made. The generated code must also be morphed to reflect these changes.</p>  <p>In addition, we still don&#8217;t have a mechanism to manage or apply meta-data to the data code generated by the tools. Properties such as description, min, max, default, mask, acceptable values, value expressions, mask and many others all need to be managed and incorporated in the generated code. The code needs to automatically build exception mechanisms that deal with metadata validation issues. The interface needs to permit the developer to name and manage their own business rules to feed criteria expressions associated with each database object from the column on up through the server instance. </p>  <p>It seems that unless we act, Visual Studio tools are still going to generate code that does not reflect normal, everyday business practices, best coding practices and they provide no mechanism to automatically adapt itself to these evolving business rules. It&#8217;s na&#239;ve, simplistic and generally a waste of Microsoft&#8217;s time to keep working on this paradigm when it does not really help people learn best practices or build applications that will scale or hold up under the rigors of a real-world business environment. </p>  <p>As I see it, the data code generation paradigm has gone static or been distracted by implementing WPF or EM technology instead of working on the fundamental problems we&#8217;ve been talking about for over a decade. We have not seen substantive change since 2003 when the TableAdapter was introduced. <em>These oversights in Visual Studio raise the question: Is Visual Studio and its data access code generators and binding mechanisms intended for serious, scalable production applications or are they just to help novices knock out an example to get the feel of the interface? </em></p>  <ul>   <li> I think we need an SDR that includes the heavy-hitters from the Visual Basic Insider&#8217;s list as well as their equivalent experts in the C# MVPs. This needs to be done very soon&#8212;<i>before</i> the data access team has solidified the plans for 2010&#8212;if it&#8217;s not already too late.</li>    <li>I also think we also need a &#8220;Data Access Insiders&#8221; list to promote discussion of these issues long-term that seem to be ignored or misunderstood by the teams at Microsoft responsible for creating these technologies. </li> </ul>  <p>There are many of us out here that are passionate about Microsoft technologies and want to help build better tools and applications using those tools. Give us a chance to help Microsoft do that.</p>  <p>&#160;</p>  <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d147d5a7-8dc8-45dd-b536-f783e94a42ca" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Visual%20Studio%202010" rel="tag">Visual Studio 2010</a>,<a href="http://technorati.com/tags/data%20binding" rel="tag">data binding</a>,<a href="http://technorati.com/tags/TableAdapters" rel="tag">TableAdapters</a>,<a href="http://technorati.com/tags/Business%20Rules" rel="tag">Business Rules</a></div>]]></description>
         <link>http://betav.com/blog/billva/2008/10/is_microsoft_listening_or_open.html</link>
         <guid>http://betav.com/blog/billva/2008/10/is_microsoft_listening_or_open.html</guid>
         <category>Data Architectures</category>
         <pubDate>Wed, 22 Oct 2008 14:13:19 -0800</pubDate>
      </item>
      
      <item>
         <title>Voting Machines Deny Basic Rights</title>
         <description><![CDATA[<p>Folks, if you aren't paying attention you might wake up on November 5th to discover that the election does not reflect your or your neighbor's votes. I think it's a monumental scandal how we as technologists have permitted our states to get into this situation. Take some time and see if you can help or influence your local precinct/county/state election boards to get these issues fixed. I also suggest you keep abreast of the ever-evolving situation by subscribing to the Daily Voting News newsgroup. Here is yesterday's (Oct 20, 2008) content:</p>  <p>&#160;</p>  <p>15 days until Election Day.</p>  <p>Election officials in Jacksonville Florida must not have done the required Logic and Accuracy testing on all of their optical scan machines to be used in early voting. Nearly half of the optical scan machines in use in the city failed because they indicated the ballot was too long. This is clearly an error that should have been discovered in pre-election Logic and Accuracy testing. The problem is also being reported in other counties in the state and is being attributed to the machines purchased by the state.</p>  <p>Voters in Houston Texas were faced with long lines for the first day of early voting. Long-lines in some voting sites caused by failures of the computers used to check-in the voters. There were also some reports of voters who voted straight-party Democrat only to find that their Presidential selection was given to the Republican.</p>  <p>Featured - FL: Jacksonville - Early Voting off to Rough Start</p>  <p><a href="http://www.firstcoastnews.com/news/breaking/news-article.aspx?storyid=121489&amp;catid=17">http://www.firstcoastnews.com/news/breaking/news-article.aspx?storyid=121489&amp;catid=17</a></p>  <p>Featured - FL: Leon County - Ballots not being recorded at two Leon County polling places</p>  <p><a href="http://www.tallahassee.com/article/20081020/BREAKINGNEWS/81020024">http://www.tallahassee.com/article/20081020/BREAKINGNEWS/81020024</a></p>  <p>Featured - TX: Houston - Voters turn out in force for historic campaign <a href="http://www.chron.com/disp/story.mpl/hotstories/6068201.html">http://www.chron.com/disp/story.mpl/hotstories/6068201.html</a></p>  <p>Featured &#8211; WV: Ireland Says No Major Problems With Early Voting</p>  <p><a href="http://www.wvmetronews.com/index.cfm?func=displayfullstory&amp;storyid=26987">http://www.wvmetronews.com/index.cfm?func=displayfullstory&amp;storyid=26987</a></p>  <p>National: Snopes confirms danger of Straight Ticket Voting (STV) <a href="http://www.opednews.com/articles/Snopes-warns-of-dangers-of-by-Joan-Brunwasser-081020-116.html">http://www.opednews.com/articles/Snopes-warns-of-dangers-of-by-Joan-Brunwasser-081020-116.html</a></p>  <p>National: Are voting machines reliable? DVICE looks at every type -- in every state <a href="http://dvice.com/archives/2008/10/are_voting_mach.php">http://dvice.com/archives/2008/10/are_voting_mach.php</a></p>  <p>National: Obama Assembles U.S.'s `Largest Law Firm' to Monitor Election <a href="http://www.bloomberg.com/apps/news?pid=20601070&amp;sid=a.hk4HvCkpiE&amp;refer=home">http://www.bloomberg.com/apps/news?pid=20601070&amp;sid=a.hk4HvCkpiE&amp;refer=home</a></p>  <p>National: Heavy Voter Turn Out Nationwide Could Cause Delays at Polls</p>  <p><a href="http://www.cqpolitics.com/wmspage.cfm?parm1=5&amp;docID=news-000002976666">http://www.cqpolitics.com/wmspage.cfm?parm1=5&amp;docID=news-000002976666</a></p>  <p>National: YouTube, PBS urge Americans to record voting problems</p>  <p><a href="http://nbbusinessjournal.canadaeast.com/journal/article/453547">http://nbbusinessjournal.canadaeast.com/journal/article/453547</a></p>  <p>National: Class voting hacks prompt call for better audits University exercise illustrates the potential for electronic vote tampering <a href="http://www.msnbc.msn.com/id/27205654/">http://www.msnbc.msn.com/id/27205654/</a></p>  <p>National: Eight Years After Bush v. Gore, Why is There Still So Much Election Litigation and What Does This Mean for Voter Confidence in the Electoral Process?</p>  <p><a href="http://writ.news.findlaw.com/commentary/20081020_hasen.html">http://writ.news.findlaw.com/commentary/20081020_hasen.html</a></p>  <p>National: CountTheBallots (CTB) Calls for 'Citizen Audits' on Election Day - Warns of Widespread Fraud <a href="http://www.marketwatch.com/news/story/counttheballots-ctb-calls-citizen-audits/story.aspx?guid=%7b6213A17F-0BA6-4A58-A3D1-A9573EAA1A47%7d&amp;dist=hppr">http://www.marketwatch.com/news/story/counttheballots-ctb-calls-citizen-audits/story.aspx?guid={6213A17F-0BA6-4A58-A3D1-A9573EAA1A47}&amp;dist=hppr</a></p>  <p>National: Protect Your Vote - Carry This Number <a href="http://sanfrancisco.about.com/b/2008/10/20/protect-your-vote-carry-this-number.htm">http://sanfrancisco.about.com/b/2008/10/20/protect-your-vote-carry-this-number.htm</a></p>  <p>AL: Bulging voter lists invite election fraud</p>  <p><a href="http://www.al.com/opinion/press-register/editorials.ssf?/base/opinion/1224494160274420.xml&amp;coll=3">http://www.al.com/opinion/press-register/editorials.ssf?/base/opinion/1224494160274420.xml&amp;coll=3</a></p>  <p>AZ: Arizona expects less wait at polls</p>  <p>Early balloting, more sites aim to reduce winding lines <a href="http://www.azcentral.com/arizonarepublic/news/articles/2008/10/20/20081020azvote1020.html">http://www.azcentral.com/arizonarepublic/news/articles/2008/10/20/20081020azvote1020.html</a></p>  <p>AZ: Pima County - Help AZ Candidate Restore US Election Integrity <a href="http://www.scoop.co.nz/stories/HL0810/S00288.htm">http://www.scoop.co.nz/stories/HL0810/S00288.htm</a></p>  <p>CA: County registrars are scrambling to keep up with new voter rolls In some California counties, officials are doubling up on polling machines, ballots and workers, and even hiring people to direct traffic.</p>  <p><a href="http://www.latimes.com/news/local/la-me-vote20-2008oct20,0,7589384.story">http://www.latimes.com/news/local/la-me-vote20-2008oct20,0,7589384.story</a></p>  <p>CO: Colorado will be under watchful eyes of media, monitors on Election Day <a href="http://www.rockymountainnews.com/news/2008/oct/20/state-will-be-under-watchful-eyes-of-media/">http://www.rockymountainnews.com/news/2008/oct/20/state-will-be-under-watchful-eyes-of-media/</a></p>  <p>FL: Long lines, a few glitches mark start of early voting in South Florida <a href="http://www.miamiherald.com/979/story/733312.html">http://www.miamiherald.com/979/story/733312.html</a></p>  <p>FL: Duval County - Machine Problems Plague 1st Day Of Early Voting Metro Counties See Brisk Turnout, No Problems <a href="http://www.news4jax.com/news/17760842/detail.html">http://www.news4jax.com/news/17760842/detail.html</a></p>  <p>FL: Miami-Dade County - Early voting draws lines at some Dade polling places <a href="http://www.miamiherald.com/news/broward/breaking-news/story/733312.html">http://www.miamiherald.com/news/broward/breaking-news/story/733312.html</a></p>  <p>FL: Past voting gaffes put Palm Beach County in spotlight <a href="http://www.tampabay.com/news/article862247.ece">http://www.tampabay.com/news/article862247.ece</a></p>  <p>FL: Pasco County - Early Voting Turnout Higher Than Expected <a href="http://www2.tbo.com/content/2008/oct/20/early-voting-turnout-higher-expected/">http://www2.tbo.com/content/2008/oct/20/early-voting-turnout-higher-expected/</a></p>  <p>GA: Ga. secretary of state faces slew of voter issues <a href="http://www.fortmilltimes.com/124/story/329984.html">http://www.fortmilltimes.com/124/story/329984.html</a></p>  <p>IL: Early voting in DuPage exceeds expectations</p>  <p><a href="http://www.dailyherald.com/story/?id=244076">http://www.dailyherald.com/story/?id=244076</a></p>  <p>MD: Md. US attorney creates election fraud task force <a href="http://www.mddailyrecord.com/article.cfm?id=8858&amp;type=UTTM">http://www.mddailyrecord.com/article.cfm?id=8858&amp;type=UTTM</a></p>  <p>NJ: NJ Judge Allows Release of Princeton Report Critical of Sequoia Voting Systems Sequoia Counters With a Strongly Worded Response That Does Not Answer The Critical Question: Do Their Machines Count Votes Accurately?</p>  <p><a href="http://www.bradblog.com/?p=6527">http://www.bradblog.com/?p=6527</a></p>  <p>NJ: Editorial: Our election systems still beset by flaws <a href="http://packetonline.com/articles/2008/10/20/the_princeton_packet/opinions/doc48fd0157b6044428005400.txt">http://packetonline.com/articles/2008/10/20/the_princeton_packet/opinions/doc48fd0157b6044428005400.txt</a></p>  <p>NV: Washoe County - Early voters line up to cast their election ballots <a href="http://www.rgj.com/article/20081019/NEWS/810190350/1321/NEWS">http://www.rgj.com/article/20081019/NEWS/810190350/1321/NEWS</a></p>  <p>NY: State finds some county election boards unprepared Schuyler among 18 county offices across state checked by officials</p>  <p><a href="http://www.stargazette.com/apps/pbcs.dll/article?AID=/20081020/NEWS0110/810200301">http://www.stargazette.com/apps/pbcs.dll/article?AID=/20081020/NEWS0110/810200301</a></p>  <p>NY: Ulster County - Kingston, Ulster towns get nailed in voting upgrade County passes on cost of 2009 election <a href="http://www.recordonline.com/apps/pbcs.dll/article?AID=/20081020/NEWS/810200315/-1/NEWS">http://www.recordonline.com/apps/pbcs.dll/article?AID=/20081020/NEWS/810200315/-1/NEWS</a></p>  <p>PA: Pennsylvania Secretary of the Commonwealth Outraged at Partisan Lawsuit Attempting to Undermine Voter Confidence <a href="http://www.marketwatch.com/news/story/pennsylvania-secretary-commonwealth-outraged-partisan/story.aspx?guid=%7bAA1B4F2A-3174-4C4D-996D-CB0C444E55F6%7d&amp;dist=hppr">http://www.marketwatch.com/news/story/pennsylvania-secretary-commonwealth-outraged-partisan/story.aspx?guid={AA1B4F2A-3174-4C4D-996D-CB0C444E55F6}&amp;dist=hppr</a></p>  <p>PA: Allegheny County says voting machines ready <a href="http://www.pittsburghlive.com/x/pittsburghtrib/news/breaking/s_594256.html">http://www.pittsburghlive.com/x/pittsburghtrib/news/breaking/s_594256.html</a></p>  <p>SC: League questions voting machines</p>  <p><a href="http://www.tradingmarkets.com/.site/news/Stock%20News/1954210/">http://www.tradingmarkets.com/.site/news/Stock%20News/1954210/</a></p>  <p>TX: Big Texas turnout on first day of early voting <a href="http://www.dallasnews.com/sharedcontent/APStories/stories/D93UFFFG0.html">http://www.dallasnews.com/sharedcontent/APStories/stories/D93UFFFG0.html</a></p>  <p>TX: Denton County voters urged to use paper ballots <a href="http://www.wfaa.com/sharedcontent/dws/wfaa/latestnews/stories/wfaa081020_wz_paperballots.12d6c23f6.html">http://www.wfaa.com/sharedcontent/dws/wfaa/latestnews/stories/wfaa081020_wz_paperballots.12d6c23f6.html</a></p>  <p>TX: Galveston - Voting Rights Watch: Post-Ike displacement could cause voting problems for Galveston <a href="http://southernstudies.org/facingsouth/2008/10/voting-rights-watch-post-ike.asp">http://southernstudies.org/facingsouth/2008/10/voting-rights-watch-post-ike.asp</a></p>  <p>UT: Study: Utah vote devices unreliable</p>  <p><a href="http://www.sltrib.com/news/ci_10765686">http://www.sltrib.com/news/ci_10765686</a></p>  <p>VA: Local precincts bracing for flood of voters Registrar officials have had to get more voting equipment and poll workers to handle the crowds.</p>  <p><a href="http://www.dailypress.com/news/dp-local_registration_1020oct20,0,6267498.story">http://www.dailypress.com/news/dp-local_registration_1020oct20,0,6267498.story</a></p>  <p>WV: Paperless Electronic Voting Machines Flipping Votes from Obama to McCain in West Virginia <a href="http://www.opednews.com/articles/Paperless-Electronic-Votin-by-Kevin-Zeese-081020-346.html">http://www.opednews.com/articles/Paperless-Electronic-Votin-by-Kevin-Zeese-081020-346.html</a></p>  <p>**Articles and commentary included in &#8220;Daily Voting News&#8221; may not all reflect the opinions of VotersUnite.Org or its allied organizations. The articles are all included for the information of the subscribers of &#8220;Daily Voting News&#8221; though we realize that the subscribers may not agree with the opinions given in all articles or in the commentary**</p>  <p>*******************************************************************</p>  <p>If you receive Daily Voting News directly from John Gideon and VotersUnite and wish to unsubscribe, please send an email to <a href="mailto:jgideon@votersunite.org">jgideon@votersunite.org</a> requesting that you be removed from circulation.</p>  <p>If you get the email forwarded from someone else you must contact them to be unsubscribed.</p>  <p>*******************************************************************</p>  <p>--</p>  <p>John Gideon</p>  <p>Co-Executive Director</p>  <p>VotersUnite.Org</p>  <p><a href="http://www.votersunite.org">www.votersunite.org</a></p>  <p>&quot;To encourage citizen ownership of transparent, participatory</p>  <p>democracy.&quot; The Creekside Declaration March 22, 2008</p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/voting_machines_deny_basic_rig.html</link>
         <guid>http://betav.com/blog/billva/2008/10/voting_machines_deny_basic_rig.html</guid>
         <category>Announcements</category>
         <pubDate>Tue, 21 Oct 2008 10:58:34 -0800</pubDate>
      </item>
      
      <item>
         <title>SQL Server 2008 Management Studio -- Disappearing Projects</title>
         <description><![CDATA[<p>For some reason, I have been unable to create new SSMS 2008 projects or open existing projects without getting a &quot;Class Not Registered&quot; exception or simply an empty project/solution window. I did see a response from a fellow MVP that suggested I need to apply SQL Server 2008 <a href="http://support.microsoft.com/kb/956717" target="_blank">Customer Update 1</a> (CU1) but not before I had attempted to &quot;repair&quot; my existing installation. Unfortunately, this triggered a number of other issues as discussed below:</p>  <ol>   <li>SQL Server 2008 Setup (don't you love it--we always seem to come back to setup issues) would not install because a reboot was required--even after repeated reboots--dead end. </li>    <li>Setup would run in Safe Mode but complained of a missing Windows Installer--dead end. </li>    <li>A search on Google turned up a <a href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3745175&amp;SiteID=1" target="_blank">MSDN Forum response</a> that discussed registry corruption. Note that I found the &quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager&quot; then deleting the value of &quot;PendingFileRenameOperations&quot; worked where none of the other referenced settings made any difference. </li>    <li>Once setup ran the behavior of SSMS returned to normal (AFA the New Project and Open Project functionality were concerned). However, Setup throws a number of exceptions--possibly due to the fact I've installed Visual Studio SP1 that (possibly) pooched the bits in the first place. I still can't install the CU1 on one of two systems.&#160; </li> </ol>  <p>On a side note, have you seen the (seemingly endless) list of stuff fixed in the 174MB CU1? Holy moley, there is a lot of really basic problems here including VIEWS with ORDER BY returning randomly sequenced rows and reports showing glyphs instead of data. How did these get through QC? Oh, sorry, I know the answer. Not enough time taken for testing. The marketing folks had already rented the hotel ballrooms for the launch... Yes, I plan to install CU1, but only after my two User Group talks this week. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/sql_server_2008_management_stu.html</link>
         <guid>http://betav.com/blog/billva/2008/10/sql_server_2008_management_stu.html</guid>
         <category>Data Architectures</category>
         <pubDate>Mon, 20 Oct 2008 10:52:24 -0800</pubDate>
      </item>
      
      <item>
         <title>Attaching to a Different Master--Resyncing the User and Login</title>
         <description><![CDATA[<p>This short entry is simply a discussion of what happens when you attach a populated database to a different SQL Server. I do this all the time when I build demo systems or move test databases into production. </p>  <p>Consider that all of the objects in a database have a name and (more importantly) a digital ID--an number that uniquely identifies it from the others. When you create a database it gets a name and a object ID. While simplified, this basically means that when you create a new Login, it gets a unique number (the SID). When you create a new User in a database, it also gets a UID and its own SID. When you attach a database that already has users (as most do), the users probably won't match the Logins already stored in master. While it would be possible drop and recreate all of the users, it's easier to simply run a SP to fix up the mismatched User Names and the User IDs associated with them. In recent versions of SQL Server, this data is managed in the user database system.database_principals system catalog view. </p>  <p><strong>The trick is to reset the values stored in the &quot;principals&quot; system table with the SQL Server login of the same name. </strong></p>  <p>First, I suggest you try <strong><em>sp_change_users_login</em></strong></p>  <p>This system stored procedure maps an <em>existing</em> database user to a SQL Server login. However, they say this sp will be removed in a future version of Microsoft SQL Server so it's probably a good idea to avoid using this approach in new development work, and plan to modify applications that currently use this feature. It still works in SQL Server 2008.</p>  <p>If you decide to use <a href="ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/1554b39f-274b-4ef8-898e-9e246b474333.htm" target="_blank">sp_change_users_login</a>, I would take advantage of its &quot;Auto_Fix&quot; option to fix up the login referenced. </p>  <p>To resync the &quot;Admin&quot; database user with the &quot;Admin&quot; SQL Server login, I executed the following TSQL. No, you don't need to pass a password.   <p><em></em></p>   <em></em><em>EXEC sp_change_users_login 'Auto_Fix', 'admin';</em></p>  <h5><em>(1 row(s) affected)</em></h5> <em>   <h5>The row for user 'admin' will be fixed by updating its login link to a login already in existence.</h5>    <h5><strong>The number of orphaned users fixed by updating users was 1.</strong></h5> </em>  <h5><em>The number of orphaned users fixed by adding new logins and then updating users was 0.</em></h5>  <p>This SP needs to be re-executed for each user in the database that's associated with a named SQL Server Login.</p>  <p>Next, you might try ALTER USER instead. However, there does not seem to be any documented way to re-sync the principles system table and an existing login. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/attaching_to_a_different_maste.html</link>
         <guid>http://betav.com/blog/billva/2008/10/attaching_to_a_different_maste.html</guid>
         <category>Data Architectures</category>
         <pubDate>Wed, 15 Oct 2008 15:38:06 -0800</pubDate>
      </item>
      
      <item>
         <title>Sears Maintenance Agreement -- Not Much Protection, Very Little Service</title>
         <description><![CDATA[<p>My wife woke me from a sound sleep at 1AM when she discovered that the cold-water feed hose to the washer had burst. We cleaned up the water as best we could and called Sears as the washer was supposedly covered by a maintenance agreement. The washer (and dryer) were purchased at Sears in 2002 to replace machines purchased from Sears when we moved into the house many years earlier. All of these machines were under Sears Master Service maintenance agreements. Sears removed the old units and installed them--I assumed that they had replaced the water hoses that connect to the house--apparently they did not replace the cold water line (which ultimately failed). </p>  <ul>   <li>Tues Sept 15, 2008 1:10 AM: I called Sears maintenance and reached a young man who said that they could get someone out to the house by Tuesday of the <em>next</em> week (9/23). Since this was early in the morning on Tuesday, that meant we would be without the washer for at least a week. I asked to speak to a supervisor as the agent was unable to tell me how much Sears would pay for damage mitigation--but he did say &quot;everything&quot; would be paid for. I had trouble hearing the agent as there seemed to be a party going on in the background. He transferred me to a number that did not answer. At 1:50 AM I called back after the line did not answer and spoke to another agent. Same party going on. When I asked to be transferred to a supervisor, I was informed that all supervisors had gone for the day (clearly) and I should call back after 8 AM central time.</li>    <li>Call 3: Wed Sept 16, 08:30 (PST): I called again and was told that no record of my call was made and now the first available appointment was on Thursday of the next week (9/25)--10 days from the initial incident. Again, I asked to speak to a supervisor and was ultimately connected (after several calls). This person could not move up the appointment nor could she say what damage costs would be paid or how to mitigate the damage. Eventually, I was transferred around and finally got the number of a claims agent. She (Marcella Griffin) told me to take pictures, get two estimates and send them to her via email. I began scheduling appointments with carpet companies. I was told that I could not repair the water line myself as it would &quot;void the warranty&quot;. I moved all of the furniture and pulled the carpet and pad back and tried to dry it out with fans. We have no way to know how long the water had remained on the carpet (as we don't know when the water line burst) but we suspect it was wet for several hours. The underlying pad was wet for about 38&#8221; back from the wall. </li>    <li>Thursday Sept 18. Not being able to get any change in the scheduled appointment, I drove to the local Sears store in Bellevue where we had purchased the washer (and dryer). I spoke to the manager of the appliance department who was able to schedule service the next day (imagine that). I expect that having done business with the store for 40+ years might have played a role.</li>    <li>Friday Sept 19: A couple of carpet companies were able to send estimators--all of them wanted to replace all of the carpet in the room to the tune of about $1000 plus the down-time on my office. Thankfully, moisture tests indicated that the wall was not affected and it seems that most of the water spread into the office and on to the hallway floor outside the utility room. The flooring experts say we won&#8217;t know if there is damage to the hardwood floor for at least 10 days. The Sears repairman shows up very late in the day--his last call. He sold me two new hoses which he attaches to the washer. He connected the hot water line but says the blown hose is not the right type--clearly left over from the previous installation. He cannot remove the old cold-water hose as he said that &quot;I'm not a plumber&quot; and the connection was tight. After he left, I was able to remove the hose with little difficulty (I used two wrenches). I hooked up the cold water hose the repairman left attached to the washer and tried to wash a load of towels. After about 10 minutes I got a code &quot;HF&quot;. I called Sears (national) again and was told that it was easy to fix the problem. I stepped through the recommended steps with the agent but I still got the error. I asked that the repairman come back out and figure out what's wrong and said &quot;good bye&quot; once she agreed to reschedule the agent for the next day, however, I did not hang up the phone. At this point the agent said to a nearby co-worker &quot;What a <em>jerk</em>. He made me reschedule a repairman for a code HF&quot;. I suggested that she hang up the phone before cussing out the customers. I had a long conversation with her supervisor (after several more calls).</li>    <li>Saturday Sept 20: Another Sears repairman came out and discovered that the problem was that the hoses had been connected backwards by the first repairman and that the machine was not properly balanced (the feet were not set correctly). The machine is finally working correctly. </li> </ul>  <p>The washer in question was purchased in 2002. It replaced another Sears washer which was on a Master Service Agreement. It was installed by Sears and has had regular annual maintenance as well as several service calls over the years. The service tech says that the hose that failed was not the one that would have been purchased with the washer as evidenced by the fact that it&#8217;s black rubber. Be that as it may, we trusted Sears to install the right hoses and maintain them (or at least warn us that the wrong hose was attached when they visited). Any hoses that were connected to the current machine or the one the preceded it were included with the machine(s) and installed by Sears. I also suspect that because of the way that the washing machine vibrates on the wooden floor (the house is pier-and-beam construction) that the hose was subjected to some degree of tension or tugging as the machine ran. The last service tech did discover that the feet were not properly adjusted which would contribute to this excessive vibration&#8212;enough to toss a bottle of fabric softener to the floor (with messy results). </p>  <p>Since all of this took place Sears turned in a claim to Whirlpool (the washer manufacturer) who denied the claim--understandably so. They have not returned my phone calls since. The problem, in my opinion, is with Sears. Clearly, the machines were neither installed nor maintained correctly. At no time were we told that the hoses needed attention. I ended up reinstalling the carpet myself. </p>  <p>At this point I will say that I am seriously disappointed in how we as good Sears customers for over 40 years have been treated. We are getting estimates to replace Sears as our home appliance maintenance provider.Sears has lost a loyal customer. I expect they won't miss us as they go into Chapter 11 because of this kind of service. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/sears_maintenance_agreement_no.html</link>
         <guid>http://betav.com/blog/billva/2008/10/sears_maintenance_agreement_no.html</guid>
         <category>Consumer Issues</category>
         <pubDate>Tue, 14 Oct 2008 12:06:22 -0800</pubDate>
      </item>
      
      <item>
         <title>What I Believe...</title>
         <description><![CDATA[<p>Finding myself in a strange time zone (Tulsa, OK) this week and not able to sleep, I passed the time surfing the hotel's 20-some-odd TV channels. My God, there are a lot of nuts, bigots and radicals out there. I had no idea that there were so many people that think they have the answers to the country's (and world's) problems but who clearly have no clue. Yes, some seemed quite sane, but for too many of the others, I wonder where they got their education and why CNN gives them airtime. Cynically, I expect that giving airtime to these radicals sells soap. My biggest issue is with a CNN newscaster who was fear mongering like the water had risen in Atlanta to the point where it was splashing around her chin. She frothed that people all over the country were panicking as their 401Ks, retirement funds, kid's school money and life savings were dissolving before their eyes... Ah, it's no wonder ordinary people are panicked. I guess I forgot that too many people get their education from watching late-night movies. Unless the Republicans privatize Social Security, it's still paying benefits and will do so for some time--most entitlement programs are totally unaffected by the financial crisis. Yes, your 401K, SEP or IRA might have lost value, but it might also have a cash component that's drawing a low interest rate. It's time to HOLD those stocks, not sell them. Those that sell DO lose value. It's too late to sell. As far as that spare cash earning a low rate of return, it's wise (in my opinion) to move it INTO stocks that have a good long-term future. Today is not a replay of &quot;It's a Wonderful Life&quot; where banks were <em>not</em> insured.</p>  <p>On &quot;entitlement&quot; programs. Ah folks, being near retirement and having paid into Social Security since 1965 when I entered the workforce (that's 43 years), take umbrage at those that think of Social Security as some sort of welfare. Yes, (unlike government workers like Congressmen and Senators and their staff) I was forced to put part of my wages aside in anticipation of drawing the principle back out now that I'm of age. Yes, if I had invested the money myself or the government had put it in private hands I would have very little at this point and the country would be more panicky than it is.&#160; </p>  <p>What I also found in the USA Today dropped at my doorstep was a full-page ad placed by the NRA that all but fomented outright hatred of the Democratic ticket and might, just might, push some ignorant nut over the edge to take his &quot;hunting&quot; assault rife and kill someone. I hope to God that it doesn't. IMHO, the NRA should stick to making America safer for everyone--that does not mean putting weapons in the hands of every school kid, college student, teacher, lawyer, ignoramus or Supreme Court justice who feel its their right to shoot first when threatened--or when they even <em>think</em> they are threatened. </p>  <p>I also saw some very frightened people on TV who have been convinced by the passionate Republican rhetoric that Senator Obama is fundamentally evil and not to be trusted any more than some 60's radical terrorist. Some elderly woman in a Republican town hall revival got up, and in a trembling voice said Senator Obama was &quot;...a ... an <em>Arab!&quot;. </em>Yes, Senator McCain said, &quot;No, he's an honorable man&quot;, but he did not deny that Senator Obama was an Arab. He went back to his speech to further vilify Senator Obama. But what if Senator Obama is an Arab? He's not, but what if he were? What possible difference would it make? These same people think Jesus was white and probably from somewhere in Ohio. Clearly, the &quot;heartland&quot; of the country is still infected with the cancer of racism, ignorance and outright stupidity. Perhaps an Arab would know how to deal with the crisis in the mid-east better than one raised under the guidance of a Navy Admiral that was rarely home. No, the Republican apparatchik running the McCain campaign are not stupid or ignorant but they do know how to whip up the fears of these folks who were convinced to vote for the worst President in the history of the United States because he was on &quot;God's side&quot; or he had better morals than Senator Carey or Senator Gore. They're trying to do it again. Their powerful friends that circle Washington like so many remora know this too. </p>  <p>Personally, I object to the term &quot;Red State&quot; or &quot;Blue State&quot;. If you plot the distribution of Democrats and Republicans from the last Presidential election on a precinct basis, you'll see a very different picture. It makes it clear to me that too many Republican supporters are from states where education is slipping, or slanted. Several sites have re-plotted this data to better represent the data visually--to give one a clearer idea of the distribution of the voters and how really close the last election was. <a title="http://www-personal.umich.edu/~mejn/election/" href="http://www-personal.umich.edu/~mejn/election/">http://www-personal.umich.edu/~mejn/election/</a> is an example. IMHO, it shows that in rural areas, the Republicans do better. Closer to cities, universities and other places where more educated people live (and vote), the Democrats win. CNN is still using this either/or (Red or Blue) approach for some of their maps but have changed some presentations to show shades of blue and red. Too bad their commentators are so radically biased--toward insanity and hyperbole.</p>  <p>The biggest problem as I see it, is if either Senator is elected, the country will be more divided than ever--thanks to the filth, carefully couched bigotry, lies and manipulations of the truth excreted past the sphincter muscles of both parties. I <em>really </em>worry that either candidate might be assassinated even before they took office given the inflammatory rhetoric. And if McCain is assassinated we would be faced with the first President who speaks in tongues, but barely knows the names of the Supreme Court justices--a person who would be ideal for the same Republican apparatchik manipulating the campaign and who have manipulated the Presidency for eight years. </p>  <p>I think that we as a country need to regain the moral high ground. This is not to say we as individuals or as a country are better than others but we live by our faith in God--Moslem and Christian, Jew and Buddhist, and all the rest. Frankly, we're not--not enough of us at least. It's ignorant and blasphemous to insist we're the &quot;best&quot; country. We're not. We might have been, but that age has long since gone. We don't learn from history, but that's a common failing. We no longer manufacture much of what we wear, the electronics we use, and too little of what we eat. Does that makes us better? Does consuming more than any other country (more than some entire continents), being more obese, wasting more, polluting more, imprisoning more make us better? Does killing and wounding tens of thousands a year with guns make us better? Does spending billions on wars but a tiny fraction of that on peace make us better? Is a country where impaired drivers kill more than 40,000 people a year and where we lose more young people to drugs make us a better country? Does having an ever-growing teenage pregnancy rate, or being are responsible for eliminating more species than any country, or having the biggest corruption scandals make us better? Does electing the worst President in history (twice) make the United States best? Our workers kill themselves trying to be productive--and they are, but Congress has moved millions of their jobs overseas--does that make us the best or the most exploited by the wealthy? Our elected government has permitted China to get a death-grip on our economy by opening the doors wide to their often shoddy, unsafe and contaminated imports built in factories where the workers are paid like slaves (or <em>are</em> slaves pulled from their prisons). Does this make the US better? Does electing a Congress that makes anti-corruption and anti pork rules only to ignore them to benefit their political supporters and lobbyists make us a better country? Hardly. We as a country, torture, imprison and <a href="http://en.wikipedia.org/wiki/Extraordinary_rendition">extradite</a> anyone we want to off to who knows where; places where US laws can't protect them. Until extraordinary rendition and torture is stopped and those who perpetrated these crimes are themselves sent to Guantanamo or to one of the gulags the CIA has created, we cannot call ourselves a moral country. </p>  <p>It's tough (very tough) to be proud of a country that can't seem to understand that it's not a good idea to elect men and women based on the color of their skin when their heart is black. No one is perfect. Clearly, no one expects an elected official to be pure. We do expect them to be honest--more honest than me. I expect them to be smart--smarter than me. I also expect them to be a better leader than me. Electing a good-ole' boy because he or she grew up in a small town and was confronted with small-town or small state problems is not enough. Electing someone like me, like many of us, is neither wise nor a way back to solid moral leadership.</p>  <p>As I see it the problem might just boil down to a failed education system. Today, thanks to &quot;No child left behind&quot; our schools are corrupted with lesson plans purged of the curriculum that teaches our young people to think for themselves, how to tolerate each other and live in peace. Nowhere does the curriculum teach them to know the difference between the truth and a lie or the gray area in between. As a result, our uninformed adults are easily swayed by politicians and TV ads. Too many sit around coffee shops and beer halls spouting off ignorant racial slurs and bemoan the state of the country but continue to elect the same people that put the country where it is. </p>  <p>We see too many of our kids and young adults are programmed by the media for immediate gratification, to consume, to yearn for goods they can't afford so they go into debt or rebel as they try to fit into this hedonistic consumer society. Some revert to crime and others rack up monstrous debt and the banks and payday loan companies prey on their ignorance and sloth--and the government lets them. High school graduates (and some college graduates) are too ignorant to know how to balance a checkbook, fix a faucet or change a tire or keep themselves healthy without quack medicines--and the drug companies prey on their ignorance--and the government lets them. Kids are encouraged in every magazine and film to have sex but our schools, and parents don't help them learn how to keep from getting pregnant. At the same time, churches and &quot;moralists&quot; are promoting abstinence while the schools are too frightened of the churches to teach birth control. The result is more ignorant kids having ignorant kids.</p>  <p>To me, the moral high ground means that we as a country make it possible for everyone who wants an education gets one--an education free of religiously or politically-guided dictums, at least a practical education that teaches life skills. How to study, how to read a contract, how to negotiate, how to save and how to spend wisely, how to build credit, how to give a good day's work, how to get and keep a job, how to use basic hand-tools, how to fix and maintain the stuff we buy, how we as citizens got to this point in time, what mistakes we made in the past, how to share, how to build and tear down, how to be a friend or partner or lover, how to conserve, how to clean and be clean, how to play fairly, how to keep our bodies strong and healthy, how and what to eat, how to read, write and review critically, how to listen and speak intelligently, how to understand and tolerate other points of view, how to lead and how to follow, how to love and treat others with compassion, how to be generous, how to be wealthy and what to do if you're poor. We also need to teach our citizens what they need to do to makes a good, moral, strong and safe country and how the US can be that country once again. Along the way we need to teach math, science, literature, art and philosophy as well as help kids learn sports and teamwork--even those too unskilled or physically unable to play. </p>  <p>We also need to learn how to tolerate, accommodate and live alongside others that are different. In my opinion, our nation's diversity is a great strength and one of our greatest challenges. We need to learn that being straight or gay or lesbian, a man, a woman or something in-between does not have to mean anything in particular. It does not mean that individual or couple does not value the sanctity of a personal union or the devotion to naturally born or adopted children. It does not make them unfit for service or any particular job. I also does not give one the right to inflict their point of view on others who might not agree with their point of view. Yes, it's hard to tolerate someone that's different but we've fought too many wars and lost too many lives over intolerance.&#160; </p>  <p>Yes, I also believe religious education, proselytizing and indoctrination should be performed at a place of worship or in the home, not in the public schools, on the floor of Congress or in the workplace. Wanting to achieve the moral high ground means we don't imprison or persecute&#160; people for addictions, or being poor, not agreeing with our point of view or not being educated. I think we should treat the addicted, ban addictive products (or at least stop subsidizing them), discussing our differences and providing basic education to the ignorant. It also means we as a nation don't torture or kill those we imprison--regardless of the crime or how much information we think they know or how evil their crime. It means we make the nation's courts available to everyone. It means we figure out how to accept those that want to visit our country to work without criminalizing them. It means we treat everyone fairly regardless of their sex, sexual orientation,race, creed, color or the country where they were born. It means that we attempt to accept that <em>every</em> religion thinks it's the <em>only</em> true faith and they have a right to think so. Ironically, most of the world religions worship the <em>same</em> God but I believe those that don't are also children of God and should be tolerated as such. No one should force their beliefs on another--not even if the belief is &quot;democracy&quot;. It means we don't permit individuals or companies to promote, sell or distribute products that are harmful to our citizens or the citizens of any country. It means we don't impose our addictions, hatred, greed or intolerance on others. It means we tell the truth. It means we don't distort the truth or hide the facts when we're caught. It means we plead guilty when we are and innocent when we are. </p>  <p>The moral high ground also means we treat our planet with the same deference we treat our own bed. It means we don't foul its air, water or pillage its resources. It means we leave room for the plants and animals that God place here and placed in our stewardship. It means we do everything we can to leave the Earth as God gave it to use so those that inherit it (our own children) have a safe, clean, healthy place to live--and don't curse us for the filth we left behind. </p>  <p>I truly believe that if we don't come together as a country and address these problems, we <em>are </em>doomed to repeat history and follow one great civilization after another that have slipped into anarchy and destruction. The ignorant, unwashed masses are at the innocent pawns and soldiers of those who would pillage the country, sucking out it's blood to feed their greed, lust and avarice. The educated and caring are carried up into the conflagration as often they're too lazy, complacent or ineffectual to do anything about it until it's too late. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/political_insanity.html</link>
         <guid>http://betav.com/blog/billva/2008/10/political_insanity.html</guid>
         <category>Consumer Issues</category>
         <pubDate>Sat, 11 Oct 2008 14:19:38 -0800</pubDate>
      </item>
      
      <item>
         <title>Stuff I Learned this Week</title>
         <description><![CDATA[<p>INETA sent me to Tulsa Oklahoma this week for the Tulsa Techfest. My experiences with the newly renovated Crown Plaza hotel notwithstanding, it was a nice trip. It seems that the hotel decided to put me on the newly renovated top floor--where the thermostats were miss-wired--all they cold do is cool... and cool...and cool.</p>  <p>I sat through Brad McGehee's SQL DBA talks and learned (or was reminded of) a few tip that I thought I would share. Some of these tips are pretty obvious but it seems not universally applied.</p>  <ul>   <li>If your SQL Server Connection is throwing exceptions, check the NIC. As I had suspected for some time those strange &quot;network exceptions&quot; that occur from time to time on isolated machines might very well be due to having the NIC set to &quot;Auto Detect&quot;. If a down-wire component (switch, hub, router) is not set to the right (LAN global) speed, the NIC retries can bring down the connection but not deterministically--just often enough to keep you from getting any sleep.</li>    <li>Remember to defrag your hard drive before installing a new database and pre-allocate the .MDB and .LDB files used by the master and user databases <em>and</em> tempdb.&#160; This means the file system won't have to churn while fetching data. </li>    <li>Put the user, system and tempdb databases on separate physical volumes.</li>    <li>Set the Autosize option to stretch the database in fixed amounts, not a percentage (the default). This means 20% of a 5 GB database won't bring your file system to its knees.</li>    <li>Disable AutoShrink. This helps performance by not constantly checking to see if the DB can be shrunk. Note this might make sense for SQL Express where user filespace is at a premium. However, I recommend (even for SQL Express) that you plan to install a dedicated (albeit cheap) server so this is not an issue.</li>    <li>Don't use UPDATESTATISTICS <em>and</em> INDEX REBUILD/REORG--they're redundant and could actually hurt performance.</li>    <li>Never use SA for applications. Create a special account for system administrator work and protect the password(s).</li> </ul>  <p>&#160;</p>  <h3>Handling Multi-Select Parameters in Reporting Services Reports</h3>  <p>Before I left for my trip to Tulsa, I finished another article for SQL Server mag (or whoever will buy it) on handling multiple selection parameters for Reporting Services. This is a feature implemented late in the RS 2005 cycle and rebuilt for SQL Server 2008 (or it seems so as it works). The way the Report Processor accomplishes this is through use of a WHERE clause IN expression. However, it seems that you're supposed to figure this out on your own. Basically (and there's a lot more detail in the article),</p>  <ul>   <li>Create your SELECT query with a WHERE clause IN expression as shown below:</li> </ul>  <p>SELECT Col, Col2, Col3    <br />FROM MyTable    <br />WHERE myCriteriaCol IN (@InputListOfValues)</p>  <p>No, this won't work in TSQL as the IN expression does not take a parameter. However, the Report Processor knows what to do. You should also avoid use of the named parameter elsewhere in the WHERE clause. Note that the &quot;choose all&quot; option is handled by the Report Processor-generated UI.</p>  <ul>   <li>Next, using the new Report Designer's Report Data window, configure the Parameter to accept multiple selections from the user. </li>    <li>Program the parameter &quot;Acceptable Values&quot; to be populated with fixed values or values drawn from another query.</li>    <li>Set the default (if you want to). I don't recommend setting a default value for all parameters as it causes the report to be executed before the user gets to choose what they want to see in the report. No, you can't use &lt;Null&gt; as a default with a multi-select parameter.</li>    <li>Test the report</li> </ul>  <p>When the Report Processor takes off an interprets the report RDL, it <em>substitutes</em> a delimited string ( 'Red', 'Yellow', 'Blue') into the parameter placeholder in the TSQL query. This means everywhere the @InputListOfValues is referenced in my query the parameter value will be inserted. This is not how &quot;normal&quot; parameters are managed in TSQL (which eliminates the possibility of SQL Injection attacks) so there might be a concern for this type of attack. However, consider that the user is not permitted to enter a parameter here--simply chose one, many or all of the options provided.</p>]]></description>
         <link>http://betav.com/blog/billva/2008/10/stuff_i_learned_this_week.html</link>
         <guid>http://betav.com/blog/billva/2008/10/stuff_i_learned_this_week.html</guid>
         <category>Data Architectures</category>
         <pubDate>Sat, 11 Oct 2008 11:50:03 -0800</pubDate>
      </item>
      
      <item>
         <title>Accessing a Text File with OleDB</title>
         <description><![CDATA[<p>I tried to perform this fairly simple (sounding) operation this afternoon and here it is after dinner and I'm just now done. The problem is, that until you find the <em>right</em> web site with the <em>right</em> example you'll get errors like &quot;Cannot find Installable ISAM&quot; or &quot;Invalid file format&quot; or other red-herring errors that just waste your time. </p>  <p>Here is an example I'm building for my new ADO.NET 3.5 &quot;What's New For SQL Server Developers&quot; session to be given for the first time at VSLive in December. This example reads a simple comma-delimited file that contains two columns &quot;City&quot; and &quot;State&quot;. It's used to illustrate what happens when you use a Table-Valued Function (a new SQL Server 2008 feature) and pass a large rowset as the parameter (now supported in ADO.NET 3.5). </p>  <p>To start with notice the OleDb Connection object's ConnectString. </p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cnOleDb.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; _   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp; &quot;Data Source=D:\;Extended Properties=&quot;&quot;text;HDR=Yes;FMT=Delimited(,)&quot;&quot;;&quot; </p>  <p>There are a couple of syntax gotchas here that you need to watch out for. </p>  <ol>   <li>The Data Source references a <em>path, </em>not a filename. The filename you'll be reading is passed in the SELECT.</li>    <li>The Extended Properties key must be passed as a double-quoted string. Without the double quotes, I got an &quot;Cannot find Installable ISAM&quot; exceptions. Note that the delimiter used in your file should be mentioned here. Note that my file is comma delimited. I also included the column names as the first row--this is the &quot;header&quot;. </li>    <li>I also installed the 2007 Office System Driver : Data Connectivity from <a title="http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&amp;displaylang=en</a> but this might not be necessary. </li> </ol>  <p>Once the OleDb connection is open, you can create a simple SELECT to pull rows from the specified file. Note that my file has no imbedded spaces. I suspect you'll need to add brackets to the filename if it does (have spaces). </p>  <p>The rest of this example sucks the rows out of the DataReader and passes them to another ADO.NET Command that's connected to a SQL Server 2008 instance via a Structured parameter. On the other end, there's a stored procedure (AuthorsByStateList) that's programmed to accept a Table-type User Defined Type as a Parameter (set to READONLY). I return the rowset generated by the SP and display it in a grid.</p>  <p>&#160;</p>  <p>hth</p>  <p>Bill</p>  <p>--------------------------------- Code Follows ------------------------------------------------------------------------------------------------------------</p>  <p>Private Sub btnDataReader_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDataReader.Click   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dim cnOleDb As New OleDb.OleDbConnection    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Try    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cnOleDb.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; _    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp; &quot;Data Source=D:\;Extended Properties=&quot;&quot;text;HDR=Yes;FMT=Delimited(,)&quot;&quot;;&quot; </p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dim cmdOleDb As New OleDb.OleDbCommand(&quot;SELECT City, State FROM AllPublishersStateList.csv&quot;, cnOleDb)   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cnOleDb.Open()    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dim drOleDb As OleDb.OleDbDataReader    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; drOleDb = cmdOleDb.ExecuteReader </p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dim cmdResults As SqlCommand   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cmdResults = New SqlCommand(&quot;AuthorsByStateList&quot;, cn2)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; With cmdResults    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .CommandType = CommandType.StoredProcedure    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .Parameters.Add(&quot;@StateList&quot;, SqlDbType.Structured).Value = drOleDb    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .Parameters(&quot;@StateList&quot;).TypeName = &quot;dbo.StateList&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dim dtResults As New DataTable, drResults As SqlDataReader    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cn2.Open()    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ' Pass the DataReader to the query.    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; drResults = .ExecuteReader    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dtResults.Load(drResults)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DataGridView1.DataSource = dtResults    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; End With    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Catch exsql As SqlException    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MessageBox.Show(exsql.Message)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Catch ex As Exception    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Debug.Assert(False, ex.Message)    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Finally    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cnOleDb.Close()    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; cn2.Close()    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; End Try    <br />&#160;&#160;&#160; End Sub</p>  <p>&#160;</p>  <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:367f15e1-be01-4cc6-a162-a872a4e6f3d1" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Table%20Value%20Functions%20SQL%20Server%202008%20OleDb%20Text%20File%20DataReader" rel="tag">Table Value Functions SQL Server 2008 OleDb Text File DataReader</a></div>]]></description>
         <link>http://betav.com/blog/billva/2008/09/accessing_a_text_file_with_ole.html</link>
         <guid>http://betav.com/blog/billva/2008/09/accessing_a_text_file_with_ole.html</guid>
         <category>Development</category>
         <pubDate>Fri, 12 Sep 2008 19:34:00 -0800</pubDate>
      </item>
      
      <item>
         <title>Basic Relational Theory</title>
         <description><![CDATA[<p>When I got started with SQL Server (when Microsoft first picked it up), I had worked on several database systems and even written a couple. However, I had little formal &quot;relational&quot; theory education--not until I took an <em>Extended Relational Analysis</em> (ERA) course which helped make the job of designing efficient databases a lot easier. Frankly, I don't remember where this course was given or who gave it but it sure looks like the <a href="http://www.era-sql.com/#era" target="_blank">course</a> being offered by Relational Systems Corporation. I highly recommend this course to anyone building a relational database. Knowing how to normalize a new database or denormalize an existing database is only a small part of the database implementation process. ERA teaches developers how to interview a customer to determine what data needs to be stored and how it should be laid out in a database like SQL Server. The course also talked about practical reality that suggests denormalization makes sense in some selected cases (so to speak). Based on the number of questions I'm seeing lately, I think more developers (especially those who play the role of DBA) need to take the time to pick up this skill.</p>  <p>&#160;</p>  <p>&#160;</p>  <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0106d209-7caa-452b-8bd0-e6906c860fbe" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/ERA" rel="tag">ERA</a>,<a href="http://technorati.com/tags/Extended%20Relational%20Analysys" rel="tag">Extended Relational Analysys</a>,<a href="http://technorati.com/tags/SQL%20Server" rel="tag">SQL Server</a>,<a href="http://technorati.com/tags/data%20modeling" rel="tag">data modeling</a>,<a href="http://technorati.com/tags/database%20design" rel="tag">database design</a></div>]]></description>
         <link>http://betav.com/blog/billva/2008/08/basic_relational_theory.html</link>
         <guid>http://betav.com/blog/billva/2008/08/basic_relational_theory.html</guid>
         <category>Data Architectures</category>
         <pubDate>Wed, 27 Aug 2008 10:26:49 -0800</pubDate>
      </item>
      
      <item>
         <title>SQL Server 2008 SQL Server Management Studio--It&apos;s Got TSQL/Stored Procedure Debugging</title>
         <description><![CDATA[<p>The title says it all. Just experimented with this and it seems the Visual Studio (Server Explorer) Team has relented to let the SQL Server 2K8 SSMS team use this (IMHO) very useful tool. ;)</p>  <p>I also like the way that when you request to execute a SP, SSMS scripts a routine to call it. Nice touch. </p>]]></description>
         <link>http://betav.com/blog/billva/2008/08/sql_server_2008_sql_server_man.html</link>
         <guid>http://betav.com/blog/billva/2008/08/sql_server_2008_sql_server_man.html</guid>
         <category></category>
         <pubDate>Wed, 20 Aug 2008 14:56:56 -0800</pubDate>
      </item>
      
      <item>
         <title>SQL Server Enterprise Puffery</title>
         <description><![CDATA[<p>Having been part of a marketing organization within Microsoft and other companies, I can understand why some folks feel it's important to show the Rolls Royce product in its best light. However, when I see how <a href="http://www.microsoft.com/sqlserver/2008/en/us/compare-std-ent.aspx" target="_blank">SQL Server Enterprise is being marketed</a>, I'm dismayed. Consider that while Microsoft makes a bundle on SQL Server Enterprise Gold Trim Edition (a much as $25,000), they make quite a bit (if not more) on Workgroup and Standard (about $4000-$5000). And yes, even the free editions (Express and &quot;SQL Server&quot; Compact) bring in a lot of revenue indirectly. </p>  <p>IMHO, it does not serve Microsoft or make the Enterprise Edition Rolls Royce model look any more appealing&#160; by slamming the Chevrolet models. By showing that SQL Server 2008 Standard Edition does not have anything but &quot;partial/limited&quot; support for <em>all</em> of the bullet points on their <a href="http://www.microsoft.com/sqlserver/2008/en/us/compare-std-ent.aspx" target="_blank">comparison charts</a>, it makes it tougher for customers that can only afford Workgroup or Standard (or Express) from choosing it as a DBMS solution and going back to the office to defend their decision. It also makes it harder for Microsoft-loyal consultants and mentors to recommend any but the Enterprise Edition. What these simplistic charts <em>don't</em> show is that the &quot;limited&quot; features in Workgroup, Standard (and Express) are often far more than they need--but that's hard to discover reading this marketing fluff. The problem is, I know it's fluff and puffery--the customers might not.&#160; </p>  <blockquote>   <p>When I was in sales (I've worn a lot of hats over the years), one of our guiding principles was to not bash the competition (and not take checks). Apparently, Microsoft has not learned that lesson (yet). They might defend <a href="http://www.microsoft.com/sqlserver/2008/en/us/compare-oracle.aspx" target="_blank">their assessment of Oracle 11G</a> to the death, but any Oracle fan will look at this and see it like an Obama supporter sees one of the McCain attack ads. </p> </blockquote>  <p>I also waded into the &quot;SQL Server&quot; Compact edition <a href="http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx" target="_blank">marketing material</a>. Nowhere did it say this (really cool) product is <em>not </em>based on the same binaries that <em>all</em> of the other editions share. I did see where it's recommended for use on &quot;Web client &quot; implementations. It leads customers to think this &quot;embedded SQL Server database engine...&quot; is another version of SQL Server like MSDE and SQL Express but somehow more limited--it's not. </p>  <p>I also noticed that none of these pages permitted feedback or bug reporting. I guess the SQL Server marketing team is open for output only. That's sad as there are a lot of us out here that are passionate about SQL Server and only want it to be as good as it can be and <em>not</em> oversold with hyped-up ads and propaganda. </p>  <p>&#160;</p>  <p>Bill</p>  <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ad453141-b7a7-4275-9a24-fefd2d79a132" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/SQL%20Server" rel="tag">SQL Server</a>,<a href="http://technorati.com/tags/Enterprise%20Edition" rel="tag">Enterprise Edition</a>,<a href="http://technorati.com/tags/Standard%20Edition" rel="tag">Standard Edition</a>,<a href="http://technorati.com/tags/Express%20Edition" rel="tag">Express Edition</a>,<a href="http://technorati.com/tags/Compact%20Edition" rel="tag">Compact Edition</a>,<a href="http://technorati.com/tags/marketing" rel="tag">marketing</a></div>]]></description>
         <link>http://betav.com/blog/billva/2008/08/sql_server_enterprise_puffery.html</link>
         <guid>http://betav.com/blog/billva/2008/08/sql_server_enterprise_puffery.html</guid>
         <category>Everywhere/Compact</category>
         <pubDate>Tue, 19 Aug 2008 16:27:31 -0800</pubDate>
      </item>
      
      <item>
         <title>SQL Server Indexing Tips and Tricks</title>
         <description><![CDATA[<p>Paul Randall and Kimberly Tripp came to the Redmond .NET User Group last night and gave an animated talk on indexing--a subject that both of them know cold. I thought I would share a few tidbits that struck me as important. Consider that Kimberly and Paul are SQL Server experts and don't always worry about &quot;developer&quot; issues. When asked what they thought of the Entity Framework their reaction was... less than enthusiastic. If you ever get a chance to listen to this married couple speak, jump in an take a seat. They are informative and fun. </p>  <ul>   <li><strong>Optimize Row Size:</strong> SQL Server 2005 (and later) supports 8K columns. This means a row can be, well, over 80K. Does this make sense? Ah, not usually. Managing row size is as important as ever to those interested in efficiency. The trick to good performance and good use of space is to make sure that when the 8K page is filled with rows, there is little wasted space. This means that if the row size is over (about) 4K, only one row will fit on a page and (about) 4K of space is wasted on the page. A secondary problem is that the number of index pages also has to increase to address the pages. </li>    <li><strong>Selectivity</strong>: When the query optimizer (QO) studies your SQL, the degree of selectivity determines if an index should be used to perform the operation. By processing the Statistics (or &quot;stats&quot;) for an index (and an index can have from one to many (many) sets of stats), the QO can determine the selectivity. Basically, it's weighing the choice of using the index to walk through the selected rows or doing a table scan. The example Kimberly used made it pretty clear how it worked but we were surprised to learn: </li> </ul>  <blockquote>   <p>&quot;When the number of rows (selected by the query) is around 1/4 of the number of data pages in the table, the index was not useful and it is more efficient to perform a table scan to fetch the rows selected. This often turns out to be less than 5% of the rows in the table...&quot; </p> </blockquote>  <ul>   <li><strong>Rebuilding Statistics: </strong>SQL Server automatically rebuilds the statistics for you but consider that statistics are invalidated once 20% or more of the data has changed. There are times when it's important to update the statistics manually. </li>    <li><strong>Filtered Indexes: </strong>New for SQL Server 2008, permit you to add a WHERE clause to an index, thus focusing the index on the most important rows. </li>    <li><strong>Choosing the right column to index: </strong>Kimberly showed several examples of how GUID or overly long index values could materially affect performance. She suggested use of a simple identity value (incrementing integer) for clustered indexes--just avoid wide keys on clustered indexes.       <ul>       <li>&quot;The best (clustered) index is unique, narrow and static&quot; </li>     </ul>   </li>    <li><strong>Using Order By</strong>: Even when a table has a clustered index (which stores the data in physical order), SQL Server does <em>not</em> guarantee that rows will be returned in that (or any particular) order unless an ORDER BY clause is used. </li>    <li><strong>Avoiding Index and Page Fragmentation: </strong>When an index page is filled, a new page must be created and about half of the index entries on that page are copied to the new page. This (necessary) process can be minimized by setting the Fill Factor to an appropriate value when first building the table or rebuilding the index. A Fill Factor of 100 is appropriate for RO data, but 50 is a better choice for R/W data. Note that the default is &quot;0&quot; which leaves very little room for expansion. </li>    <li><strong>Page Locks:</strong> There are any number of reasons pages can be locked while performing queries or updates. Paul reminded us that if you use the NO LOCKs hint in TSQL, your data queries might return the same row(s) more than once. He suggested finding the root cause of the locking problem before resorting to different isolation levels or lock hints. </li> </ul>  <p>I asked a number of questions (as usual):</p>  <blockquote>   <p>Question: Does the QO know which data or index pages are already in the cache?      <br />Answer: No. The QO does assume that root-level index pages are cached, it does not know if leaf-level or data pages are cached. </p>    <p>Question: Since SQL Server Developer Edition implements Enterprise Edition functionality, is there a way to tell it (the SQL Server engine) to pretend to implement the Workgroup, Standard or even Express edition subset functionality? This way developers could make sure their applications were tuned for the targeted server.      <br />Answer: No--but this is a good suggestion. (But no one from the Microsoft product team was there to hear it).</p>    <p>Question: Since it takes time and resources to sort a returned rowset, does it make sense to do so when the target display element is a DataGrid that sorts the data again? Consider that best practices dictate that the number of rows returned be 500 or fewer.      <br />Answer: Probably not. </p> </blockquote>  <p>Kimberly and Paul mentioned the &quot;DTA&quot; (Data Engine Tuning Advisor) as a useful tool to determine the health of your SQL Server database.</p>  <p>&#160; <div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:24836af2-6ec0-45e1-be03-6c3dfebac80f" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/SQL%20Server" rel="tag">SQL Server</a>,<a href="http://technorati.com/tags/Indexing" rel="tag">Indexing</a>,<a href="http://technorati.com/tags/Query%20Optimizer" rel="tag">Query Optimizer</a>,<a href="http://technorati.com/tags/Fragmentation" rel="tag">Fragmentation</a>,<a href="http://technorati.com/tags/performance" rel="tag">performance</a></div> </p>  <p>References: </p>  <p><a title="http://www.sqlskills.com/blogs/kimberly/CategoryView,category,Indexes.aspx" href="http://www.sqlskills.com/blogs/kimberly/CategoryView,category,Indexes.aspx">http://www.sqlskills.com/blogs/kimberly/CategoryView,category,Indexes.aspx</a></p>  <p><a title="http://www.sqlskills.com/blogs/kimberly/2004/07/26/MSDNWebcastQAIndexDefragBestPracticesIndexUsageQuestions.aspx" href="http://www.sqlskills.com/blogs/kimberly/2004/07/26/MSDNWebcastQAIndexDefragBestPracticesIndexUsageQuestions.aspx">http://www.sqlskills.com/blogs/kimberly/2004/07/26/MSDNWebcastQAIndexDefragBestPracticesIndexUsageQuestions.aspx</a></p>  <p><a title="http://blogs.msdn.com/sqlserverstorageengine/" href="http://blogs.msdn.com/sqlserverstorageengine/">http://blogs.msdn.com/sqlserverstorageengine/</a></p>  <p><a title="http://blogs.msdn.com/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx" href="http://blogs.msdn.com/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx">http://blogs.msdn.com/sqlserverstorageengine/archive/2007/11/12/types-of-data-compression-in-sql-server-2008.aspx</a> (compression details)</p>]]></description>
         <link>http://betav.com/blog/billva/2008/08/sql_server_indexing_tips_and_t.html</link>
         <guid>http://betav.com/blog/billva/2008/08/sql_server_indexing_tips_and_t.html</guid>
         <category>Data Architectures</category>
         <pubDate>Tue, 19 Aug 2008 14:30:12 -0800</pubDate>
      </item>
      
      <item>
         <title>AdventureWorks Sample Databases</title>
         <description><![CDATA[<p>I've just discovered the Rosetta Stone for the AdventureWorks sample databases that you can install to demo or test SQL Server. It was created by <a href="http://www.pikauba.com/INDEX.htm">Pikauba Software Solutions</a> for SQL Server 2005, but I expect that many of the details are going to be similar for 2008. See <a href="http://www.pikauba.com/DBDoc/samples/adventureworks/SQLDoc.htm">this</a>.</p>]]></description>
         <link>http://betav.com/blog/billva/2008/08/adventureworks_sample_database.html</link>
         <guid>http://betav.com/blog/billva/2008/08/adventureworks_sample_database.html</guid>
         <category>Data Architectures</category>
         <pubDate>Fri, 15 Aug 2008 11:38:21 -0800</pubDate>
      </item>
      
   </channel>
</rss>
