Archive for the 'SQL Server DBA' Category
Thursday, December 11th, 2008
Here’s the scenario… You have a RAW file which contains data from many files.
In the subsequent dataflow you need to perform a lookup against a large reference table, however you want just a subset that reflects the period contained within your RAW file.
Question 1, how do you find out the earliest date used within your RAW file data? And question 2, how do you write it to a variable so that you can use it in the subsequent data flow?

(more…)
Posted in Nuggets, SSIS, SQL Server 2005, Datawarehouse, Performance, Methodology, Scripting | No Comments »
Thursday, September 11th, 2008
Many of you will have heard the mantra that loops are bad, set based is good. But how do you get around them?
The fact of the matter is that there are very few circumstances where a loop is the only way to achieve your objective. A look through the SQL forums will show you many a technique to turn iterative row by row processing into single transaction set based processing. I’m refering to hierarchical query techniques (see nested set theory) and of course the subject of this post, the numbers table.

(more…)
Posted in Nuggets, SSIS, SQL Server DBA, SQL Server 2005, Datawarehouse, Performance, Methodology, T-SQL | No Comments »
Thursday, August 14th, 2008
In an earlier post, I demonstrated how to send HTML formatted mail using the script task. Another frequently requested use of the mail task is to be able to send query results within the email message body. Here’s how…

(more…)
Posted in Nuggets, SSIS, SQL Server DBA, SQL Server 2005, Scripting, Microsoft | No Comments »
Monday, June 30th, 2008
A very frequent requirement in a database, especially in an OLTP system is to be able to capture the identity and values of the last inserted record in a table so that we can use it to populate the foreign key in a child table and any other tables that require it.
It is easy enough to capture the last inserted identity if we are only dealing one record at a time using @@IDENTITY, but what happens when we need to do batch inserts? Well, the old way of doing things would mean you had the following options:
- Execute a loop (either a cursor or a WHILE statement), and for each iteration we’d write a record in each of the child tables
- You’d have to select the same data twice, once to insert the audit records and once to update the data
- You’d rely on a trigger to write to the audit table
Well that should now not be necessary as using the OUTPUT clause we can capture all the data we’ve inserted, updated or deleted in a temporary area for use later on, or say in an auditing scenario, we can output the data directly to the auditing table. More importantly we can use that data in a set based transaction instead of row based. The advantages here are obvious.

(more…)
Posted in Nuggets, SQL Server 2005, Performance, T-SQL | No Comments »
Friday, March 28th, 2008
The order of the configurations used in the development studio is not the same as the order used by DTEXEC, specifically in relation to parent package variables.
Parent Package variables always have the lowest priority no matter what order you set in the configuration manager.
Microsoft have recently added a note to BOL on this subject here
Amazon Link: Microsoft SQL Server 2005 Integration Services
(more…)
Posted in Nuggets, SSIS, SQL Server DBA, SQL Server 2005, Methodology | No Comments »
Wednesday, March 26th, 2008
I recently saw some forum posts on SSC.com asking if there was a way to bulk import DTS 2000 packages into a SQL 2005 database.
The answer is that you can use the DTSBackup utility available for download at www.sqldts.com. Its a lightweight and extremely useful tool that can save hours of mouseclicking, and it works on both SQL 2000 and 2005.
Amazon Link: SQL Server 2000 Developer Edition
Posted in Nuggets, SQL Server DBA, SQL Server 2005, SQL Server 2000 | No Comments »
Tuesday, February 12th, 2008
This script might be the best SQL insert generator I’ve seen yet. It’s flexible and deals quite comfortably with the majority of problems a dev can come across when attempting to write one of these. Why re-invent the wheel.
Take a look at the website, there are plenty of neat tips and tricks.
Cheers
Frank
Amazon Link: Microsoft SQL Server 2008 T-SQL Fundamentals (PRO-Developer)
Posted in Nuggets, SQL Server DBA, SQL Server 2005, T-SQL | No Comments »
Thursday, August 23rd, 2007
From time to time these days I have to put my DBA hat back on and review database schema designed by those whose focus is on application development. What I often find is that attempts to improve performance through indexing have been done in vain as the query optimizer either doesn’t use them enough to merit their creation or they have been created on the wrong columns.
Frequently, optimisation is referred to as a dark art, but here I am going to attempt to give some basic pointers to help enighten the novice database designer…

(more…)
Posted in Nuggets, SQL Server DBA, SQL Server 2005, Datawarehouse, Performance, Microsoft | No Comments »
Tuesday, May 22nd, 2007
In my never ending quest to simplify administration tasks on SQL Server, I recently came up with a method to automate the creation of new publications with a one script fits all piece of SQL Code.
Considering that in most enterprises, the default configuration options for replication will remain the same, the only thing that changes are the destination servers and the publications/articles themselves.

(more…)
Posted in Nuggets, SQL Server DBA, Replication, Methodology, T-SQL | No Comments »
Tuesday, February 13th, 2007
We try to avoid SQL Server user-defined functions unless we can be certain that there is no other way to achieve what it is we’re asking of them. They aren’t very performant as they calculate on a row by row basis rather than the set based operations that our esteemed RDMS is renowned for.
Having said this I am going to post a table function I created recently for use as part of an SSIS import package that transforms an incoming single row CSV into roughly 100 records each time it runs.
The content team in our organisation faces the soul-destroying task of entering records as well as comma delimited strings on to an Excel spreadsheet which in turn is imported into 2 SQL tables.
There is no straight forward way to split the csv string into a SELECT list, but here is what I have done…
(more…)
Posted in Nuggets, SSIS, SQL Server DBA, SQL Server 2005, T-SQL | 1 Comment »