<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>syscomments</title>
        <link>http://weblogs.sqlteam.com/chrism/Default.aspx</link>
        <description>RocketScientist's Miscellaneous Ramblings</description>
        <language>en-US</language>
        <copyright>Chris Miller</copyright>
        <generator>Subtext Version 2.5.1.0</generator>
        <image>
            <title>syscomments</title>
            <url>http://weblogs.sqlteam.com/images/RSS2Image.gif</url>
            <link>http://weblogs.sqlteam.com/chrism/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>COM+, DTC, and 80070422</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2010/02/11/COM-DTC-and-80070422.aspx</link>
            <description>&lt;p&gt;&lt;font face=""&gt;One of our  "packaged" software bits that accesses my servers is going through an upgrade right now.  Apparently this software requires DTC to be installed on my SQL Server, and able to accept remote connections.  So I look up how to do that in the knowledge base:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;http://support.microsoft.com/?kbid=555017&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;And immediately hit a roadblock.  The DTC components aren't showing up in my Component Services console.  The entire console's acting weird (well, weirder than usual) and when I go into the console and click "Options" it insists on having a timeout entered, and when I enter one, close the box, and go back, the setting's gone again and I'm required to re-enter it.  Lots of weirdness, and no DTC tab.  If you open the COM+ folders, you immediately get error 80070422.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;After a lot of searching I was looking through the Services listing on the box (after restarting DTC for the twelfth time) and saw that "Com+ System Application" was disabled.  I set it to manual, rebooted the box (test server) and everything started working.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;So, if you're trying to follow those instructions and discover that the Component Services tool is acting odder than usual, make sure that service isn't disabled.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;br /&gt;
&lt;/font&gt; &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61101.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2010/02/11/COM-DTC-and-80070422.aspx</guid>
            <pubDate>Thu, 11 Feb 2010 17:18:42 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2010/02/11/COM-DTC-and-80070422.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61101.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Star Trek Online Open Beta, Thumbnail Review</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2010/01/18/Star-Trek-Online-Open-Beta-Thumbnail-Review.aspx</link>
            <description>I figure there's got to be some crossover between the SQL Server folks and the MMO folks, so here ya go.&lt;br /&gt;
&lt;br /&gt;
I downloaded and played the new Star Trek: Online open beta this week, just to see if it was going to be worthwhile.  So here's some of my thoughts on it.&lt;br /&gt;
&lt;br /&gt;
It's an MMO, Massively Multiplayer Online game.  Typically that means you'll buy a box at your local retail outlet for $49.99 and then pay a monthly subscription fee, probably $15.  &lt;br /&gt;
&lt;br /&gt;
It's also a Role Playing Game.  I was looking forward to it, thinking it'd be a really interesting social experiment to get people to work together to run a ship.&lt;br /&gt;
&lt;br /&gt;
Wrong.&lt;br /&gt;
&lt;br /&gt;
So it's an MMO, and you're basically a one-man army, you have a ship of your very own, that you can fly using your mouse.  As long as you don't want to go upside down.  It's the Federation, son, YOU WILL FLY UPRIGHT AT ALL TIMES.  The weapons and upgrades are the predictable "more power" upgrades you'd get at the beginning of any MMO.  There seemed to be a lot more MMO jargon used in the weapon descriptions (weapons have DPS, armor/shield penetration, etc) that might be opaque to people who haven't done a lot with MMO's before.  That is likely to change, this is a beta.  &lt;br /&gt;
&lt;br /&gt;
Basically there are 2 "modes" to the game.  Ship mode, where you're flying your ship, and ground mode, where you're running around hallways as a person.  &lt;br /&gt;
&lt;br /&gt;
The ship combat was...well, boring.  Fly around (but not upside down) and shoot things.  make sure your weakest shield is facing away from your enemy.  Hold down the space bar to auto-fire.  It takes about 2 minutes to master.  The shield thing is interesting too, if by "interesting" you mean "really simple and cheesed-out".  There are 4 quadrants to your shield:  fore/aft/starboard/port.  If you fly above or below someone, it's pretty much *random* what's going to get hit.  Your energy weapons have a 200 degree firing arc, facing either forward or aft, but ignoring up and down.  Last time I checked, space combat was supposed to be 3D.  So it's a 2-d based combat where you can fly in 3 dimensions, sort of.  &lt;br /&gt;
&lt;br /&gt;
You can customize your ship pretty much on the fly.  Whenever you're out of combat, you can completely replace your weapons with any that you salvage (loot) off another ship you kill.  You know, what would take a drydock and several weeks takes 2 seconds in MMO-land.  &lt;br /&gt;
&lt;br /&gt;
Then occasionally you'll touch down on the planet and be the away team.  Now this is Borg-era Star Trek, and they let you, the captain, the person responsible for the ship, beam down into dangerous situations with the away team.  Hrm.  Yeah, so that regulation obviously didn't make it into the RPG.  When you're on the ground (or in another ship) the game acts like the world's most dumbed-down third person shooter.  Click your target, click your attack.  Repeat until target dies.  You have 3 attacks (2 shooting and a melee knockback) and that's...well, that's it.  You have medical packs too.  I never really felt in enough mortal peril to use one though.&lt;br /&gt;
&lt;br /&gt;
One of the things I like about MMO's is specialization.  I can pick a character class, learn that character class completely, and then I'll be a fairly good player.  ST:O went a different way.  You choose a character class, but I'm not exactly sure why, since no matter what class you pick you get the same skill trees, leveling track, and role.  You're the captain.  That's it.  Except when you're not the captain, and you're having to learn the roles of all the other classes so you can populate your bridge with good officers.  And then know all the other skill trees, so you can level those officers as they gain experience.&lt;br /&gt;
&lt;br /&gt;
It's like they took the worst parts of most RPG's (having to micro-manage a team of NPC's), the worst space flight game ever, and a really bad 3rd person shooter and crammed them into one package.&lt;br /&gt;
&lt;br /&gt;
So far: Bad character management, bad space flight, and bad third person shooter.  So how's the social part?&lt;br /&gt;
&lt;br /&gt;
Um.  Yeah.  There's a chat box, and it scrolls the Star Trek equivalent of Barrens chat.  People asking where different things are.  Someone actually (jokingly) asked where Mankrik's Wife was (a WoW joke) just to make the scene complete.  You *can* team up and there's a system called "Fleets" which look like a guild based system.  I didn't stick around long enough, the game mechanics were, frankly, boring me to tears.  &lt;br /&gt;
&lt;br /&gt;
The graphics are...fine.  I guess.  I have a midrange video card, there was no video lag (lots of server lag though).  Everything looked pretty enough, which for an MMO means "about 2 generations behind any other rendering system".  Phasers look like phasers, photon torpedos look like photon torpedos.  Nothing earth-shatteringly pretty or mind-numbingly awful.&lt;br /&gt;
&lt;br /&gt;
There are lots of loading screens.  In the WoW universe you can travel from the far southern end of the world to nearly the northern tip of the world with no loading screens and smooth transitions.  If you attempted to walk that distance it would take probably a couple of hours, which is why there are lots of fast-travel options in WoW.  There were loading screens inside ST:O within the same building.  Small building.  An area that took 30-45 seconds to run across would have a loading screen to get to it.  &lt;br /&gt;
&lt;br /&gt;
There were lots of glitches, which I mainly account to server lag.  I'm not sure that a shaky launch is going to do these guys any favors though when it comes to winning enough market share to be viable.  The only thing that Age of Conan did right was get have stable servers at launch and through beta. ST:O's operations people really don't understand how to seed torrents, it took me about 2 days to download the client software through their system, and the torrent wasn't seeded at all before it went live.  You know it's going to be fun when uTorrent says under "estimated time" 3y3d.  &lt;br /&gt;
&lt;br /&gt;
There were running glitches (run along, suddenly you rewind to 50 yards back down the hall), ship transition glitches (you beam up and you see your character running in space).  Ship flight glitches (you'd rewind to about 50...uh...probably meters back sometimes).  I'm going to attribute most of the glitchiness to the beta quality server software.  That's fine, that's why you have betas.  The gameplay mechanics, however, were just awful, and that's something you do in design, not in beta.&lt;br /&gt;
&lt;br /&gt;
A pretty horrible game so far.  I hope it gets better, but I'm not going to be buying it.&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61083.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2010/01/18/Star-Trek-Online-Open-Beta-Thumbnail-Review.aspx</guid>
            <pubDate>Tue, 19 Jan 2010 02:13:41 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2010/01/18/Star-Trek-Online-Open-Beta-Thumbnail-Review.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61083.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SQL Server 2005 SP3 install issue</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/12/29/SQL-Server-2005-SP3-install-issue.aspx</link>
            <description>&lt;p&gt;So I got this message:&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;MSP Error: 28017  SQL Server Setup cannot write to removable media. To continue, specify a directory on a hard disk attached to the computer where SQL Server will be installed.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;And I'm installing to locally attached storage.  After about 20 minutes of cursing, rebooting, and cursing some more, I went to My Computer and disconnected all my network drives.  My logon script helpfully maps network drives, I'd forgotten about them since mapping drives sucks and I don't ever use them (UNC paths for life!).  So I unmapped them and suddenly it worked.&lt;/p&gt;
&lt;p&gt;Stupid bug, bad error message, and stupid logon script.&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61077.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/12/29/SQL-Server-2005-SP3-install-issue.aspx</guid>
            <pubDate>Tue, 29 Dec 2009 14:55:38 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/12/29/SQL-Server-2005-SP3-install-issue.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61077.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Installing SQL Server 2005 on a Windows 2008 R2 Cluster</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/12/28/Installing-SQL-Server-2005-on-a-Windows-2008-R2-Cluster.aspx</link>
            <description>&lt;p&gt;I just had an interesting issue with an installation I thought I'd share.  I was installing SQL Server 2005 on a Windows Server 2008 R2 cluster.  The cluster validates properly (use the cluster validation tool in 2008 R2, it will save you problems) and failed over properly prior to installation.  When installing SQL Server 2005, I got through putting in all the information and when it came time to actaully install the software got a "User has cancelled the installation" error, and a notification to check the logs.  The logs said:&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Waiting for actions from remote setup(s)&lt;br /&gt;
Breaking wait state and aborting package due to cancel code received: 1602&lt;br /&gt;
Remote setup(s) are ready&lt;br /&gt;
Notify package action is determined: 1602&lt;br /&gt;
        Error Code: 0x800700e9 (233)&lt;br /&gt;
Windows Error Text: No process is on the other end of the pipe.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;  Source File Name: remotemessagelib\overlappedpipelistener.cpp&lt;br /&gt;
Compiler Timestamp: Fri Jul 29 01:13:51 2005&lt;br /&gt;
     Function Name: sqls::OverlappedPipeListener::writePipe&lt;br /&gt;
Source Line Number: 294&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The installation was failing when it attempted to attach to the other cluster node.  The resolution is:&lt;/p&gt;
&lt;p&gt;1.  Make sure the task scheduler service is running on the remote cluster node.  If the task scheduler service is a cluster resource, fail that resource over to the remote node (the latter was not an issue on my side, I've read questions from people asking about it though).&lt;/p&gt;
&lt;p&gt;2.  Go into your registry (insert standard "don't ever edit the registry" disclaimer here) and go to HKLM/System/CurrentControlSet/Control/LSA and change the "disabledomaincreds" from 1 to 0 on EACH CLUSTER NODE and then reboot BOTH CLUSTER NODES.&lt;/p&gt;
&lt;p&gt;Then the install worked like a champ.&lt;/p&gt;
&lt;p&gt;Big thanks to MS Sql PSS for getting this fixed quickly.  &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61076.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/12/28/Installing-SQL-Server-2005-on-a-Windows-2008-R2-Cluster.aspx</guid>
            <pubDate>Mon, 28 Dec 2009 20:15:35 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/12/28/Installing-SQL-Server-2005-on-a-Windows-2008-R2-Cluster.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61076.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Left-duplicate indexes</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/11/12/Left-duplicate-indexes.aspx</link>
            <description>&lt;p&gt;At Kim Tripp's PASS session on indexing and covered indexes, she more-or-less proved that wider is better for indexes, within reason and searchability.  It's better to have the index (Column1, Column2, Column3) than the index (Column1) and then a (Column1, Column2) and then a (Column1, Column2, Column3).  And the first two of that set are redundant and don't provide any significant performance improvement over a wider index in most applications.&lt;/p&gt;
&lt;p&gt;Finding cases where you have multiple indexes like that isn't a trivial problem.  Here's the answer I came up with.  This particular query finds cases of a (Column1, Column2....ColumnN) with a (Column1) but it could be pretty easily modified to do a multiple left side key required.  It's all filtering, just add [3] and the appropriate group by/max and you're set.  And once again, yes, you could do this without a temp table, but the temp table's kind of interesting on its own.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;select&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; index_id&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [6]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;      &lt;span style="COLOR: blue"&gt;into&lt;/span&gt; #TableList&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;      &lt;span style="COLOR: blue"&gt;from &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;select&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;object_name&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;object_id&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;index_id&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; key_ordinal&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Column_ID &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;from&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: green"&gt;sys&lt;/span&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: green"&gt;index_columns&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; SourceTable&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: gray"&gt;pivot&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;max&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;column_id&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;for&lt;/span&gt; key_ordinal &lt;span style="COLOR: gray"&gt;in&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;[1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[6]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; PivotTable&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;select&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;max&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;[2]&lt;span style="COLOR: gray"&gt;),&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;count&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;from&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; #TableList&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;group&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;by&lt;/span&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;having&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: fuchsia"&gt;count&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;gt;&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-SIZE: 10pt"&gt;order&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: blue"&gt;by&lt;/span&gt; 1&lt;/span&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61053.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/11/12/Left-duplicate-indexes.aspx</guid>
            <pubDate>Thu, 12 Nov 2009 17:05:41 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/11/12/Left-duplicate-indexes.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61053.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Finding tables with no unique indexes</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-tables-with-no-unique-indexes.aspx</link>
            <description>&lt;p&gt;Same vendor, different issue.  How many tables in the database aren't really tables, but are actually just 2 dimensional data stores of unknown quality?  Tables should have a unique index.  Of some kind.  If it's a formal PK, or a unique constraint or a unique index, it needs have *something* unique enforced, or it's not really a relational table, but is instead a pile of unknown quality data.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; so&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;from&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: green"&gt;sys&lt;/span&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: green"&gt;objects&lt;/span&gt; so&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: gray"&gt;left&lt;/span&gt; &lt;span style="COLOR: gray"&gt;join&lt;/span&gt; &lt;span style="COLOR: green"&gt;sys&lt;/span&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: green"&gt;indexes&lt;/span&gt; si&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;on&lt;/span&gt; si&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;object_id&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; so&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;object_id&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: gray"&gt;and&lt;/span&gt; si&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;is_unique &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;where&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; si&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;index_id &lt;span style="COLOR: gray"&gt;is&lt;/span&gt; &lt;span style="COLOR: gray"&gt;null&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: gray"&gt;and&lt;/span&gt; so&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;type_desc &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: red"&gt;'user_table'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;order&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;by&lt;/span&gt; 1&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;font face=""&gt;&lt;/font&gt; 428 tables with no unique indexes.  This goes with the 36 completely duplicated indexes and 50+ partially duplicated indexes.  &lt;/p&gt;
&lt;p&gt;And by the way, I checked.  is_primary_key implies is_unique, and is_unique_constraint implies is_unique.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61051.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-tables-with-no-unique-indexes.aspx</guid>
            <pubDate>Wed, 11 Nov 2009 20:30:13 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-tables-with-no-unique-indexes.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61051.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Finding duplicated indexes</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-duplicated-indexes.aspx</link>
            <description>&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;font size="3"&gt;So I wanted to start being a bit more aggressive about index management.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Specifically, I want to be able to find duplicated indexes inside of one of my vendor databases.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;So (1) I can make fun of them even more than I do already, and (2) so I can give them a script of all their issues that they might be able to resolve them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;font size="3"&gt;Here’s what I came up with.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Only really works if you have 19 or fewer columns per index.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Why 19?&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;I got tired of typing there.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;You can write this up as a code generator if you don’t like it.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;There are better ways to do this, but the way I’m doing it you can look at the temp table and use it to find the more subtle problem of a table with two indexes which are subsets of each other, which are usually but not always redundant.&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;Anyway, here ya go.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;drop&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;table&lt;/span&gt; #tablelist&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; index_id&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [6]&lt;span style="COLOR: gray"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;into&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; #TableList&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;from &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;select&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;object_name&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;object_id&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; index_id&lt;span style="COLOR: gray"&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;key_ordinal&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Column_ID &lt;span style="COLOR: blue"&gt;from&lt;/span&gt; &lt;span style="COLOR: green"&gt;sys&lt;/span&gt;&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: green"&gt;index_columns&lt;/span&gt;&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; SourceTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: gray"&gt;pivot&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;max&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;key_ordinal&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;for&lt;/span&gt; column_id &lt;span style="COLOR: gray"&gt;in&lt;/span&gt;&lt;span style="COLOR: blue"&gt; &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;[1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [6]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1in; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: gray; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;)&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; PivotTable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;select&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [6]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;from&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; #TableList&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;group&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;by&lt;/span&gt; oname&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [1]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [2]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [3]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [4]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [5]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [6]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[7]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [8]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [9]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [10]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [11]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [12]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [13]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [14]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;[15]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [16]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [17]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [18]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [19]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;having&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: fuchsia"&gt;count&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;gt;&lt;/span&gt; 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 10pt" class="MsoNormal"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-no-proof: yes"&gt;order&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;by&lt;/span&gt; 1&lt;/span&gt;&lt;/p&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/61050.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-duplicated-indexes.aspx</guid>
            <pubDate>Wed, 11 Nov 2009 15:45:40 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/11/11/Finding-duplicated-indexes.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/61050.aspx</wfw:commentRss>
        </item>
        <item>
            <title>How to specify a Windows Authentication user in T-SQL</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/08/18/How-to-specify-a-Windows-Authentication-user-in-T-SQL.aspx</link>
            <description>This may only be a SQL Server 2005 problem.  Comments either way please.&lt;br /&gt;
&lt;br /&gt;
Only one of these works:&lt;br /&gt;
grant execute on stored_proc to [domain1\ismom]&lt;br /&gt;
grant execute on stored_proc to 'domain1\ismom'&lt;br /&gt;
grant execute on stored_proc to '[domain1\ismom]'&lt;br /&gt;
&lt;br /&gt;
Only one of these Execute As User works:&lt;br /&gt;
&lt;br /&gt;
execute as user = 'domain1\ismom'&lt;br /&gt;
exec master..xp_sqlagent_enum_jobs 0, 'sys-admin'&lt;br /&gt;
revert&lt;br /&gt;
&lt;br /&gt;
execute as user = '[domain1\ismom]'&lt;br /&gt;
exec master..xp_sqlagent_enum_jobs 0, 'sys-admin'&lt;br /&gt;
revert&lt;br /&gt;
&lt;br /&gt;
execute as user = [domain1\ismom]&lt;br /&gt;
exec master..xp_sqlagent_enum_jobs 0, 'sys-admin'&lt;br /&gt;
revert&lt;br /&gt;
&lt;br /&gt;
The execute as user doesn't give you a syntax error, by the way.  Instead it goes all cryptic:&lt;br /&gt;
Msg 15404, Level 16, State 11, Line 1&lt;br /&gt;
Could not obtain information about Windows NT group/user '[domain1\ismom]', error code 0x534.&lt;br /&gt;
&lt;br /&gt;
Some consistency here would be nice.  Usable error messages are a plus also.&lt;br /&gt;
&lt;br /&gt;
For grant execute, use the bare brackets [domain1\ismom]&lt;br /&gt;
For Execute As User, use the quotes &lt;span style="font-weight: bold;"&gt;without&lt;/span&gt; brackets: 'domain1\ismom'&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60985.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/08/18/How-to-specify-a-Windows-Authentication-user-in-T-SQL.aspx</guid>
            <pubDate>Tue, 18 Aug 2009 16:26:10 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/08/18/How-to-specify-a-Windows-Authentication-user-in-T-SQL.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60985.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Someone might not understand how CASE works....</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/05/05/Someone-might-not-understand-how-CASE-works.aspx</link>
            <description>    case when StatusFlag = 'LWCA' and TransactionType &amp;lt;&amp;gt; 'W' then 'Layw Cancel'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'LWCA' and TransactionType = 'W' then 'Warranty Cancel'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'WAPK' then 'Warranty Pickup'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'LWSE' and TransactionType &amp;lt;&amp;gt; 'W' then 'Layaway'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'LWSE' and TransactionType = 'W' then 'Warranty Setup'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'SALE' and isnull(HV.QTY,0) &amp;gt; 0 and layawaynumber is null then 'Sale'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'SALE' and isnull(HV.QTY,0) &amp;gt; 0 and NOT layawaynumber is null then 'Lwy Pickup'&lt;br /&gt;
        ELSE&lt;br /&gt;
    case when StatusFlag = 'SALE' and isnull(HV.QTY,0) &amp;lt;= 0 then 'Return'&lt;br /&gt;
    End End End End End End End End,&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60905.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/05/05/Someone-might-not-understand-how-CASE-works.aspx</guid>
            <pubDate>Tue, 05 May 2009 14:35:14 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/05/05/Someone-might-not-understand-how-CASE-works.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60905.aspx</wfw:commentRss>
        </item>
        <item>
            <title> What's the deal with SQL Server 2008 implementation?</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/04/17/Whats-the-deal-with-SQL-Server-2008-implementation.aspx</link>
            <description>What's the deal with SQL Server 2008 implementation?&lt;br /&gt;
&lt;br /&gt;
I was talking with a Microsoft representative at PASS and he asked me about our SQL Server 2008 implementation plan.&lt;br /&gt;
&lt;br /&gt;
"I don't have one."&lt;br /&gt;
&lt;br /&gt;
"Why not?" astonished look.&lt;br /&gt;
&lt;br /&gt;
"It's up to my ISV's to certify their applications, and they're not doing it.  I have software on SQL Server 2000 still, the ISV's aren't upgrading it and won't support it if I upgrade."&lt;br /&gt;
&lt;br /&gt;
Another astonished look.&lt;br /&gt;
&lt;br /&gt;
"So what can we do to fix that?" he asked.&lt;br /&gt;
&lt;br /&gt;
"I don't know."&lt;br /&gt;
&lt;br /&gt;
I didn't know then, I have a few ideas now.&lt;br /&gt;
&lt;br /&gt;
The problem is that the people who write software that work with SQL Server and then sell that software (I'm not talking about things like SQLBackup or Hypebac.  I'm talking about ERP systems, line-of-business systems, and so on) don't have incentive to certify that their applications work against the new SQL Server versions, that they don't have the QA resources to do the certification, and they don't make any money providing us with an upgrade because it's not a major release for them.&lt;br /&gt;
&lt;br /&gt;
That's a problem.  That's why I still have about a half dozen SQL Server 2000 boxes, and exactly 0 Sql Server 2008 implementations.&lt;br /&gt;
&lt;br /&gt;
What's the solution?&lt;br /&gt;
&lt;br /&gt;
Automated QA.  Which has its own set of problems, the chief among which is that the licensing is EXTREMELY expensive.  Like "Go buy yourself a nice car.  Italian car.  The kind that gets to kick off &lt;a href="javascript:void(0);/*1239985706417*/"&gt;Top Gear &lt;/a&gt;every week."  That expensive.&lt;br /&gt;
&lt;br /&gt;
And that's outside the reach of ISV's.  They drive nice Hondas, not supercars.&lt;br /&gt;
&lt;br /&gt;
So, how do we fix that?  Well, the Automated QA vendors I've worked with in the past have had a business model of selling a few really expensive licenses to very large companies.  This keeps the marketing costs low (smaller number of CIO's to take to golf outings), the support costs low (when you only sell a few licenses it limits the number of simultaneous calls you can get) and keeps the software out of the hands of a lot of people who really need it.&lt;br /&gt;
&lt;br /&gt;
This is a situation Microsoft has been in (and been victorious in) before.  IBM had the same business model with their mainframes.  Oracle had (still has) the same model for selling thier DBMS.  In nearly every market with this business model in the personal computing space, Microsoft has built a product, sold it at a reasonable cost, and forced the existing market leaders to rethink their strategy or perish.  And made italian supercar level money by selling to hundreds of customers instead of a dozen.&lt;br /&gt;
&lt;br /&gt;
So, if Microsoft wants to increase SQL Server 2008 licenses, they need to enter the automated software QA space.  Then start applying pressure to ISV's to adopt automated testing procedures with Microsoft software, because it'll reduce their costs without breaking the bank.  The pressure doesn't need to be negative pressure, more of "hey, here, have a huge discount on this software if you'll implement it," or "This is part of your Partner-level benefits."  Build a great product, support it, and sell it.  The big vendors in this space can already show a good ROI, if the initial cost of entry was drastically reduced then the ROI would be even bigger.&lt;br /&gt;
&lt;br /&gt;
The ISV's build testing scripts for their applications so they can test all their minor changes.  Then along comes a new version of SQL Server, and the certification process is "run the same script we do for a bug fix, just point it at a SQL Server 2008 box".   It certifies, or it has a few little glitches that get cleaned up, and the product ships.  Way cheaper and faster.&lt;br /&gt;
&lt;br /&gt;
Then the ISV's are happy because they've got better software from having better processes, Microsoft is happy because the ISV's are making better stuff, they get to sell more boxes of software, and people will start upgrading their back office components, and finally the folks like me are happy because we get to consolidate some versions together more quickly.&lt;br /&gt;
&lt;br /&gt;
Faster please.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60896.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/04/17/Whats-the-deal-with-SQL-Server-2008-implementation.aspx</guid>
            <pubDate>Fri, 17 Apr 2009 16:28:37 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/04/17/Whats-the-deal-with-SQL-Server-2008-implementation.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60896.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Aggregate Functions</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/04/16/Aggregate-Functions.aspx</link>
            <description>I've run into this before, I ran into it today, and I'll probably run into it again.&lt;br /&gt;
&lt;br /&gt;
Why isn't there an aggregate function that concatenates strings?&lt;br /&gt;
&lt;br /&gt;
Besides the obvious "string don't get that big" (which I'd manage by manipulating my group by to fit) why not?&lt;br /&gt;
&lt;br /&gt;
Something like:&lt;br /&gt;
&lt;br /&gt;
CONCAT_AGG(column, separator)&lt;br /&gt;
&lt;br /&gt;
Where separator is a varchar that determines what goes between each string (space, comma-space, whatever).&lt;br /&gt;
&lt;br /&gt;
This would be pretty dang handy.&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60895.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/04/16/Aggregate-Functions.aspx</guid>
            <pubDate>Thu, 16 Apr 2009 16:25:15 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/04/16/Aggregate-Functions.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60895.aspx</wfw:commentRss>
        </item>
        <item>
            <title>So, what do you call a Santa that can turn into a wolf?</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/04/07/So-what-do-you-call-a-Santa-that-can-turn.aspx</link>
            <description>A Wereclaus.&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60889.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/04/07/So-what-do-you-call-a-Santa-that-can-turn.aspx</guid>
            <pubDate>Tue, 07 Apr 2009 16:00:29 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/04/07/So-what-do-you-call-a-Santa-that-can-turn.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60889.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Hyperbac Followup</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/Hyperbac-Followup.aspx</link>
            <description>This is, specifically, a followup to &lt;a href="javascript:void(0);/*1235403143657*/"&gt;http://weblogs.sqlteam.com/chrism/archive/2008/11/25/Hyperbac-anyone.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Been using the software for 2 months, and it works very well.  I have one issue on one server (a development box) that their support team is aware of and has been very helpful with tracking down.  Otherwise, it works, it works well, and I can throw a simple little executable at my ISV's when they need database backups to diagnose problems.&lt;br /&gt;
&lt;br /&gt;
It works well, it's simple, and it's reliable.  It hasn't failed, and hasn't glitched (OK, except for the dev box, but *everything* glitches on dev boxes).&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60851.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/Hyperbac-Followup.aspx</guid>
            <pubDate>Mon, 23 Feb 2009 15:34:51 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/Hyperbac-Followup.aspx#feedback</comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60851.aspx</wfw:commentRss>
        </item>
        <item>
            <title>My, isn't *THAT* intuitive.</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/My-isnt-THAT-intuitive.aspx</link>
            <description>I still have a SQL Server 2000 server.&lt;br /&gt;
&lt;br /&gt;
Don't blame me, blame my ISV.  The upgrade to their software to support SQL Server 2005 is coming out in August.  Of 2006.&lt;br /&gt;
&lt;br /&gt;
Anyway.  I still have to support this thing.  And it's a fairly large database, with some sensitive information in it.  And we have on call developers who need to support some of the jobs running.  They needed access to be able to view jobs and job history.  So I went in and added them to the SQLAgentOperator role...oh uh...wait.  There isn't one in SQL Server 2000.  So I gave the developers DBO to MSDB.  Didn't work.&lt;br /&gt;
&lt;br /&gt;
So I did a google search, and came across this:&lt;br /&gt;
http://www.sql-server-performance.com/faq/sqlagent_scheduled_jobs_p1.aspx&lt;br /&gt;
&lt;br /&gt;
You have to add them to the TargetServers role.  &lt;br /&gt;
&lt;br /&gt;
Let me repeat that.  I have to put my developers into hte TargetServers role.  &lt;br /&gt;
&lt;br /&gt;
Yup.  That's totally intuitively obvious.&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60850.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/My-isnt-THAT-intuitive.aspx</guid>
            <pubDate>Mon, 23 Feb 2009 15:31:23 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/02/23/My-isnt-THAT-intuitive.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60850.aspx</wfw:commentRss>
        </item>
        <item>
            <title>SQL 2005 and Deadlocks</title>
            <link>http://weblogs.sqlteam.com/chrism/archive/2009/02/04/SQL-2005-and-Deadlocks.aspx</link>
            <description>So I've got a deadlock issue I'm having trouble tracking down.&lt;br /&gt;
&lt;br /&gt;
I have the deadlock tracking trace flag turned on, and this is the part I'm having trouble with:&lt;br /&gt;
KEY: 5:72057594325499904&lt;br /&gt;
&lt;br /&gt;
From everything I've found, the layout of that item is supposed to be:&lt;br /&gt;
KEY:  [Db_ID]:[Object_ID]:[Index_ID]&lt;br /&gt;
&lt;br /&gt;
That 7205... number is way too large to be an object_id (those are all type int, and that number is a bigint).  &lt;br /&gt;
&lt;br /&gt;
Any idea what's going on?&lt;br /&gt;
&lt;br /&gt;
Oh, and the line number part of the deadlock message leads me to believe the deadlock is happening in a comment.  It says line 9, there's 20 lines of comment block at the top of the proc.&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
&lt;br /&gt;
So I figured it out.&lt;br /&gt;
&lt;br /&gt;
That's a partition_ID.  You can cross-reference it to an object_id in sys.partitions.&lt;br /&gt;
&lt;br /&gt;
It's the stupid sequencing thing this stupid vendor is using instead of using identities like any sane person.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://weblogs.sqlteam.com/chrism/aggbug/60836.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Miller</dc:creator>
            <guid>http://weblogs.sqlteam.com/chrism/archive/2009/02/04/SQL-2005-and-Deadlocks.aspx</guid>
            <pubDate>Wed, 04 Feb 2009 16:42:21 GMT</pubDate>
            <comments>http://weblogs.sqlteam.com/chrism/archive/2009/02/04/SQL-2005-and-Deadlocks.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://weblogs.sqlteam.com/chrism/comments/commentRss/60836.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>