Wednesday, March 25, 2009

New Content Added - Mar 23, 2009

We just added content from Jessica Moss (Introduction to the Reporting Services Design Environment) and Greg Larsen (Creating Missing Indexes), and we hope to see more from both of them!

Sunday, March 22, 2009

Minimalist Design

I'm been in tactical mode lately, building an advertising management system for one of our projects. Actually it's v2, the first one is working and doing what needs to be done (definitely minimalist), but as we started looking at wrapping up the major development we decided to add a few things that had been on the wish list - but with the caveat that the time and resources to make the change were time boxed.

I tend to look at all development work from a data perspective. A lot of that comes from being a DBA of course, but also from being a business owner. I want to be able to answer the questions that matter to me, and in some cases I may not be asking the questions a developer would expect. That DBA experience also leads me toward normalized designs and in truth designs that often more complex than needed. Of course the hard part is knowing that you've exceeded the complexity threshold. The opposite end of the spectrum is the agile design approach which embraces YAGNI (you ain't gonna need it) and focuses on building for today.

Time boxing (or cost boxing) is an easy way to answer the question about too complex, though it separates the zealots from the pragmatics pretty quickly. Once you know the resource constraints, you then build a solution that you know you can get done. Survivorman is an example of this - I remember an episode where he had the choice of building a fire to feel safe, or building a platform so he could sleep off the ground and avoid most of the insects and worse. He could not get both done, he had to pick.

Back to the minimalist design. I had 2 weeks to redesign and fully implement the tables, workflow, invoice generation, and to connect to to a site was already up and running, with the final UI construction to support the design set aside as a later task. Two weeks is not long! As we worked on the design we had to make some hard choices, and the trick - to call it something - is to have a good feel for what is important and what's not, and the harder trick is to know what you can scrimp on now and change later without it causing major reconstruction.

As DBA's we should be masters of abstraction and refactoring. Between synonyms, views, computed columns, and triggers we have ways to put things in one place and make them appear differently or in a different place as needed. Only with a good understanding of the options and the final (someday) goal can you do good minimalist design, and there is definitely a subtle difference between good and not good.

You aren't always going to need it. Think about spending effort on the things that matter and setting yourself up to make changes later that will be easy refactorings.

Friday, January 30, 2009

More New Content in January!

How to find blocked processes in SQL Server - Part 1
SQL
Jon Kehayias

How to find blocked processes in SQL Server - Part 2
SQL
Jon Kehayias

How to detect deadlocking in SQL Server - Part 1
SQL
Jon Kehayias

How to detect deadlocking in SQL Server - Part 2
SQL
Jon Kehayias

How to detect deadlocking in SQL Server - Part 3
SQL
Jon Kehayias

Monitoring Exec Cache in SQL Server - Part 1
SQL
Jon Kehayias

Monitoring Exec Cache in SQL Server - Part 2
SQL
Jon Kehayias

Reversing Deadlocking - Part 1
SQL
Jon Kehayias

Reversing Deadlocking - Part 2
SQL
Jon Kehayias

Reversing Deadlocking - Part 3

New Content Posted

We just posted Using fn_trace_gettable by Jack Corbett, plus a bunch more:

Setting Deadlock Priority
SQL
Jon Kehayias

Using the DTA to Assist in Performance Tuning
SQL
Jon Kehayias

Using Computed Columns in UDF's
SQL
Andy Novick

Error Handling with UDF's
SQL
Andy Novick

Inline UDF's in SQL Server
SQL
Andy Novick

Multistatement UDF's in SQL Server
Andy Novick

Scalar UDF parameters explained
SQL
Andy Novick

Data Access with Scalar UDF's
SQL
Andy Novick

What is a Scalar UDF?
SQL
Andy Novick

SQL Server System Function
SQL
Andy Novick

User Defined Functions Metadata
SQL
Andy Novick

User Defined Function Tips
SQL
Andy Novick

Testing UDF's
SQL
Andy Novick

You Can't Do That with UDF's
SQL
Andy Novick

Data Driven Text Color with Reporting Services
SQL
Pam Shaw

Reporting Services Expression Editor
SQL
Pam Shaw

Alternating Background Colors in Reporting Services
SQL
Pam Shaw

Implementing Hyperlinks in Reporting Services
SQL
Pam Shaw

Implementing Sorting in your Reporting Services Report
SQL
Pam Shaw

Tuesday, January 6, 2009

First Update of 2009

We slowed down a little for the holiday break, now back at full speed. Our focus over the past month has been mainly stuff you'll never see - admin tools to let us handle the routine and not so routine tasks without actually running queries. For example, a couple times a day someone won't get the confirmation email and we'll need to approve them manually, and we also continuously remove "bad" email addresses from our list as people move on to other jobs. A bigger task for us is building and scheduling the newsletter - we have to review the content title, description, look at keywords, build the questions and answers for the quiz, assign an ad, test the links, etc, etc, etc. Good tools make it a simpler and repeatable process.

We've had a LOT of good comments on our content, and we take pride in that, though obviously it's the authors that deserve the praise. We're mapping out plans now to add a couple hundred additional SQL videos over the next quarter, and also decided where to focus next; Sharepoint, .Net, something else?

Not exciting stuff as a visitor though! Not yet anyway.

Probably the biggest change we'll publish in the next few weeks will be playlists. This will let you group your 'bookmarks' into logical groups, and then easily share them with others. An example might be a manager building a playlist that all new hires should watch, or maybe you'll build one of the top 10 performance tuning tips. Yes, it's social, but it's also useful at times - it'll be there when and if you find a reason to use it, and otherwise will stay out of the way. Soon!

Thursday, December 18, 2008

Content Posted on Nov 6, 2008

Really late posting, sorry! New content from Plamen Ratchev and Robert Cain!

Shredding XML elements with the XQuery Query function
Solve parameter sniffing by using local variables
Solve parameter sniffing by using OPTIMIZE FOR UNKNOW
Solve parameter sniffing by using OPTIMIZE FOR
Solve parameter sniffing by using OPTION RECOMPILE
Solve parameter sniffing by using plan guide
Solve parameter sniffing by using RECOMPILE
Sparse Columns in SQL Server 2008
Sparse Columns and Column Sets in SQL Server 2008
Preventing SQL Injection with string filtering
Table Valued Parametered in SQL Server 2008
Unpivot data with a cross join in SQL Server
Unpivot data using the UNPIVOT function in SQL Server
Performing Updates with Common Table Expressions
Installing SQL Server Full Text Search
Creating a Full Text Search Catalog
Altering SQL Server Full Text Catalogs
Creating a full text search index
Valid data types of full text search indexes
Maintaining full text indexes in sql server
Querying full text indexes using the Contains method
Querying full text indexes using the FreeText method
Querying full text indexes using the FormsOf method
Enhancing searching of full text indexes
Ordering Full Text Index Search Results by Relevance
Useful Sql Server Full Text Search System Views
Customizing the Full Text Search Thesaurus
Customizing Stop Word and Stop Lists in Full Text Indexes

New Content Posted on Dec 15, 2008

We've fallen behind a little on updating the blog with content releases. We've got a great batch from our old friend Brian Kelley below, highly recommended. Also visit his blog at http://www.sqlservercentral.com/blogs/brian_kelley/default.aspx (after you watch the video!).

Adding a SQL Login to SQL Server
Adding a Windows Based Login to SQL Server
Allowing Users to Execute Traces in SQL Server
Auditing your SQL Server Logins for blank passwords
Enabling C2 auditing in SQL Server
Configuring Network Settings for SQL Server
Creating and Using Database Roles in SQL Server
Creating a Database User in SQL Server
Cross Database Ownership Chaining in SQL Server
Dealing with Orphaned Users in SQL Server
Managing the Default DB and Language for a SQL Server Login
The Default Trace in SQL Server 2005
Disabling SQL Server Logins in SQL Server 2005
Fixed DB Roles in SQL Server 2005
Fixed Server Roles in SQL Server 2005
The difference between GRANT, DENY and REVOKE in SQL Server
Granting permissions against a database object
The Guest User in SQL Server
Policy Management for Surface Area Configuration in SQL Server 2008
How to recover from being locked out of a SQL Server 2005 database
How to use the SQL Server 2008 Audit Object
SQL Injection Explained
Security for SQL Agent Job Execution
SQL Server Authentication Modes
SQL Server Login vs Windows Authenticated Logins
SysAdmin vs DBO vs DB Owner in SQL Server
Transparent Data Encryption in SQL Server 2008
Using Login Auditing in SQL Server
xp_cmdshell execution in SQL Server 2005 / 2008

About This Blog

--
From time to time we'll be posting here about new content, new authors, and changes/fixes we make the site. We'll also be talking about our vision for our business and why we opt to go in certain directions. Please don't hesitate to post a comment, we'd enjoy and appreciate any feedback you have.
View my complete profile