Archive for July, 2008

DestinationConnectionExcel and OfflineMode

Thursday, July 31st, 2008

SSIS, Excel and 64 Bit SQL Server, wonderful together!

The connection manager "DestinationConnectionExcel" will not acquire a connection because the package OfflineMode property is TRUE. When the OfflineMode is TRUE, connections cannot be acquired.

We've seen similiar errors to this before and I blogged something about, blah blah blah, with a solution like re-installing client tools, before trying that, try this, it's an easier fix and may work.  This was found by Tom Reeves, an excellent SQL Server DBA !

Register 32bit dtexec

I ran into this issue yesterday and once in the past and I finally figured out how to fix it quickly. The issue occurs on a 64bit server trying to use the 32bit dtexec command. Typically the package will have an excel connection in it or some another type of object that doesn’t have a 64 bit driver. When you install the 64bit integration services it registers the 64 bit version of DTEXEC, which in turn unregisters the 32 bit version. To fix this you have to register the 32 bit version again. You can do this by running the below code from the server with the issue.

%windir%\syswow64\regsvr32 "%ProgramFiles(x86)%\Microsoft SQL Server\90\dts\binn\dts.dll"

Many-to-Many Dimension bug

Wednesday, July 30th, 2008

Jon Axon mailed me recently with an interesting bug he'd come across concerning many-to-many dimensions, where it looks like the AS engine is trying to be a bit too clever for its own good as far as query optimisation goes. It's reproducible on AS2005 SP2 and Katmai RC0, and I logged it on Connect here: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=357469

Here's an example on Adventure Works that Jon gave me. The following query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]

Shows the total number of customers as being 18484. Looking at the Sales Reason dimension (which has a many-to-many relationship with the measure group Customer Count is from), if you run a relational query on the underlying data source you can see that not every order was associated with a sales reason - this is the key point here. Now if we run the query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE [Sales Reason].[Sales Reason].[All Sales Reasons]

We can see that it returns the same result as the first query, 18484, as you would expect. But what if we want to find the number of customers who specified a sales reason? You would think that the following query would do that:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE [Sales Reason].[Sales Reason].[All Sales Reasons].Children

But it doesn't, it returns 18,484 again. However if you run this query which should be equivalent to the previous query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE {[Sales Reason].[Sales Reason].&[1],
       [Sales Reason].[Sales Reason].&[2],
       [Sales Reason].[Sales Reason].&[3],
       [Sales Reason].[Sales Reason].&[4],
       [Sales Reason].[Sales Reason].&[5],
       [Sales Reason].[Sales Reason].&[6],
       [Sales Reason].[Sales Reason].&[7],
       [Sales Reason].[Sales Reason].&[8],
       [Sales Reason].[Sales Reason].&[9],
       [Sales Reason].[Sales Reason].&[10]}

It returns the value we're looking for, 17022. Not good! What I suspect is happening here is that when the query optimiser sees the expression [Sales Reason].[Sales Reason].[All Sales Reasons].Children in the Where clause, it assumes that it's equivalent to [Sales Reason].[Sales Reason].[All Sales Reasons] which it is in most cases, just not here. Interestingly if you look in Profiler and run the queries on a cold cache, you see exactly the same activity when [Sales Reason].[Sales Reason].[All Sales Reasons].Children is in the Where clause as when [Sales Reason].[Sales Reason].[All Sales Reasons] is there; but when you explicitly list all of the individual sales reasons, as in the last query, because Sales Reason has to resolve itself through the Internet Sales Order Details dimension which is ROLAP, you see SQL queries being fired off against the relational database.

Many-to-Many Dimension bug

Wednesday, July 30th, 2008

Jon Axon mailed me recently with an interesting bug he'd come across concerning many-to-many dimensions, where it looks like the AS engine is trying to be a bit too clever for its own good as far as query optimisation goes. It's reproducible on AS2005 SP2 and Katmai RC0, and I logged it on Connect here: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=357469

Here's an example on Adventure Works that Jon gave me. The following query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]

Shows the total number of customers as being 18484. Looking at the Sales Reason dimension (which has a many-to-many relationship with the measure group Customer Count is from), if you run a relational query on the underlying data source you can see that not every order was associated with a sales reason - this is the key point here. Now if we run the query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE [Sales Reason].[Sales Reason].[All Sales Reasons]

We can see that it returns the same result as the first query, 18484, as you would expect. But what if we want to find the number of customers who specified a sales reason? You would think that the following query would do that:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE [Sales Reason].[Sales Reason].[All Sales Reasons].Children

But it doesn't, it returns 18,484 again. However if you run this query which should be equivalent to the previous query:

SELECT
[Measures].[Customer Count] on 0
FROM [Adventure Works]
WHERE {[Sales Reason].[Sales Reason].&[1],
       [Sales Reason].[Sales Reason].&[2],
       [Sales Reason].[Sales Reason].&[3],
       [Sales Reason].[Sales Reason].&[4],
       [Sales Reason].[Sales Reason].&[5],
       [Sales Reason].[Sales Reason].&[6],
       [Sales Reason].[Sales Reason].&[7],
       [Sales Reason].[Sales Reason].&[8],
       [Sales Reason].[Sales Reason].&[9],
       [Sales Reason].[Sales Reason].&[10]}

It returns the value we're looking for, 17022. Not good! What I suspect is happening here is that when the query optimiser sees the expression [Sales Reason].[Sales Reason].[All Sales Reasons].Children in the Where clause, it assumes that it's equivalent to [Sales Reason].[Sales Reason].[All Sales Reasons] which it is in most cases, just not here. Interestingly if you look in Profiler and run the queries on a cold cache, you see exactly the same activity when [Sales Reason].[Sales Reason].[All Sales Reasons].Children is in the Where clause as when [Sales Reason].[Sales Reason].[All Sales Reasons] is there; but when you explicitly list all of the individual sales reasons, as in the last query, because Sales Reason has to resolve itself through the Internet Sales Order Details dimension which is ROLAP, you see SQL queries being fired off against the relational database.

Interviews with DBAs about their careers

Wednesday, July 30th, 2008

Want to know what different DBAs think of their jobs and their chosen careers?  OdinJobs.com interviewed eight different DBAs from completely different backgrounds and careers.  The one thing we’ve got in common is that we blog, but outside of that, we’ve got wildly different points of view about the career and what we like about SQL Server.

The Panel Blogroll

Inside the articles, the links don’t work too well, so you can jump to the three parts from here:

Polyserve SQL Installer / Upgrader

Wednesday, July 30th, 2008

When working with the Polyserve SQL Installer or Multi-Node Upgrade Wizard for SQL Server, we noticed an issue where even after applying the SQL Hotfix, the SQL Version was showing as not upgraded on some machines, this was concerning as the utility did allow us to re-virtualize with these instances in different versions, this is a big concern.  You do not want a SQL Instance on the cluster to be different versions, Different instances can be different versions, but a single instance should be the same across each machine, see picture:



Surprisingly when you went to the individual machines and checked, the SQL version was the same (so on the picture above, physically checking DEVPLYSQL01, SQLTest1 instance was at version, 9.2.3228).  So why was the utility showing 9.2.3152, even after we applied the hotfix ?  No error was reported, but something wasn't right.

Not sure if the instance was not put in maintenance mode properly, or if something else occurred, but using RegMon (registry montior) while the multi-node installer utility ran, i was able to determine that the Polyserve utility used a registry entry to populate this screen.  We were checking the physical binary sqlservr.exe and @@Version (select @@version).  The registry entry is located at:  HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.n\Setup , the key is PatchLevel.  Note that you may have to determine what Instance maps to what MSSQL.n, this can be done by checking another key, HKLM\Software\Microsoft\Microsoft SQL Server\Instance Names, There you will see the mapping of an instance name to it's mssql.n location, see below:




Obviously something went wrong, even though no error was reported back through the service pack / hotfix installer.  The solution is to ensure to put the Instance in maintenance mode and then being the "non-trusting" type, I manually applied the hotfix / service pack to those nodes that have the issue.  Interestingly the hotfix installer indicated the instances had been upgraded, so obviously the hotfix installer doesn't check the same registry entry as the Polyserve installer.  I manually checked the instance in question and ran it again.   It reported success.  I again opened the registry and checked the patch level entry, this time it reported the correct version number.  I opened the Polyserve utility, multi-node installer and it also reported all the version numbers correctly and homogenously (is that a word ?).  We then took the instances out of maintenance mode and all was good.

We never experienced any errors or issues, so the moral of the story is, "to run your upgrade / service pack / hotfix and re-verify version numbers across each node, regardless of the messagebox reporting success", also "re-open the multi-node installer (it caches information so completely leave the utility), and verify that it "agrees" that the version numbers are the same".  Do this before going out of maintenance mode !

 

More SQL experts than you can shake a stick at

Tuesday, July 29th, 2008

Wow, there is a great article over on http://odinjobs.com. I would call it a virtual round table. It is basically the same interview with a 8 different SQL Server experts so you get some different and interesting perspectives. It is refreshing format. Definitely read of the month for me. Thanks for the plug, Brent!

 

blog_roll_01 The Panel Blogroll

 

The Articles.

http://www.odinjobs.com/blogs/careers/entry/sql_server_experts_ms_sql1

http://www.odinjobs.com/blogs/careers/entry/sql_server_experts_part_ii

http://www.odinjobs.com/blogs/careers/entry/sql_server_experts_part_iii

Come to a webcast on SQL Server Consolidation and Virtualization tomorrow

Tuesday, July 29th, 2008

Hello, this is Kevin Kline – join me tomorrow, along with Quest Domain Expert Brent Ozar and SQL Server MVP Ron Talmage, for a roundtable discussion on SQL Server consolidation and virtualization.  We’ll discuss a variety of issues that seem to come up constantly in the discussion forums – How are your consolidated / virtualized SQL Servers going to be used?  Are they running production environments with strict SLAs and heavy workloads?  Do SQL Server licensing costs make a big difference for your organization?  What about SQL Server management costs?  Will performance troubleshooting be an issue?  

The webcast is tomorrow, Thursday July 30th, at 8:00 AM PST / 11:00 AM EST.  Register for the webcast here.

I hope to see you there tomorrow!

PHP Driver for SQL Server – Watch out LAMP

Monday, July 28th, 2008

The PHP Driver for SQL Server 2005 RTM'ed today. A few months ago, I posted about the WIMP(Windows 2008, IIS7, MSSQL, PHP) stack that Microsoft was working on to take on the LAMP(Linux, Apache, MySQL, PHP) stack. Supposedly, Microsoft has made some tremendous strides in PHP performance with IIS7. I was like "meh" until today when they released the PHP driver for SQL Server 2005.

Test drive time?

Hmm, maybe it is time to setup a wordpress mirror. While looking looking for some IIS\PHP benchmark, I found this post that details the setup. I am pretty sure I could hack the MySQL code to work on MSSQL. *Looks at plate. Reconsiders.*

 

This post is useless without numbers

What does concerns me a little is the lack of benchmarks. It seems like it would be really easy to take the same open source php apps and the same hardware then run some linux vs. windows 2008 performance tests. I just did some quick searches so they may exists. The windows performance team did release their php tuning guidelines. Come on with the numbers Microsoft!

Time to over deliver

Really, it has to be better than LAMP or the community will chew it up and spit it out. I hope WIMP is actually hefty, hefty, hefty. I think MSSQL(and Oracle\DB2) have had slower growth due to open source RDMS bleed. A stout windows PHP platform, this driver and SQL Server 2008 Web Edition will better position MS in that segment.

SQL Heroes

Monday, July 28th, 2008

sqlheroes I got the SQL Pass community connector email this past Friday and the SQL Heroes contest got top billing. I really hope that gives the contest the "kick in the nads" that it needs. I would love to see tons of cool utilities and thingy-ma-bobs for SQL Server. Here is the current list of SQL related releases on CodePlex. The contest really has not gotten much attention from the SQL blogosphere. I am not sure if that is out of competition or lack of interest.

I am working on an entry. Slowly working on an entry. It is almost done but it seems like the last 4-6 hours of work I put in on it has been spread across weeks... What is my entry? Top Secret! Actually, I am thinking about making a big change to my entry at the last minute when RTM comes out so I don't want to spill the beans just yet.

The full contest rules are here. The blog can be found here.

"Disks are dead, they just don’t know it yet"

Friday, July 25th, 2008

I have been drooling over following Texas Memory Systems for a couples years and more recently, BitMicro.

I am not comparing the products that the companies sell because they are different products and the measurements are not the same. These bullets are mainly for drool factor and background for a post that I will refer you too.

 

Texas Memory Systems:

RamSan-400 SSD SAN

  • The World's Fastest Storage®

  • First solid state disk with 4Gb Fibre Channel interfaces.

  • First solid state disk with 4x InfiniBand interfaces.

  • Over 400,000 random I/Os per second.

  • 3000 MB/s random sustained external throughput.

  • Full array of hardware redundancy to ensure availability.

 

BitMicro:

E-Disk® Altima™ 4Gb Fibre Channel 3.5" Solid State Drive

  • Up to 640GB of storage per disk on 1" drives.
  • 1.6TB on 3.5" drives
  • 800 MB/sec Full Duplex Burst Rate
  • Up to 55,000 IOPS I/O Rate
  • Similar offering on u320 SCSI

Now these are numbers from the manufacturers. Lots of missing info like read\write numbers. Numbers for different sizes of reads and writes etc. However, did I say WOW?

I am making this post because I ran across a blog post by Mike Ault on a FriendFeed conversation.

Mike address's these SSD "lies"

1. Solid state drive technology is very expensive
2. Solid state devices are best when directly attached to the internal bus architecture
3. Solid state drives will only be niche players
4. You can get the same IO rate from disks as from SSD

and he ends with this quote:

I am not afraid to say it: SSD technology is here, it is ready for prime time and it is only a matter of time before disks are relegated to second tier storage. Disks are dead, they just don’t know it yet.

We can only hope so :) I highly recommend reading the whole posts here.

I hope Microsoft is watching this technology. Sure, SQL will like a SSD SAN right now but I bet it could be heavily be optimized to run on SSD.

 

edit: link fixed


Fatal error: Call to undefined function SEO_pager() in /home/ssp/webapps/htdocs/blog/wp-content/themes/newblogcity/archive.php on line 47