Category: Blog

  • For your CIO: Building Technical Leaders

    I might send this to a VP or CIO: Global CIO: A Framework For Developing Technical Leaders. It’s an article that talks about building senior technical leaders in your company, which I think is important if you view your Information Technology department as strategic.

    That also means thinking about retention, and building an atmosphere where people want to work. That doesn’t mean you can’t have layoffs or need to keep every person, but management does have to show competent and hard working technical people that they are valuable. It should also involve some way to balance the disparate needs of ambitious people that you want to retain and those average employees that want a secure job and are willing to do the average jobs.

    It also involves keeping a career path for technical people that doesn’t lead to management. Plenty of smart technical people want to keep growing, so give them a way to do so.

  • When Did That Restore Finish?

    I saw this question come across Twitter under the #sqlhelp tag one day and was wondering myself. Someone suggested the default trace, I was thinking msdb.dbo.restorehistory and decided to check.

    First I hit Books Online. It notes that the restore_date column means: Date and time of the restore operation. Can be NULL.

    Very helpful (hopefully you read the sarcasm). This looks like a CS 101 comment, not very helpful and not detailed. Here’s a Connect item for more detail, and here’s one I submitted for clarification.

    OK, time for testing. I first grabbed a copy of AdventureWorks since I assumed it would take at least a minute to restore. I restored a new database as “ADW_3”. It was around a minute and so I checked restorehistory:

    USE msdb
    GO
    SELECT TOP 10 * FROM restorehistory

    And I got this:

    restore2

    This was not terribly helpful. At the time I ran this, it was 9:32, so this appears to be the start date/time of the restore.

    Then I checked the default trace: ‘

    SELECT * FROM ::fn_trace_getinfo(0)
    
    SELECT *
    FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\log_54.trc',0)
         INNER JOIN sys.trace_events e
              ON eventclass = trace_event_id
         INNER JOIN sys.trace_categories AS cat
              ON e.category_id = cat.category_id
    WHERE databasename = 'ADW_3'

    The first query gets the name of the file, which is put into the second query as the file source and that returned a number of results, of which the interesting ones were:

    restore

    That isn’t terribly helpful either. I was hoping there would be a second event in the default trace, but there isn’t, even 10 minutes later when I checked. (I’m ever optimistic)

    Then I thought “wouldn’t recovery run in a restored database? Isn’t that in the error log?”, so I decided to check there and found this:

    restore3

    The “starting up datbaase ‘adw_3’ is likely just after the log file is built and corresponds to a tenth of a second after the restore starts. I suspect the files are created first as part of the restore, but not marked in the error log. Then the database is started, and is marked a “restoring” immediately after.

    There is a checkdb informational message, which is the last time that the command was run not on this database, but on the source database that created the backup file (bad, Steve, bad, 8 months old!).

    Last we see that just about 6sec later there is the completed restore message.

    No duration, but you can calculate that based on the “starting up” message.

  • Third Times a Charm – SQL Saturday #64 – Baton Rouge

    Going back to Baton Rouge again

    We’re a week away from SQL Saturday #64 in Baton Rouge, LA. It takes place on August 6, 2011 at the Patrick Taylor at LSU again, the same location as the last two years. If you’re in the area, sign up and come learn about SQL Server. I’ll be presenting two sessions, one on Red Gate tools at lunch, and one on the Top Ten SQL Server Skills You Need to Know about SQL Server.

    I did a short radio interview with WRKF that should air next Thursday to promote the event. I don’t know how many people will hear it, but there might be some people signing up, which might fill up the day. If you want to come, register soon.

    This is a great event, and it’s one of the bigger SQL Saturday’s I’ve been to every year. There are 9 tracks, including a couple .NET tracks and a Windows Phone set of sessions, so there’s plenty for everyone to do. The crew that puts the event together does a great job, and I’m sure you’ll have a great time.

    Baton Rouge is a great place, and I’m am looking forward to a run or two around University Lake. It’s hot, humid, but a nice place to jog. If you want to join me, I’ll be aiming for an early Sat am run, likely around 7:00am.

    Once again I’m flying to New Orleans and driving up to Baton Rouge. I hope to get some lunch in the Big Easy, enjoying the beautiful French Quarter before going to a very nice college town in Baton Rouge. I’m not staying Saturday night, but heading back to New Orleans for an early flight home Sunday. I’ll be at the after party, so please stop by and say hi to me.

  • The Cost of Page Checksums

    What’s the overhead for a page checksum? I’ve seen various numbers thrown out, but I thought that Paul Randal had written at one point that it was around 1-2%. I can’t find a reference, but in this post, Paul doesn’t dispute that.

    In any case, it’s better to find corruption than save 2% of your CPU. I’d argue the same thing for performance monitoring, which I’ve often seen referenced at 5% of the load. If you don’t have 5% overhead, you have other problems.

    You need to measure things.