THE SQL Server Blog Spot on the Web

Welcome to SQLblog.com - The SQL Server blog spot on the web Sign in | Join | Help
in Search

Aaron Bertrand

  • Why is IntelliSense not working?

    I see people complain that IntelliSense (new in SQL Server 2008's Management Studio) is not working.  Most of the time, it is for one of two reasons:

    1. The object is not in the local IntelliSense cache, since it was created recently.  You can fix this easily by going to Edit > IntelliSense > Refresh Local Cache, or CTRL+SHIFT+R.
       
    2. The query window is connected to a downlevel server (e.g. SQL Server 2005), where IntelliSense does not function (see Connect #341872 from Whitney Weaver for more info and LOTS of community feedback on this decision :-)).

    Little did I know, there are a number of other situations where IntelliSense will not function correctly (e.g. when you have switched to SQLCMD mode).  I was also unaware, until today, that Alan Brewer at Microsoft created a Books Online page that documents these and other cases:

    When IntelliSense Is Unavailable

    So many thanks for this document Alan, as I think it will help others as well.  What I'm still trying to figure out, though, is why there is a SQL Server 2005 version of the page, since IntelliSense does not exist in Management Studio for 2005, nor does it work in 2008 against 2005 instances.


  • The Best Thing I've Learned at PASS

    I have attended PASS for several years, and discovered at my very first event that this is an extremely valuable conference to attend. The actual technical tidbits I’ve learned from attending sessions and having conversations with my peers, PASS officials and Microsoft employees alike have been priceless, but far too many to mention. Besides, how could I pick one item among so many?

    To be quite honest, the best thing I’ve learned has not been anything technical at all, but rather the mere and simple fact that community is king. Like many I’m sure, I went for a long time in my career believing that if the documentation couldn’t help, I’d have to figure it out for myself. Knowing that I can learn from others, and that – even more astoundingly – others can learn from me, has been cemented by PASS like no other event in my life. The best thing about this annual gathering is that the relationships and camaraderie persist far beyond the time boundaries of the conference itself, and continue today to give me that feeling of belonging to something special. And that, my friends, is far more valuable than realizing the meaning behind that obscure trace flag or DMV column.


  • Connect digest : 2009-06-27

    It was slim pickings this week.  One item I thought deserved some attention was one that was filed a year ago today, and the rest are collectively related items involving ...

    =========================

    Clustering Enhancements

    #353984 : Add support for multi-subnet clusters

    This is one that has been lacking since SQL Server first started supporting clusters: clustering across subnets.  Obviously it can be desirable to have failover events cross rack or even data center boundaries.  I am sure there are plenty of other clustering enhancements deserving of more attention; if you know of any, please submit them!

    =========================

    SSMS and its finicky grid

    The rest of the items I am offering up today involve the grid output in SSMS.  I wrote about my displeasure the other day, when the single value I was looking for was consistently being truncated and obscured due to poor decisions being made by SSMS about how to present grid results.  I can also show cases where the exact same query, during the same batch, will yield different column widths in subsequent (but identical) resultsets:

    Wacky SSMS grid results 

    So, here are four items related to this problem: 

    #356926 : SSMS : Grid alignment, column width seems arbitrary

    #230912 : Column names in grid mode is incorrectly truncated when font size is 8 or less

     

    =========================


  • What to do when Management Studio hangs?

    I have had a few occasions where I have been using Management Studio, and am suddenly and bluntly informed by Windows that I am demanding too much of the application.  Windows is probably right; and it is only partially due to the fact that SSMS can be a resource hog at times, and partially due to the fact that I could have 30 or 40 active query windows at any one time.  So what ends up happening is the app stops responding, and "(Not Responding)" gets painted onto the title bar.  The temptation is usually to just kill the application via Task Manager, but this can be bad for a variety of reasons; most importantly:

    1. Do you really know what active queries are running, and what will happen if you forcibly shut the application down?  There can be a big difference between killing an app with idle query windows, and killing an app that is currently in the middle of various transactions on several servers.
       
    2. While SSMS has adopted nice Office-esque auto-save and recovery features, how much do you trust them?  I am a little too paranoid to take them for granted.

    So, instead of blindly killing the application and exposing myself to these risks, I typically open a new SSMS window, and then try to figure out through that instance of the app which (if any) of my queries are making the original instance hang.  In a lot of cases, it is none of them, but I have used this technique to free up SSMS and make it get out of its (Not Responding) state. First, I run this query (making sure to set results to text using Ctrl+T):

    SELECT 
      
    COALESCE
      
    (
      
    QUOTENAME(DB_NAME(t.[dbid]))
       + 
    '.' + QUOTENAME(OBJECT_SCHEMA_NAME(t.objectid, t.[dbid]))
       + 
    '.' + QUOTENAME(OBJECT_NAME(t.objectid, t.[dbid])),
       
    '/*
    t.[text] '
    */'
    '
      -- DBCC INPUTBUFFER(' 
    RTRIM(s.session_id) + ')'
      
    ) + '
      -- current task : '
      
    COALESCE(r.[status] ',' r.command'?') + '
      -- % complete : '
      
    COALESCE(RTRIM(r.percent_complete), 'N/A') + '
      -- KILL ' 
    RTRIM(s.session_id)
    FROM
       
    sys.dm_exec_sessions AS s
    LEFT OUTER JOIN
       
    sys.dm_exec_requests AS r
       
    ON s.session_id r.session_id
    OUTER APPLY
       sys.dm_exec_sql_text(r.[sql_handle]AS t
    WHERE
       
    s.[host_name] '<my workstation name>'
       
    AND s.session_id <> @@SPID;

    Note the OBJECT_SCHEMA_NAME() function and the database_id parameter for the OBJECT_NAME() function were added in SQL Server 2005 SP2. Hopefully you're there or above, right?  :-)

    What this gives me is a list of sessions that are currently connected from my workstation.  I take these results and paste them into the top pane of a query window.  Now I can scroll through and, for each session, it tells me either:

    1. the exact procedure or function that is being executed;
    2. if 1. is unknown (e.g. ad hoc SQL), it gives the entire text from sys.dm_exec_sql_text;
    3. if 1. and 2. are unknown, it provides a DBCC INPUTBUFFER statement that I can use to try and figure it out myself.

    In addition, it provides the percent_complete from sys.dm_exec_requests, if the request is active and the statement is one that is measured, and it provides a KILL statement that I can highlight and execute.  After each kill, I bring focus back to the hanging copy of SSMS to see if responsiveness has been restored.  Typically this is quick work, as most of the sessions are inactive and the hang is within SSMS itself.  In fact in almost every case so far, this has been SQLPrompt or the native IntelliSense being frozen due to obtaining or updating metadata.  The bonus here is that KILL only severs the connection, and your query windows remain intact.  So when you get to the culprit you can go in, save your query windows, and then consider closing SSMS (or even rebooting) and starting over again.

    There are three obstacles that can reduce the effectiveness of this approach: (a) you can have query windows and Object Explorer / Object Explorer Details sessions established on many remote servers, so it may take several iterative tries to pinpoint the session(s)/server(s) hanging SSMS; (b) if you are like me, and occasionally let the number of query windows get out of hand, it will be a long process; and, (b) the server could be hanging as well, in which case your new instance of SSMS is not going to be able to do anything either.  This is where using a dedicated Administrator Connection (DAC) may come in handy.

    In any case, hopefully this approach will help you at some point, should you ever find yourself in this situation.

    Over on my company web site today, I wrote about some general ideas for speeding up Management Studio (when it's not hanging).


  • An annoyance with Management Studio

    I am probably speaking out of turn here (it is not Saturday, after all), but I was really annoyed with this SSMS grid problem today, and had to get it off my chest.  I was waiting for a log restore to complete, and periodically running sp_who2 to determine IO completed thus far.  I could have written a query against the DMVs but might have been hit with the same issue.  Essentially, the problem is that the grid alignment in the results pane of SSMS is horrible and often guesses wrong.  What this yields is a lot of data that is obscured by ellipses because SSMS decided that it would make a column 60px wide when 65px would have shown all of the data (and plenty of cases where it makes a column 200px wide when 60px would have been enough).  In this specific case, of course, it was particularly annoying: it consistently obscured only one value in the entire grid: the one I was interested in!

    So what did I have to do?  Every time I ran the query to check on the result, I had to drag or double-click on the column header boundary in order to show the whole value.  This is the epitome of annoying.

    SSMS can be SO annoying 

    Now I complained about grid alignment last summer, and due to my frustration today, will likely include a reference to this item in this week's Connect digest.  But in case you want a sneak preview:

    #356926 : SSMS : Grid alignment, column width seems arbitrary


  • Why is disaster recovery an afterthought?

    I think that people have been lulled into the false sense of security that you can set up a SQL Server database, leave all the defaults in place, and never have to do anything.  While it is true that Microsoft has added many features to SQL Server that make the "hard" parts of being a DBA easier, there is no question in my mind that many people have over-compensated and adopted an attitude of "set it and forget it."  I can't really blame them, I guess, but I am still amazed when these same people get bitten by lack of maintenance or planning, and have no idea how to resolve the situation.

    The most common scenario is when users first set up a database and accept the defaults (e.g. FULL RECOVERY), because it sounds good and must be the best option.  They may or may not set up full nightly or backups (or that may be "someone else's job"), but very rarely do they understand the importance of log backups.  So a few weeks or months go by, and everything seems to be working great, and then all of a sudden the drive that their log is on runs out of disk space.  (And as an aside, this is often C:\, and is often also the drive that their data is on.)  This is because their data file has only grown to 500 MB, but their log file is now 40 GB.  I wish I was exaggerating, but I see this all the time.  And in most cases these people are looking for the "quick fix" : tell me how to shrink the file, so I can have my space back, then I'll go back to ignoring the situation.  They don't realize (and don't want to understand) that shrinking the log file in and of itself is not going to fix anything.  It gives them temporary breathing room, but that just means they are going to have to run the SHRINKFILE command in a repetitive loop, days or weeks apart.  Tibor has some great advice about this here and here - the latter is a bit long but, trust me, it is really worth the read.

    For a long time I tried to figure out how people got into these situations in the first place.  Some of them are involuntary DBAs, for sure - they need an app, which needs a database, and they can't become a full-fledged DBA just to support this one app, and they can't always predict their long-term file growth needs or understand why they may need disaster recovery or how it can be accomplished.  I then realized that SQL Server actually encourages this behavior in the "New Database" wizard.  Since I always use CREATE DATABASE DDL to create databases, I didn't realize that the UI populates so many defaults for you (though, granted, some of those defaults are the same if you use DDL and omit those options).  Why can't SQL Server be more helpful in this case?  Most of these involuntary DBAs are using the UI to create a database, and the defaults are horrible, if we're being honest.  Here are a couple of ways that I think the defaults could be much better:

    General tab

     

    Initial Size

    2 MB data file, and 1 MB log file?  I guess this is okay if you are planning to store a single table that never grows.  But for most applications, this is not going to be sufficient, and you are going to start experiencing autogrowth events almost immediately.  And if your data is growing significantly, both your data and log files are going to have these events occurring quite frequently.  Why would you want to make your transactions wait for these events all the time, instead of picking a better starting size?  Couldn't the default be generated dynamically by some formula of free space on the drive, the size of other databases on the system, and globally observed usage practices?

    Autogrowth

    1 MB for data, 10 percent for log?  Terrible.  I think this should be dynamic and based on the initial size you specified for the files, and % should never, EVER, EVER be a default for data or log.  The problem is kind of like doubling your kids' allowance every week; eventually, it will put you in the poorhouse.  If you grow by 10% every time, that chunk gets bigger and bigger, and unless you are on zippy SSDs or similar, the growth event takes longer and longer - even with instant file initialization.  Of course all transactions have to wait for this file growth to complete, so making that period more predictable is in your best interests.

    Path

    Personally, I think the drive letters should be dynamically selected based on free space available, or even better, if an HBA is detected or a SAN is otherwise present, users should be reminded that that is likely the best location.  If you still choose smallish drives (and especially C:\), this should pop up a warning, giving some guesstimate about how long the database will "survive" on this drive if the data grows at, say, 1MB/day or 10MB/day.  Same for log.  This may help to prevent some people from just plopping data or log or both on a small C:\ when there is a much bigger D:\ or E:\ available.  Of course C:\ is the default based on the initial installation of SQL Server, and they are getting better about this in the setup wizard, but have a long way to go.  There should be much better guidance on placing data and log on different drives.

    Options tab

    Recovery model

    This is the big one, in my opinion.  The option to place the database in full recovery by default should be accompanied with, at the very least, a reminder that disaster recovery is important.  Also it could be useful to explain WHY full is preferential, and a link to documentation describing the different recovery models (and why log backups are important).  It would be better to have a tab that allows them to set up both a full and log backup schedule, before the database can even be created.  By default the schedule could be a full backup every night at midnight, and log backups throughout the day, every 15 or 20 minutes.  This should be a very easy set of options and should work much more predictably than the maintenance plans (the main problem with maintenance plans is that when you add a database not all plans automatically pick it up).  Finally, the backups should *not* be allowed to go to the same drive as the data or log; another poor default in the maintenance plan wizard.  There should actually be a way to provide SQL Server with a default network share for backups for all new databases.

    So why is disaster recovery an afterthought?  Part of it is a need for better education.  But part of it is because the defaults encourage people to use techniques which are nowhere near the realm of "best practice."  Personally I think some very minor tweaks to the "New Database" wizard could make some giant strides in reducing the number of people who get surprised and burned by ginormous log files.


  • SQL Server 2005 SP3 Cumulative Update 4 is available

    Microsoft quietly released another cumulative update for SQL Server 2005 Service Pack 3 this week.  So quietly, in fact, that it took me 5 days to notice.  As Chad Miller noted in his comment, this is the first build of SQL Server 2005 that supports the "lock pages in memory" setting on Standard Edition.  You can read about the release here:

    http://blogs.msdn.com/sqlreleaseservices/archive/2009/06/15/cumulative-update-4-for-sql-server-2005-service-pack-3.aspx

    If you are still running on SP2, you should consider testing and deploying SP3.  If that is not in the cards, then you will also want to look at CU #14 for SP2, also released on Monday:

    http://blogs.msdn.com/sqlreleaseservices/archive/2009/06/15/cumulative-update-14-for-sql-server-2005-service-pack-2.aspx

    Why do I think you should be on SP3 and not SP2?  Well, from the fix lists for the two branches, it is clear that more fixes are going into the SP3 branch (20 fixes, vs. 6 fixes on the SP2 side).  However, as with previous "parallel" CU development, the SP3 branch fixes are not a superset of the SP2 branch fixes.  Observe that only 2 fixes are common to both, 4 are in CU14 for SP2 only, and 18 are in CU4 for SP3 only:

    FixSP2 CU14
    9.00.3328
    SP3 CU4
    9.00.4226
    KB #948567yesyes
    KB #956574yesyes
    KB #967164yesno
    KB #967470yesno
    KB #969611yesno
    KB #971114yesno
    KB #961050noyes
    KB #968834noyes
    KB #968900noyes
    KB #969528noyes
    KB #969844noyes
    KB #969997noyes
    KB #970058noyes
    KB #970070noyes
    KB #970349noyes
    KB #970551noyes
    KB #970648noyes
    KB #970672noyes
    KB #970823noyes
    KB #970966noyes
    KB #971402noyes
    KB #971409noyes
    KB #971529noyes
    KB #971607noyes

  • Connect digest : 2009-06-20

    Here are the Connect items I'd like to draw your attention to this week.  I have abandoned the idea of trying to keep track of vote counts and overall rating.  Being lazy might be a small part of it, but it is mostly because I just don't think it makes sense to assume that my postings are all that influence Connect behavior.  I know I have some impact on the visibility of certain items, but I'm going to leave it at that.

    ====================================

    SQL Server 2008 connection pooling problems

    Something to watch out for if you are using connection pooling and SQL Server 2008:

    #468478 : SQL Server 2008 Periodically Does Not Accept Connections

    ====================================

    Statistics on partitions

    As partitioning becomes more of a viable and beneficial option, new requirements are creeping out of the woodwork, such as the ability to update statistics per partition instead of for the entire object:

    #468517 : Update Statistics at the partition level

    ====================================

    DBCC SHRINKFILE() flexibility

    While personally I think the need is not all that dire, some people want to be able to shrink a database file to a size smaller than the original allocation (which is currently prevented by SQL Server).  Joe Sack made the request formal:

    #467285 : Shrink files beneath originally allocated space

    ====================================

    Distributed transactions

    Erland has filed a couple of interesting issues regarding distributed transactions:

    #466739 : There should be a system function to tell whether the current transaction is a distributed transaction

    #466749 : Cannot call stored procedures when a distributed transaction has been rolled back

    ====================================

    Clickable URLs in error messages

    Finally, Adam is asking for URLs in the messages pane (e.g. those you could embed in custom messages or ad hoc within RAISERROR) to be clickable.  I think it makes a lot of sense, though it is currently resolved as "won't fix"...

    #454907 : Make URLs clickable in the SSMS Messages pane

    ====================================

    Please remember, I am not trying to coerce you to vote for issues you don't care about, just trying to raise awareness for some items that might have slipped under your radar...


  • Index maintenance : these are not your father's maintenance plans!

    UPDATE 2009-06-24

    I have blogged about both of them before (here and here), but I can never say enough about how helpful their index maintenance scripts can be.  Both Ola Hallengren and Michelle Ufford (@sqlfool) have been extremely dedicated to building very useful maintenance scripts for you, me, and all the DBAs around you - even (or maybe especially) the involuntary ones.  I have used both, and because they offer so much more flexibility over the canned stuff you get in the built-in maintenance plans, I highly recommend trying them out.

    Ola's scripts were updated earlier this month, and I am only getting to blogging about it now (sorry Ola!).  Some of the enhancements in this update:

    • rebuild and reorganize indexes at the partition level
    • exclude indexes in read-only filegroups
    • option to print commands instead of executing them
    • support for all builds of SQL Server 2005 and 2008 (previously, only 2005 SP2+ was supported)
    • backup solution now supports LiteSpeed in addition to native backups
    You can read about and download Ola's solution here.

    Michelle Ufford has released a new version of her solution as well.  The enhancements include:

    • bug fix surrounding LOB logic
    • added @scanMode and @rebuildStats options
    • added support for defragging model and msdb
    • helpful additions to the log table (for monitoring)
    • exclusion list (for scheduling)

    You can download Michelle's solution here.

    I just want to echo a huge THANK YOU to both of these individuals for donating their time, energy and knowledge into developing and maintaining these scripts for the community at large.


  • Resource Governor slide deck

    Yesterday I spoke at the CTDOTNET CodeCamp2 in Hartford, Connecticut (and caught up with super heroes @spiderwebwoman and @SQLBatman@SQLRockstar).  Attached is the slide deck.

  • Connect digest : 2009-06-12

    Again I am a day early, as tomorrow I will be speaking at the CTDOTNET CodeCamp in Hartford.  As a reminder, I am not begging for votes here, just raising visibility for new issues you may not have seen yet, or older issues that have entered my peripheral vision again for some reason.

    ==================================

    Better behaving hints

    Lakusha had a great suggestion to allow certain table/query hints to have an option to return warnings instead of errors.  The prime use case presented is the case where you drop an index on a view, then suddenly any query using WITH (NOEXPAND) against that view stops working.  The suggestion is that these queries could continue working and just ignore the table hint.  And this could apply to index hints as well, making them less of a no-no (not that that is necessarily a good thing, but YMMV).

    #293508 : Some query hints Errors should have a Warning Only option
    Current rating: 4.2 (5 votes)

    ==================================

    Streaming results

    Fellow MVP Adam Machanic's suggestion for better streaming of results within T-SQL would give us the flexibility of cursors without the performance hit, and would prevent us from having to use more complex solutions (e.g. CLR) when scaling to large results.

    #456349 : Provide a streaming result interface via T-SQL
    Current rating: 4.2 (4 votes)

    ==================================

    Deeper info about hotfix / CU level

    Let's face it, relying on someone's blog to determine what build of SQL Server you have (and in turn which fixes you are protected by) is not reliable enough for most people.  While Microsoft has made great strides in keeping the KB up to date with full disclosure on hotfix builds, cumulative updates and service packs, there would be great value in having something within the product that could give you the details straight up, instead of having to search through KB article after KB article trying to find relevant information.  This is exactly what Robert Davis has suggested.  I disagree with his urging to change @@VERSION, but I think the general approach that a new server variable or SERVERPROPERTY() could be introduced would be an easy way to provide this additional and valuable information without introducing backward compatibility issues.

    #464322 : Augment ProductLevel property of the ServerProperty function to include CU #
    Current rating: 4.3 (5 votes)

    ==================================

    Declaring variable lengths

    I think it is fairly well-known that this syntax is just lazy, never mind potentially troublesome:

    DECLARE @x VARCHAR;

    Part of the problem is that in different scenarios this length will default to 1 or 30, and can often lead to data loss due to silent truncation.  Fellow MVP Erland Sommarskog is calling for deprecation of the lazy syntax, and I wholeheartedly agree.

    #244395 : Deprecate (n)varchar with out length specifcation
    Current rating: 4.0 (6 votes)

    ==================================

    Open Table is gone, but it is still biting us 

    They closed the following item as Fixed, but I disagree, and hence re-opened it.  The so-called "fix" was to return an error message; while arguably this is better than updating too many rows, it still leaves the table designer totally useless if your table is made up of certain data types.

    #289541: SSMS : Open Table w/binary key updates too many rows
    Current rating: 4.7 (13 votes)

    Right now if you choose "Edit Top n Rows" and then the data has changed in the meantime, choosing "Edit Top n Rows" again does not re-pull the data (or check that the schema is still the same), it just sets focus to the existing window you had opened previously (and depending on how attentive you are, this might fool you into believing that the data was refreshed).  I think that it should automatically refresh the data *and* the schema to prevent potentially catastrophic updates.

    #464596 : SSMS : Edit Top n Rows needs to refresh data and schema
    Current rating: N/A (1 vote)

     

     

    ==================================

    Last week's results:

    #462042 : Incorrect "Duplicate key" error with unique filtered index
    Previous rating: 4.7 (4 votes)
    Current rating: 4.8 (6 votes) +2

    #462046 : Cannot rename a default constraint for a table in a schema which is not dbo
    Previous rating: 4.4 (4 votes)
    Current rating: 4.5 (6 votes) +2

    #462053 : The filter expression of a filtered index is lost when a table is modified by the Table Designer
    Previous rating: 4.7 (4 votes)
    Current rating: 4.8 (6 votes) +2

    #457024 : Update statistics, top 100 percent and Sort warnings
    Previous rating: N/A (0 votes) 
    Current rating: 4.8 (9 votes) +9

    #458076 : Make %%lockres%% a documented feature
    Previous rating: 4.7 (10 votes) 
    Current rating: 4.7 (14 votes) +4

    #458080 : Lock Resource Hash Value not visible in Deadlock Graph Graphical View
    Previous rating: 4.8 (8 votes)
    Current rating: 4.8 (10 votes) +2

    #458084 : Improve content in BOL for Deadlock Diagnosis
    Previous rating: 4.4 (6 votes)
    Current rating: 4.5 (7 votes) +1

    #458091 : Change Lock Resource Hashing Algorithm to Reduce Likelihood of Collisions
    Previous rating: 4.6 (11 votes)
    Current rating: 4.7 (13 votes) +1


  • Connect Digest : 2009-06-05

    As I mentioned in last week's digest, I want to make it clear that I am not presenting Connect issues in this format in an attempt to tip the scales or pimp influence votes.  I am merely creating exposure for Connect items (bugs or suggestions) that you may not otherwise come across in your daily travels.  Please only vote for issues that you feel strongly about, and not using some excuse like, "well, Aaron told me to." 

    Of course you can apply your own rules and filters for which issues you vote on, for example you may give a lot more weight to a bug that doesn't affect you directly than to a suggestion for a feature you know you will never use.  More importantly, I hope that my efforts here raise visibility for Connect itself, as it is a great way to provide feedback directly to the dev team, and in some cases learn about workarounds that aren't published elsewhere.

    Anyway, I am a day early, but here are some items for this week that you may want to investigate:

    ====================

    More SSMS bugs

    There have been plenty of Management Studio items in previous digests, but this week fellow MVP Razvan Socol has discovered a few pretty serious bugs, including one thrown onto the already huge pile of problems with the table designer:

    #462042 : Incorrect "Duplicate key" error with unique filtered index
    Current rating: 4.7 (4 votes)

    #462046 : Cannot rename a default constraint for a table in a schema which is not dbo
    Current rating: 4.4 (4 votes)

    #462053 : The filter expression of a filtered index is lost when a table is modified by the Table Designer
    Current rating: 4.7 (4 votes)

    ====================

    Another TOP 100 PERCENT ... ORDER BY issue

    Sankar Reddy reported an issue with UPDATE STATISTICS which causes many Sort Warnings on the server.  The reason?  UPDATE STATISTICS generates a subquery that uses TOP 100 PERCENT ... ORDER BY.  Yuck!

    #457024 : Update statistics, top 100 percent and Sort warnings
    Current rating: N/A (0 votes) 

    ====================

    Locking and deadlocks

    Fellow MVP James Rowland-Jones has pointed out several possible enhancements to the database engine, tools and documentation that would enhance the process of tracking down and troubleshooting locking/blocking/deadlock issues.

    #458076 : Make %%lockres%% a documented feature
    Current rating: 4.7 (10 votes) 

    #458080 : Lock Resource Hash Value not visible in Deadlock Graph Graphical View
    Current rating: 4.8 (8 votes) 

    #458084 : Improve content in BOL for Deadlock Diagnosis
    Current rating: 4.4 (6 votes)

    #458091 : Change Lock Resource Hashing Algorithm to Reduce Likelihood of Collisions
    Current rating: 4.6 (11 votes) 

    ====================

     

    ============================================================

    Results from last week:

    #459383 : Add assertion clause to DML statements
    4.2/6 to 4.3/11 (+5)

    #459208 : SSMS : Object Explorer fails to show database list during attach
    NA/1 to 4.2/4 (+3)

    #423019 : SQL Server 2008 Activity Monitor Enhancements

    4.7/13 to 4.7/14 (+1)

    #352596 : SSMS: Activity Monitor is no longer in Treeview
    4.7/6 (no change)

    #361102 : [SSMS 2008 RTM] Restore 2000 Activity Monitor
    3.8/6 to 3.8/7 (+1)
     
    #350734 : SSMS : Activity Monitor column headers are too fragile

    4.3/3 (no change)

    #350736 : SSMS : Activity Monitor queries replace white space with ugly boxes
    3.9/2 to 3.7/4 (+2)

    #350726 : SSMS : Activity Monitor "Kill Process" more dangerous than it sounds

    NA/1 to 4.1/3 (+2)

    #350729 : SSMS : Activity Monitor process details dialog hard to use

    NA/1 (no change)


  • Connect Digest : 2009-05-30 : please vote!

    Here are some issues I came across recently; most involve SSMS in some way, though Erland's assertion suggestion is a great one. And just to be clear, since I am seeing some accusations of distorting the fairness of Connect by "asking for votes," I am not asking anyone to vote blindly on these items (and it's clear from last week's results that people are NOT doing that).  I'm asking you to take a look at these issues and -- if they affect you and you care enough to do so -- vote on them.

    ====================

    ASSERTIONS

    Erland brought up a great suggestion to add true assertions to DML statements, which would have several benefits over triggers or rolling your own rollback mechanisms. 

    #459383 : Add assertion clause to DML statements
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=459383
    Current rating: 4.2 (6 votes)

    ====================

    Object Explorer problem during attach operation

    Last week I was attaching a largish database (~300GB) using CREATE DATABASE ... FOR ATTACH.  Unlike when restoring a database, where you can see the "Restoring..." state next to the database name in Object Explorer (and can still access other online databases), during this time, I would receive an ugly error message if I tried to expand or refresh the database list.  I believe this is because the attach operation places an exclusive lock on the table(s) underlying the sys.databases catalog view, and the *ad hoc SQL* that SSMS issues to display the list does not use snapshot or lower isolation.  I'm not sure why it has to behave this way. 

    #459208 : SSMS : Object Explorer fails to show database list during attach
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=459208
    Current rating: N/A (1 vote)

    ====================

    Various Activity Monitor issues

    Many people have complained about the way the new Activity Monitor replaced the previous version.  While there are many new and helpful ways in which the new feature works, a crowd has gathered complaining about some of the things that are still missing (or were taken away). 

    #423019 : SQL Server 2008 Activity Monitor Enhancements
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=423019
    Current rating: 4.7 (13 votes)

    #352596 : SSMS: Activity Monitor is no longer in Treeview
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=352596
    Current rating: 4.7 (6 votes)

    #361102 : [SSMS 2008 RTM] Restore 2000 Activity Monitor
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=361102
    Current rating: 3.8 (6 votes)

    #350734 : SSMS : Activity Monitor column headers are too fragile
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=350734
    Current rating: 4.3 (3 votes)

    #350736 : SSMS : Activity Monitor queries replace white space with ugly boxes
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=350736
    Current rating: 3.9 (2 votes)

    #350726 : SSMS : Activity Monitor "Kill Process" more dangerous than it sounds
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=350726
    Current rating: N/A (1 vote)

    #350729 : SSMS : Activity Monitor process details dialog hard to use
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=350729
    Current rating: N/A (1 vote)

    ============================================================

    And here are the changes I've observed over the past 7 days for the entries in my post from last week:

    #127219 : CREATE OR REPLACE
    Rating last week: 4.7 (84 votes)
    Current rating: 4.7 (103 votes) +17

    #273938 : sp_helptext : option for generating ALTER
    Rating last week: N/A (1 vote) 
    Current rating: 4.5 (3 votes) +2

    #291300 : Option for sp_helptext to add 'GO'
    Rating last week: N/A (1 vote)
    Current rating: N/A (1 vote) no change

    #362453 : SSMS RTM Table Limit
    Rating last week: 4.7 (13 votes)
    Current rating: 4.7 (17 votes) +4

    #453982 : Bizarre XML Performance
    Rating last week: 4.7 (3 votes)
    Current rating: 4.7 (7 votes) +4


  • Using a Mac in a Windows world

    As a "SQL Server guy" first and foremost, I often have to defend my use of a Mac both as a travel and presentation laptop, and as my primary development workstation.  Today over on my work-related blog, I penned a story explaining my experiences, why I chose to switch platforms for much of my work, and what kind of problems this has caused for me.  It occurred to me tonight that, since I am doing a good portion of my SQL Server development from a Mac, that it might be interesting to some of the readers over here on at least one angle.  If you are thinking about getting a MacBook for travel, or a Mac Pro / iMac for day-to-day usage, or just want to laugh at what a helpless fanboy I've become, please feel free to read my story.

    If you want to comment or ask questions here instead of on my employer's web site, that is fine too.  You can also e-mail me directly at aaron DOT bertrand @ gmail.  (Sorry, but I'm still scared of dirty, rotten e-mail harvesters.)


  • Connect Digest : 2009-05-23 : please vote!

    Here are the items from this week that I feel deserve some attention.  I'm also adding a little bit of analysis to this.  I am always curious if my vote-pimping has any effect, so I am going to start taking a note of the ratings at the time I publish the post, and then compare them when I publish the next post.  This will give me some idea about whether my efforts here are worth it.

    ====================

    CREATE OR REPLACE syntax

    We've been asking for this syntax for several versions now, and it finally looks like they're seriously considering it.  To the point that they are narrowing down which DDL commands to support in the first round (since they don't pretend to be able to support all of them in one go).  This item already has a lot of votes, so if you have already voted, you could add comments indicating which items you would prefer be supported initially. 

    #127219 : CREATE OR REPLACE
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=127219
    Current rating: 4.7 (84 votes)

    ====================

    sp_helptext improvements

    Because of the missing syntax for create or replace, I filed two items in 2007 that would allow for improved usability with the system procedure sp_helptext.  One is to allow an option that would append 'GO' to the end of the script, and the other is to allow an option to script ALTER instead of CREATE.  While arguably these options are much less useful if they implement CREATE OR REPLACE functionality, that is still not guaranteed, so some other extensions might be helpful.  So far, I am the only person who has voted for either of these items.

    #273938 : sp_helptext : option for generating ALTER
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=273938
    Current rating: N/A (1 vote) 

    #291300 : Option for sp_helptext to add 'GO'
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=291300
    Current rating: N/A (1 vote) 

    ====================

    Object Explorer tree limits

    Object Explorer has a known limitation where, if you have too many objects in a single database, expanding a relevant node will yield the error message: "See Object Explorer Details for objects in this folder."  Using Object Explorer Details instead of the Object Explorer tree adds some functionality (like sorting and viewing additional properties); however, at the same time, it takes some important functionality away (like expanding multiple items at the same level and dragging column name lists onto query windows).  Now it seems that fixing this issue means they will also have to fix the underlying OS, but I say by all means do it.  If I want to wait 15 minutes for my crappy desktop PC to display a tree, I should be able to make that choice myself.

    #362453 : SSMS RTM Table Limit
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=362453
    Current rating: 4.7 (13 votes)

    ====================

    Bizarre XML Performance

    Fellow MVP and sqlblog.com blogger Adam Machanic discovered some illogical performance when constructing and slightly changing queries involving XML and TVFs.

    #453982 : Bizarre XML Performance
    http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=453982
    Current rating: 4.7 (3 votes) 

    ====================



More Posts Next page »

This Blog

Syndication

Powered by Community Server (Commercial Edition), by Telligent Systems
  Privacy Statement