As an IT person I have a morning routine of visiting a few of my favorite blogs so I can keep up to date on the latest and greatest. My first trip is usually over to Scott Hanselman's blog. I have been following Scott for a few years now and I was reading his blog way before he became a "blue badger" (Industry slang for a Microsoft employee). Anyway, the big news on Scott's blog today was that the first 185 pages of his ASP.NET MVC (Model View Controller) 1.0 book is released for free under the Creative Commons Attribution No Derivatives license. I am not really going to pretend that I know what that means but according to Scott: "You can share, distribute, hand out, transmit it all you like. You can even include it in your own book if you'd like. ;)".
Anyway, MVC is something that ASP.NET developers have been waiting for a long time. I remember doing a MVC J2EE web application a few years ago and wondering to myself...Why don't we have this functionality in ASP.NET? One of the things that I like most about MVC is URL Routing. If you have done any web development you have probably developed an application which passes parameters as part of the query string. For example if you search for "MVC" on Google you will notice that the URL ends up being
http://www.google.com/search?q=MVC&rls=com.microsoft:*&ie=UTF-8&oe=UTF-8&startIndex=&startPage=1.
MVC gives you the ability to transform this URL into a more readable format such as
http://www.google.com/search/MVC.
I am not saying that there is anything wrong with passing parameters on the query string but the second URL is a little easier to decipher.If you are interesting in learning more about ASP.NET MVC then I recommend viewing these links. And of course, don't forget to download the eBook!
One of the most important things you can do to improve performance in your database is to create and maintain indexes. The general rule of thumb is: if your indexes are less then 30% fragmented than you can run a DBCC INDEXDEFRAG else rebuild. However, an index rebuild is usually something that should be done after hours unless you have an enterprise edition license which will give you the ability to do an online rebuild. Anyway, I created this DMV which I use to check my indexes. It basically samples each table to get a percent fragmented value, I also filter the results by row count. If you have less than 1000 rows than a fragmented index is not a large concern.
SELECT
OBJECT_NAME(DMV.object_id) AS TABLE_NAME
,SI.NAME AS INDEX_NAME
,avg_fragmentation_in_percent AS FRAGMENT_PERCENT
,DMV.record_count
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') as DMV
LEFT OUTER JOIN SYS.INDEXES AS SI ON DMV.OBJECT_ID = SI.OBJECT_ID
AND DMV.INDEX_ID = SI.INDEX_ID
WHERE
avg_fragmentation_in_percent > 10
AND index_type_desc IN('CLUSTERED INDEX', 'NONCLUSTERED INDEX')
and DMV.record_count >= 2000
ORDER BY
TABLE_NAME DESC

If you asked me, my favorite all time game is definitely Quake II. I remember building a new PC just so I could run Quake II in Open GL with a decent frame rate. Back then hardware was very expensive and my job at the grocery store did not allow me to have a budget for new hardware. Since then PC’s have become very powerful and a lot more affordable. I think I have more processing power and storage space on my Blackberry then I had on my PC 10 years ago. Anyway, it is amazing how the times have changed. With that said, gaming technology is also evolving. Game development studios are shifting towards online gaming and even browser based games. Believe it or not, this new version of Quake is built to run directly from your browser! Here are the minimum requirements.
In order to play you just need to signup at http://www.quakelive.com. Once you established a login you will need to install an Active-X control, restart your browser and voila! You are ready to play. The graphics are really impressive for a browser based game.

I recently installed my first SQL 2008 Active\Passive cluster. The SQL 2008 install process is a lot more comprehensive than previous versions of SQL Server. The setup screens give you great flexibility like being able to completely customize data and log file locations, adding users to the sysadmin role at install time and on and on. During my install I documented the steps. Although, this walkthrough is not ideal for all situations, I am posting it with the hope that someone else will find this information useful:
Tips for Avoiding Install Problems
- Restart both nodes prior to beginning the installation of the SQL Server software.
- Make sure the network connection names do not have any trailing or leading spaces. I got caught on this issue once and now I always check this before I start the install.
-
Use the physical node names when using remote desktop. This way if you have to failover you will not get disconnected.
Prerequisites
- Install .NET Framework 3.5 SP1 on both nodes. Information: Dot NET Framework 3.5 is the minimum requirement. At the time of the install I used 3.5 SP1 instead because it contained several important security fixes.
- Configure Microsoft Distributed Transaction Coordinator as a clustered resource.
a. From the Failover Cluster Management application right click on the Services and Applications tree node and select Configure a Service or Application
b. Click Next on the High Availability Wizard page
c. Select Distributed Transaction Coordinator (DTC) from the list of services and applications. Click the Next button
d. Enter the Name MSDTC on the Client Access Point page
e. Choose the Storage Resource to be used for the DTC service. Server 2008 requires separate disks for MSDTC and the Quorum. Once you select the storage resource click the Next button.
f. On the Confirmation page click the Next button. The resource will be created and configured.
g. On the Summary page click Finish.
h. View the properties of the MSDTC server. On the general tab select the primary node as the preferred owner and click the OK button.
- Request AD Accounts and add them to an AD Group. For security reasons it is best to have one account for each service. For maintenance reasons it may be easier to limit the accounts.
- Copy the installation media to the server along with any needed service packs.
-
Disable Windows Firewall if it is running.
Installation Steps
- Start the installer by running setup.exe from the primary node. The setup may prompt you to install a few pre-requisites such as a new version of Windows Installer. Click OK to install the pre-requisites. Any pre-requisites will probably require a reboot.
- When the SQL Server Installation Center dialog appears click on the Installation label on the left hand side of the dialog.
- Click on New SQL Server failover cluster installation. A new dialog will appear that will check minimum requirements. If your system passes the check, then you may click the OK button.
- On the Setup Support Files page click on the Install button. This will stage the setup files to the local disk.
- On The Setup Support Rules page review the validation report. Do not continue until you have 0 failures. If you have warnings you can continue, however it is recommended that you contact your sysadmin regarding these warnings before continuing with the install. If you fail a particular test, resolve the underlying problem and click the Re-Run button. Once you have passed validation click on the Next button.
- In The Product Key page enter in the registration key. For media downloaded from MSDN the field should be pre-populated. Click the Next button.
- On the License Terms page, check the "I accept the license terms" checkbox and click the Next button.
- On the Feature Selection page click the Select All button. The Shared feature directories can be left as defaults. Click the Next button.
- On the Instance Configuration page
a. Set the SQL Server Network Name with the value of the virtual name you are going to use.
b. If this is the first instance in the cluster the select the Default instance radio button. Otherwise, fill in a value for the named instance.
c. Leave the Instance root directory as is.
d. Click on the Next button
- On the Disk Space Requirements page review the disk usage summary. If you have sufficient space for the install you will see a green checkmark. Click the Next button to continue.
- On the Cluster Resource Group page select the SQL Server cluster resource group name. You must have at least one qualifying group before you can continue. Click the Next button.
- On the Cluster Disk Selection page, make sure that at least one disk qualifies. In most installations you will have at least two disks (one for data and another for logs). Make sure that all the disks you plan on using for the install have a green checkmark in the qualified column. Click the Next button to continue.
- On the Cluster Network Configuration page you should have at least one network setting specified. This default entry gets created as the default entry for the installation. Leave the defaults and click on the Next button.
- On the Cluster Security Policy page
a. Enter the AD group you created earlier for the Database Engine domain group
b. Enter the AD group you created earlier for the SQL Server Agent domain group
c. Enter the AD group you created earlier for the Analysis Services domain group
- On the Server Configuration page
a. For the SQL Server Agent enter the Account Name, populate the Password.
b. For the SQL Server Database Engine enter the Account Name, populate the Password.
c. For the SQL Server Analysis Services enter the Account Name, populate the Password.
d. For the SQL Server Reporting Services enter the Account Name, populate the Password. Set the Startup Type to Automatic only if you are going to be using the service.
e. For the SQL Server Integration Services enter the Account Name, populate the Password. Set the Startup Type to Automatic only if you are going to be using the service.
f. For the SQL Full-text Daemon Launcher leave the setup defaults.
g. For the SQL Server Browser leave the setup defaults.
h. Click the Next button.
- On the Database Engine Configuration page
a. Go to the Account Provisioning Tab Add appropriate users/groups to the list of SQL Server Administrators
b. On the Data Directories Tab, make sure the locations for each setting is pointed to the proper disks. Typically there is a separate location for data files and logs. In some systems we also split out tempdb.
c. On the FILESTREAM tab leave the defaults
d. Click the Next button.
- On the Analysis Services Configuration page
a. Go to the Account Provisioning tab : Add appropriate users/groups to the list of Administrators
b. On the Data Directories directory, make sure the locations for each setting is pointed to the proper disks.
- On the Reporting Services Configuration page select the Install, but do not configure the report server option and click the Next button.
- On the Error and Usage Reporting screen leave all options unchecked and click the Next button.
- On the Cluster Installation Rules page, verify that all the tests were passed and then click on the Next button.
- On the Ready to Install page review the installation configuration. It is worthwhile to review all of the settings now. It is much easier to change things before they are installed. Click on the Install button to start the installation.
- If everything went well you should see a summary screen stating Your SQL Server 2008 failover cluster installation is complete. If you had problems, review the summary log by clicking on the blue hyperlink on the top of the page.
-
Now you have to run the installer on the other node(s). When you run the installer on the other nodes in the cluster an auto-discovery algorithm will run. After auto-discovery completes, the settings used in the initial installation will be applied to the current node. Basically, just accept the defaults until the installation is finished.
References
MSDN - Installing a SQL Server 2008 Failover Cluster
http://msdn.microsoft.com/en-us/library/ms179410.aspx