<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10575596</id><updated>2011-11-25T18:58:06.915+01:00</updated><title type='text'>snaps &amp; snippets</title><subtitle type='html'>See "&lt;a href="http://milambda.blogspot.com/2005/02/first-one.html"&gt;The First One&lt;/a&gt;"</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10575596.post-778700538740170787</id><published>2011-06-01T11:46:00.001+02:00</published><updated>2011-06-01T11:47:41.914+02:00</updated><title type='text'>XPath ID for People Avoiding Pubs</title><summary type='text'>I discussed the ID XPath function in a recent post. I composed the data samples used in that post from the data available in the pubs sample database. Since this particular database may not be a very popular commodity these days, I've also prepared a "pubs-free" alternative – using the same data as before, but with fewer obstacles.
   The sample consists of two scripts showcasing the examples </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/778700538740170787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=778700538740170787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/778700538740170787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/778700538740170787'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2011/06/xpath-id-for-people-avoiding-pubs.html' title='XPath ID for People Avoiding Pubs'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-260286565094242957</id><published>2011-05-09T15:29:00.013+02:00</published><updated>2011-06-01T11:57:47.428+02:00</updated><title type='text'>SQL Server: The XPath ID Function</title><summary type='text'>XML provides a simple and efficient way of storing relational data, especially for the purposes of transporting it from one RDBMS to another. Besides the "natural" technique, where the structure of the XML document is used to represent the relationships, XML Schema also provides three special data types that can be used to define the relationships inside an XML document. I've already discussed </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/260286565094242957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=260286565094242957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/260286565094242957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/260286565094242957'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2011/05/sql-server-xpath-id-function.html' title='SQL Server: The XPath ID Function'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-5854756269392213354</id><published>2011-04-05T00:09:00.001+02:00</published><updated>2011-04-05T00:11:09.669+02:00</updated><title type='text'>SQL Server Integration Services, Execute SQL with Complex Parameters</title><summary type='text'>If you're familiar with SQL Server Integration Services (SSIS) then you've probably, at one time or another, run into problems with the integration bit – however weird that may sound. I can understand the fact that SSIS is supposed to be generic and universal and platform independent, and therefore not favor a particular DBMS – not even the one that it's a part of. Nonetheless, for years now I </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/5854756269392213354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=5854756269392213354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5854756269392213354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5854756269392213354'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2011/04/sql-server-integration-services-execute.html' title='SQL Server Integration Services, Execute SQL with Complex Parameters'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7169079472733425767</id><published>2010-03-04T21:50:00.002+01:00</published><updated>2010-03-04T21:52:27.788+01:00</updated><title type='text'>Cannot open user default database? Login failed?</title><summary type='text'>Assigning a default database to every server principal (login) is good practice, no doubt. Just think of the last time someone in your organization created a user object in master by mistake. Generally, the most appropriate database to set as the default for a user is the database they will most likely access when performing their work, and for most cases that would be a user database (rather </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7169079472733425767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7169079472733425767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7169079472733425767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7169079472733425767'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2010/03/cannot-open-user-default-database-login.html' title='Cannot open user default database? Login failed?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2795329982056144571</id><published>2010-01-03T19:38:00.002+01:00</published><updated>2010-01-03T20:37:07.188+01:00</updated><title type='text'>What Permissions Does a Principal Have?</title><summary type='text'>SQL Server Management Studio provides several ways of checking which permissions have been granted (or denied) to whom and on what objects. This is achievable on different levels within the securables hierarchy:
   
    Server-level permissions, per principal: on the Permissions page of the Server Properties window (accessible through the View menu when the instance node is selected in the Object</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2795329982056144571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2795329982056144571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2795329982056144571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2795329982056144571'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2010/01/what-permissions-does-principal-have.html' title='What Permissions Does a Principal Have?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3815674530903539867</id><published>2009-11-20T21:17:00.001+01:00</published><updated>2009-11-20T21:18:53.418+01:00</updated><title type='text'>SQL Server MVP Deep Dives</title><summary type='text'>Earlier this month, at the PASS 2009 Summit, a very special event took place – the SQL Server MVP Deep Dives book launch. As the title suggests, this is no ordinary SQL Server book, for several reasons:
   
    
   
   
    It was written by 53 MVPs;
    100 percent of authors' royalties have been donated to support War Child International, a network of independent organizations, working across </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3815674530903539867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3815674530903539867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3815674530903539867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3815674530903539867'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2009/11/sql-server-mvp-deep-dives.html' title='SQL Server MVP Deep Dives'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-1313962036643654789</id><published>2009-04-10T18:54:00.002+02:00</published><updated>2009-04-10T18:57:12.405+02:00</updated><title type='text'>[snap] Pending File Rename Operations?</title><summary type='text'>I will never understand why some software/hardware vendors fail (forget?) to clean up the Windows registry after they've... well, fondled with it for reasons known only to them, such as during software installation or updates.
   When installing SQL Server – the release or a service pack – on a machine where software from one of the aforementioned vendors has recently been installed or updated, </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/1313962036643654789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=1313962036643654789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/1313962036643654789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/1313962036643654789'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2009/04/snap-pending-file-rename-operations.html' title='[snap] Pending File Rename Operations?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2652100842379167101</id><published>2009-04-09T10:06:00.002+02:00</published><updated>2009-04-09T10:07:06.637+02:00</updated><title type='text'>SQL Server 2008 Service Pack 1</title><summary type='text'>SQL Server 2008 Service Pack 1 has been released on April 7th 2009, bringing a few improvements to the setup process – on top of several important fixes.
   Be sure to review the release notes before attempting installation.
   The files can be downloaded from the following site:
   
    SQL Server 2008 Service Pack 1.
   
   The list of bugs fixed in SP1:
   
    KB 968369.
   
   
   ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2652100842379167101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2652100842379167101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2652100842379167101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2652100842379167101'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2009/04/sql-server-2008-service-pack-1.html' title='SQL Server 2008 Service Pack 1'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2475915522393672391</id><published>2009-03-08T20:33:00.003+01:00</published><updated>2009-04-10T19:31:39.729+02:00</updated><title type='text'>SQL Server 2008 XPath Functions</title><summary type='text'>The 2008 version of SQL Server has not introduced as many changes to its XPath implementation as one might have expected; nonetheless, two additional XPath functions have been added.
   In fact, I'm very sure many of us have missed both of them ever since SQL Server 2005:
   
    lower-case() – returns the text of the target node in lower case; and
    upper-case() – returns the text of the </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2475915522393672391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2475915522393672391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2475915522393672391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2475915522393672391'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2009/03/sql-server-2008-xpath-functions.html' title='SQL Server 2008 XPath Functions'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7395579062338066619</id><published>2009-02-03T12:36:00.001+01:00</published><updated>2009-02-03T12:37:25.177+01:00</updated><title type='text'>SQL Server 2008 Books Online Update (January 2009)</title><summary type='text'>The January 2009 update of SQL Server 2008 Books Online has been released last Friday. The installation file is available for download:
   
    Microsoft SQL Server 2008 Books Online (January 2009).
   
   An update of the sample databases is scheduled for spring, and by the looks of things that's still very far away. ;)
   Anyway, the samples are available at CodePlex:
   
    SQL Server 2008 </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7395579062338066619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7395579062338066619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7395579062338066619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7395579062338066619'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2009/02/sql-server-2008-books-online-update.html' title='SQL Server 2008 Books Online Update (January 2009)'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3606130677860706608</id><published>2008-12-31T21:17:00.002+01:00</published><updated>2008-12-31T21:50:27.332+01:00</updated><title type='text'>2008 May Not Be the Last for Planet Earth</title><summary type='text'>What do you think?
   Have a good one!
   
   ML
   </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3606130677860706608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3606130677860706608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3606130677860706608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3606130677860706608'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/12/2008-may-not-be-last-for-planet-earth.html' title='2008 May Not Be the Last for Planet Earth'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-548211078776741374</id><published>2008-12-21T18:13:00.004+01:00</published><updated>2008-12-21T18:15:59.614+01:00</updated><title type='text'>Sparse Columns and Filtered Indexes</title><summary type='text'>At the December meeting of SLODUG, the Slovenian Developers User Group, I've presented two new functionalities introduced with SQL Server 2008:
   
    Sparse Columns – a new (or, at least, an improved) way of storing data in nillable columns so that non-existent data takes up virtually no space in the database.
    
    
    Well, to be honest, storage usage *is* affected (as the maximum size of</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/548211078776741374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=548211078776741374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/548211078776741374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/548211078776741374'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/12/sparse-columns-and-filtered-indexes.html' title='Sparse Columns and Filtered Indexes'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7587502292021673702</id><published>2008-12-21T18:09:00.002+01:00</published><updated>2008-12-21T18:12:26.625+01:00</updated><title type='text'>Some Old News</title><summary type='text'>This may be old news, but I haven't said anything about this so far, so this may not be old news to everyone. ;)
   
   SQL Server 2005 Service Pack 3
   SQL Server 2005 SP3 has been released on December 15th 2008. The files (elevating the full version number to 9.00.4035) are available for download:
   
    Microsoft SQL Server 2005 Service Pack 3;
    Microsoft SQL Server 2005 Express Edition </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7587502292021673702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7587502292021673702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7587502292021673702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7587502292021673702'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/12/some-old-news.html' title='Some Old News'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7071865657738036144</id><published>2008-10-01T09:50:00.004+02:00</published><updated>2008-10-01T09:53:28.592+02:00</updated><title type='text'>SQL Server 2008 Books Online Update (August 2008)</title><summary type='text'>An update to SQL Server 2008 Books Online has just been published yesterday:

Microsoft SQL Server 2008 Books Online (August 2008).


ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7071865657738036144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7071865657738036144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7071865657738036144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7071865657738036144'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/10/sql-server-2008-books-online-update.html' title='SQL Server 2008 Books Online Update (August 2008)'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3932404039894613828</id><published>2008-08-26T11:53:00.001+02:00</published><updated>2008-08-26T11:54:27.601+02:00</updated><title type='text'>SQL Server 2008 Express with Advanced Services</title><summary type='text'>The advanced edition of SQL Server 2008 Express is now available for download. As was the case with version 2005 when this edition was first introduced, the Advanced Services include (in addition to the Database Engine, of course):
   
    SQL Server Management Studio Basic (formerly: Express);
    Full-text Search; and
    SQL Server Reporting Services (limited to local reporting).
   
   You </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3932404039894613828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3932404039894613828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3932404039894613828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3932404039894613828'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/08/sql-server-2008-express-with-advanced.html' title='SQL Server 2008 Express with Advanced Services'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3155594218483092829</id><published>2008-08-08T18:56:00.004+02:00</published><updated>2008-08-09T14:23:57.142+02:00</updated><title type='text'>SQL Server 2008 RTM</title><summary type='text'>I'm sure you know by now that SQL Server 2008 has RTMed about two days ago and is already available for download to MSDN/TechNet subscribers.
   There are additional free downloads that you might also be interested in:
   
    Microsoft SQL Server 2008 Evaluation Edition;
    Microsoft SQL Server 2008 Upgrade Advisor;
    Microsoft SQL Server 2008 Feature Pack, August 2008;
    Microsoft SQL </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3155594218483092829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3155594218483092829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3155594218483092829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3155594218483092829'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/08/sql-server-2008-rtm.html' title='SQL Server 2008 RTM'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2139616680184645946</id><published>2008-06-13T16:08:00.002+02:00</published><updated>2008-06-13T16:10:44.661+02:00</updated><title type='text'>SQL Server 2008 (RC0), FILESTREAM changes</title><summary type='text'>At this year's Microsoft NT Conference in Portorož fellow MVP Andrej Tozon and I have presented a workshop on designing solutions with Visual Studio 2008 and SQL Server 2008 using the Windows Presentation Foundation and a few new SQL Server 2008 features. Andrej has blogged about this last month and has made all the workshop files available on his site.
   You might also already know that SQL </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2139616680184645946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2139616680184645946' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2139616680184645946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2139616680184645946'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/06/sql-server-2008-rc0-filestream-changes.html' title='SQL Server 2008 (RC0), FILESTREAM changes'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7292731728332986070</id><published>2008-05-07T16:08:00.005+02:00</published><updated>2008-05-07T16:13:58.771+02:00</updated><title type='text'>SQL Server 2008 Scoped Search</title><summary type='text'>This may be old news, but it's also the kind of "old news" that's actually becoming more and more relevant these days. ;)
   More than a month ago the Microsoft SQL Server documentation team have announced a new Live Search Macro:
   
    The SQL Server 2008 Books Online Scoped Search macro.
   
   Those of you who've found the 'old' one useful, must have been anticipating the 'new' one.
   </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7292731728332986070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7292731728332986070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7292731728332986070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7292731728332986070'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/05/sql-server-2008-scoped-search.html' title='SQL Server 2008 Scoped Search'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3617559496620471845</id><published>2008-04-01T16:19:00.004+02:00</published><updated>2009-09-02T17:13:13.978+02:00</updated><title type='text'>SQL Server: XQuery/XPath, Predicate Functions</title><summary type='text'>Previously we have looked at the supported XQuery/XPath retrieval functions implemented in SQL Server 2005 with a few examples of use, and we have mentioned the fact that some functions are restricted to use in XPath predicates. Today we will see which XQuery/XPath functions are subject to this restriction.
   Any attempt at using these restricted functions to retrieve data from the XML would </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3617559496620471845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3617559496620471845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3617559496620471845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3617559496620471845'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/04/sql-server-xqueryxpath-predicate.html' title='SQL Server: XQuery/XPath, Predicate Functions'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-4827186073566194816</id><published>2008-03-10T18:46:00.004+01:00</published><updated>2011-05-17T12:29:55.157+02:00</updated><title type='text'>SQL Server: XQuery/XPath, Retrieval Functions</title><summary type='text'>Even after all this time (since the release of SQL Server 2005 which introduced the XML data type) I still notice users having trouble with XQuery/XPath functions when processing (or rather trying to process) XML data in SQL Server, that's why I've decided to dedicate a few more posts to the subject. The ulterior motive here is me learning and testing what (I think) I know. ;)
   I've introduced </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/4827186073566194816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=4827186073566194816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/4827186073566194816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/4827186073566194816'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/03/sql-server-xqueryxpath-retrieval.html' title='SQL Server: XQuery/XPath, Retrieval Functions'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-166757444036593021</id><published>2008-02-24T16:26:00.001+01:00</published><updated>2009-09-02T17:14:14.986+02:00</updated><title type='text'>SQL Server XQuery, Accessing Attributes</title><summary type='text'>While browsing this blog's usage logs recently, I've noticed quite a few referrals from various search engines of users trying to troubleshoot problems they may have encountered when accessing XML attributes in a SQL Server XQuery.
   Although the problem has been discussed in the past, and has even been documented in Books Online, some users out there still aren't familiar with a SQL Server 2005</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/166757444036593021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=166757444036593021' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/166757444036593021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/166757444036593021'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/02/sql-server-xquery-accessing-attributes.html' title='SQL Server XQuery, Accessing Attributes'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-1704661294466607270</id><published>2008-01-11T17:36:00.001+01:00</published><updated>2008-02-25T12:36:12.963+01:00</updated><title type='text'>What's wrong with COUNT(*)?</title><summary type='text'>Counting – what's it all about? I'm sure you've heard about a trick that one should use when aggregating data using the COUNT system function in Microsoft SQL Server; specifically, how the performance of the function can be improved using a neat trick. But can we go beyond neat...?
   The tests have been done on a SQL Server 2005 (SP2) instance; you're all kindly invited to also run them on an </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/1704661294466607270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=1704661294466607270' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/1704661294466607270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/1704661294466607270'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2008/01/whats-wrong-with-count.html' title='What&apos;s wrong with COUNT(*)?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-6524612742115085702</id><published>2007-12-31T19:41:00.000+01:00</published><updated>2007-12-31T19:53:48.839+01:00</updated><title type='text'>Not Just Any Old 2008</title><summary type='text'>In this uncertain world of ours one thing remains pretty certain.
   2008 is definitely coming. The year, that is. ;)
   Have a good one!
   
   ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/6524612742115085702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=6524612742115085702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6524612742115085702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6524612742115085702'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/12/not-just-any-old-2008.html' title='Not Just Any Old 2008'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-3187521388393647867</id><published>2007-12-21T17:45:00.001+01:00</published><updated>2007-12-22T00:09:44.805+01:00</updated><title type='text'>Microsoft Office 2007 iFilters and SQL Server</title><summary type='text'>Ever since the problem with the missing iFilters for Office 2007 documents first arose, the official response by the vendor was to install Office 2007 (or at least Word 2007) on the server. I believe we all agree that this simply isn't good practice.
   First of all, why would anyone need an end-user application such as Microsoft Word on a server?
   Obviously Word would never even have to be </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/3187521388393647867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=3187521388393647867' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3187521388393647867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/3187521388393647867'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/12/microsoft-office-2007-ifilters-and-sql.html' title='Microsoft Office 2007 iFilters and SQL Server'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-418515415457980705</id><published>2007-11-30T21:49:00.000+01:00</published><updated>2007-11-30T21:58:15.305+01:00</updated><title type='text'>SQL 2005 Books Online – September 2007 Update</title><summary type='text'>Once again it's time to update the local copy of SQL Server 2005 Books Online.
   It's the end of November and the September 2007 Update has just been made available for download. The files are available through Windows Update, but in case you've missed them (or want full control over the installation) you can also find them here:
   
    SQL Server 2005 Books Online (September 2007).
   
   The </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/418515415457980705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=418515415457980705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/418515415457980705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/418515415457980705'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/11/sql-2005-books-online-september-2007.html' title='SQL 2005 Books Online &amp;ndash; September 2007 Update'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-8181566879642236795</id><published>2007-09-14T13:31:00.000+02:00</published><updated>2007-09-14T13:33:18.621+02:00</updated><title type='text'>SQL Server 2005 Analysis Services – Column Truncation "Inconvenience"</title><summary type='text'>I've been using SQL Server Analysis Services for large data analysis (analyzing texts) recently, and I've encountered an intriguing problem, the investigation of which has led me to some unexpected discoveries (and a workaround).
   To reproduce the problem start SQL Server Business Intelligence Studio, then follow these 6 simple steps:
   
    Create a new SQL Server Analysis project;
    Add a </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/8181566879642236795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=8181566879642236795' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/8181566879642236795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/8181566879642236795'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/09/sql-server-2005-analysis-services.html' title='SQL Server 2005 Analysis Services &amp;ndash; Column Truncation &quot;Inconvenience&quot;'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-708812376033686902</id><published>2007-09-07T18:55:00.000+02:00</published><updated>2007-09-07T18:57:21.487+02:00</updated><title type='text'>An Unusual Data Rescue</title><summary type='text'>Take a look at the picture below.
   
   Somewhere in that lovely mess, on one shred of paper – or more? – there is an eleven digit number that I need.
   How lovely!
   Luckily for me, I've managed to find all the pieces. And it only took about 20 minutes. :) Which is still a long time compared to about three seconds that it originally took to cause the problem...
   Lessons learned:
   
    </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/708812376033686902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=708812376033686902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/708812376033686902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/708812376033686902'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/09/unusual-data-rescue.html' title='An Unusual Data Rescue'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2445132111237988876</id><published>2007-07-20T14:49:00.000+02:00</published><updated>2007-07-20T14:53:42.383+02:00</updated><title type='text'>Six Months</title><summary type='text'>»Become a better developer in six months.« Define 'better'. :)
   I've been tagged by Denis 'The SQL Menace' Gobo to share my views on how I would go about becoming a better developer in the next six months.
   (Self-)education is the first thing that comes to mind, and the majority of the tag-attack "victims" agree that reading and learning (and writing about it) directly lead to being better at</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2445132111237988876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2445132111237988876' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2445132111237988876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2445132111237988876'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/07/six-months.html' title='Six Months'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-5283061433798749939</id><published>2007-07-06T15:08:00.000+02:00</published><updated>2007-07-06T15:17:00.254+02:00</updated><title type='text'>SQL Server 2005 XML Methods, Part Four, The Existential Quandary</title><summary type='text'>We've seen SQL Server 2005 XML data retrieval methods in previous posts. In particular we've seen how they perform compared to T-SQL retrieval methods, and – quite frankly – the results were somewhat disappointing.
   There is an XML retrieval method that we haven't discussed yet. There are two reasons why not:
   
    It's not really a retrieval method as much as it is a way of testing whether </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/5283061433798749939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=5283061433798749939' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5283061433798749939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5283061433798749939'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/07/sql-server-2005-xml-methods-part-four.html' title='SQL Server 2005 XML Methods, Part Four, The Existential Quandary'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-253827565763641952</id><published>2007-07-04T12:56:00.001+02:00</published><updated>2007-07-04T12:57:12.132+02:00</updated><title type='text'>SQL Server 2005 Best Practices Analyzer</title><summary type='text'>SQL Server 2005 Best Practices Analyzer has been released on July 2nd, and is available at this site:

SQL Server 2005 Best Practices Analyzer (July 2007).


ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/253827565763641952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=253827565763641952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/253827565763641952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/253827565763641952'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/07/sql-server-2005-best-practices-analyzer.html' title='SQL Server 2005 Best Practices Analyzer'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-5939894645551572313</id><published>2007-07-04T01:05:00.000+02:00</published><updated>2007-07-04T01:13:57.369+02:00</updated><title type='text'>2007 Microsoft MVP Award</title><summary type='text'>I am extremely pleased to tell you, dear reader(s), that on July 1st I have been presented with the 2007 Microsoft MVP award in the »Windows Server System – SQL Server« category.
I would like to take this opportunity to thank everybody at the MVP Program for considering my participation in the communities to be worthy of this award.
I would certainly like to thank Dejan Sarka for introducing me </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/5939894645551572313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=5939894645551572313' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5939894645551572313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/5939894645551572313'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/07/2007-microsoft-mvp-award.html' title='2007 Microsoft MVP Award'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2582119797480243453</id><published>2007-06-18T11:23:00.000+02:00</published><updated>2007-06-18T11:52:03.010+02:00</updated><title type='text'>SQL 2005 Books Online – May 2007</title><summary type='text'>In case you've missed it, the May 2007 update of SQL Server 2005 Books Online has been made available for download on June 12th.
   The 135 MB setup file can be downloaded from this site:
   
    SQL Server 2005 Books Online (May 2007).
   
   Of course, the online edition has also been updated accordingly.
   Also, Windows Live Search now supports SQL Server 2005 Books Online Scoped Search, </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2582119797480243453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2582119797480243453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2582119797480243453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2582119797480243453'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/06/sql-2005-books-online-may-2007.html' title='SQL 2005 Books Online &amp;ndash; May 2007'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-7564176379238804775</id><published>2007-05-18T17:02:00.000+02:00</published><updated>2007-05-18T17:25:41.461+02:00</updated><title type='text'>Presentation Slides and Enabling Database File Encryption</title><summary type='text'>The PowerPoint slideshow of the presentation I held at this year's NT Conference is ready for download. The presentation is in Slovene, but I'm willing to translate it to English (or German or Latin – if you give me some time ;) – leave a comment in this blog if you're interested.
   The presentation provides an overview of cryptographic capabilities of SQL Server 2005, focusing on the Database </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/7564176379238804775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=7564176379238804775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7564176379238804775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/7564176379238804775'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/05/presentation-slides-and-enabling.html' title='Presentation Slides and Enabling Database File Encryption'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-2718088785269322621</id><published>2007-05-11T20:05:00.000+02:00</published><updated>2007-05-11T20:06:47.301+02:00</updated><title type='text'>SQL Server 2005 Cryptography, Symmetric key performance</title><summary type='text'>As mentioned before, cryptography is a new functionality in SQL Server 2005. Most aspects of data encryption, digital signing of modules, and the use of cryptographic objects for authentication and authorization are covered in Books Online. Additionally, here are the links to a couple of blogs dedicated to cryptography in SQL Server 2005 (and SQL Server security in general) that I found very </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/2718088785269322621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=2718088785269322621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2718088785269322621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/2718088785269322621'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/05/sql-server-2005-cryptography-symmetric.html' title='SQL Server 2005 Cryptography, Symmetric key performance'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-6902944676985350668</id><published>2007-03-07T20:54:00.000+01:00</published><updated>2007-03-07T20:58:18.584+01:00</updated><title type='text'>SQL Server 2005 Service Pack 2a</title><summary type='text'>Although SP2 for SQL Server has been released more than a week ago I haven't yet had the time to upgrade. Which could also be interpreted as good fortune as yesterday SP2a has been released bringing a fix to the »original« SP2. You can read more about it in this KB article.
   In brief: if you use History Cleanup tasks or Maintenance Cleanup tasks in your SQL Server 2005 maintenance plans (or IS </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/6902944676985350668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=6902944676985350668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6902944676985350668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6902944676985350668'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/03/sql-server-2005-service-pack-2a.html' title='SQL Server 2005 Service Pack 2a'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-6543556443767724165</id><published>2007-02-19T18:54:00.000+01:00</published><updated>2007-02-19T19:05:24.395+01:00</updated><title type='text'>SQL Server 2005 Service Pack 2</title><summary type='text'>After the December 2006 CTP of SQL Server 2005 SP2 the second Service Pack has RTM'ed today and is ready for download at the official site.
   The official site contains links to individual downloads, here are a few essential short cuts:
   
    Microsoft SQL Server 2005 Service Pack 2;
    Microsoft SQL Server 2005 Express Edition SP2 (registration is encouraged, not necessary);
    SQL Server </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/6543556443767724165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=6543556443767724165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6543556443767724165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6543556443767724165'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/02/sql-server-2005-service-pack-2.html' title='SQL Server 2005 Service Pack 2'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-6283763419855785872</id><published>2007-02-14T13:41:00.000+01:00</published><updated>2007-07-20T00:29:45.583+02:00</updated><title type='text'>SQL Server 2005 XML Methods, Part Three, The XPath Expression</title><summary type='text'>We've discussed the basics of XML in SQL, we've seen a few examples of XQueries and their performance; I guess we're ready to go a bit deeper. In this article we'll look more closely at XPath expressions and see how they behave in SQL Server 2005 XML Queries.
   
   More XPaths than one lead to &lt;Rome/&gt;
   First of all there are several ways of formulating a valid XPath expression – for a </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/6283763419855785872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=6283763419855785872' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6283763419855785872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/6283763419855785872'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/02/sql-server-2005-xml-methods-part-three.html' title='SQL Server 2005 XML Methods, Part Three, The XPath Expression'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116963969366894828</id><published>2007-01-24T12:54:00.000+01:00</published><updated>2007-01-24T13:01:06.010+01:00</updated><title type='text'>XQuery 1.0 becomes a W3C Recommendation</title><summary type='text'>On January 23rd 2007 the World Wide Web Consortium announced that XQuery 1.0, XPath 2.0 and XSLT 2.0 are now official W3C Recommendations, meaning that the R&amp;D activities regarding the current versions have come to a conclusion and that all three standards are now ready for implementation. On the other hand this also means that the work on the next versions has started – I believe the XML Query </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116963969366894828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116963969366894828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116963969366894828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116963969366894828'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/01/xquery-10-becomes-w3c-recommendation.html' title='XQuery 1.0 becomes a W3C Recommendation'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116829806097261401</id><published>2007-01-09T00:13:00.000+01:00</published><updated>2007-02-14T15:10:10.363+01:00</updated><title type='text'>SQL Server 2005 XML Methods, Part Two, Retrieval Comparison</title><summary type='text'>After a brief introduction to XML retrieval methods in SQL Server 2005 we can examine the behaviour of a few practical examples.
   The implementation of XML as a native data type could not have been considered complete without XML indexes. Especially when considering data retrieval – indexing may just as well be the deciding element of the entire implementation. There are four types of XML </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116829806097261401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116829806097261401' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116829806097261401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116829806097261401'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2007/01/sql-server-2005-xml-methods-part-two.html' title='SQL Server 2005 XML Methods, Part Two, Retrieval Comparison'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116696681922730007</id><published>2006-12-24T14:22:00.000+01:00</published><updated>2006-12-27T10:37:12.283+01:00</updated><title type='text'>A post *not* dedicated to SQL</title><summary type='text'>Here's to new beginnings!
   
   May peace and pleasure fill your holidays, and continue into a fantastic 2007!
   
   ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116696681922730007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116696681922730007' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116696681922730007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116696681922730007'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/12/post-not-dedicated-to-sql.html' title='A post *not* dedicated to SQL'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116661543299381125</id><published>2006-12-20T12:49:00.000+01:00</published><updated>2007-03-01T10:18:52.249+01:00</updated><title type='text'>Windows Vista and SQL Server 2005</title><summary type='text'>There have been several discussions in the communities (forums, newsgroups, blogs) on the fact that Vista, the next version of the Microsoft Windows operating system, does not (or will not) support SQL Server 2005. And when I say "discussions", I really should say "complaints".
   Yes, SQL Server 2005 and SQL Server 2005 Express are not supported on Vista. That's a fact. Here's another fact: </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116661543299381125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116661543299381125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116661543299381125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116661543299381125'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/12/windows-vista-and-sql-server-2005.html' title='Windows Vista and SQL Server 2005'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116465012722062846</id><published>2006-11-27T18:53:00.000+01:00</published><updated>2006-11-27T18:55:31.323+01:00</updated><title type='text'>XQuery 1.0 Becomes a Proposed Recommendation</title><summary type='text'>On November 22nd the World Wide Web Consortium announced that the XQuery 1.0, XPath 2.0 and XSLT 2.0 became Proposed Recommendations. In other words, it's safe to assume that in the early 2007 we should expect the work on current versions of these three XML management standards to end with proper W3C Recommendations. Obviously, the R&amp;D activities of the XML Query Working Group will not seize, </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116465012722062846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116465012722062846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116465012722062846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116465012722062846'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/11/xquery-10-becomes-proposed.html' title='XQuery 1.0 Becomes a Proposed Recommendation'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116439846845232638</id><published>2006-11-24T20:59:00.000+01:00</published><updated>2007-01-18T00:28:31.026+01:00</updated><title type='text'>SQL Server 2005 XML Methods, Part One, Basic Retrieval</title><summary type='text'>As mentioned in one of the previous posts XML became a native data type with SQL Server 2005. Opinions on its usefulness in a relational database are divided – "fragmented", even. ;) The purpose of this series of posts is to shed some light on how the XML data type could be utilized efficiently, and what are the caveats that should be avoided. In this first part specifically, we'll take a look at</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116439846845232638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116439846845232638' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116439846845232638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116439846845232638'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/11/sql-server-2005-xml-methods-part-one.html' title='SQL Server 2005 XML Methods, Part One, Basic Retrieval'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116318948405403021</id><published>2006-11-10T21:07:00.000+01:00</published><updated>2006-11-22T15:13:17.590+01:00</updated><title type='text'>NOLOCK no good</title><summary type='text'>Query hints should be used with caution, and a special care should be given to locking hints; in Books Online this subject is fully covered, and several SQL professionals out there have added their own views and experience, which is also very evident online. I've also used some examples of how query hints work when discussing optimistic concurrency (and some other places) – purely for </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116318948405403021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116318948405403021' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116318948405403021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116318948405403021'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/11/nolock-no-good.html' title='NOLOCK no good'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-116188066684951048</id><published>2006-10-26T18:37:00.000+02:00</published><updated>2006-10-26T18:37:47.383+02:00</updated><title type='text'>The expense of down-converting unicode values</title><summary type='text'>Using functions on columns in query conditions is bad practice and should be avoided – I've mentioned that fact before. As it turns out, sometimes the database engine itself chooses to transform column data in order to test a condition, causing a negative performance impact. A serious one as well.
As Marco Russo describes in his post on a problem one of his users has encountered, the database </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/116188066684951048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=116188066684951048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116188066684951048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/116188066684951048'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/10/expense-of-down-converting-unicode.html' title='The expense of down-converting unicode values'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115987089226135735</id><published>2006-10-03T12:18:00.000+02:00</published><updated>2007-07-06T15:20:48.379+02:00</updated><title type='text'>EXISTS or NOT EXISTS... that is the question here</title><summary type='text'>
    Whether 'tis nobler to count the rows in tables
    
    And stall the traffic with outrageous pride
    
    Or to merely stop as early as a single row
    
    Fullfills the expectations; To exist: to be found.
   
   Has Hamlet ever designed a data driven solution?
   How to check whether one or more rows corresponding to a given set of conditions exist? It should be common knowledge by </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115987089226135735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115987089226135735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115987089226135735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115987089226135735'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/10/exists-or-not-exists-that-is-question.html' title='EXISTS or NOT EXISTS... that is the question here'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115939968178858640</id><published>2006-09-28T01:26:00.000+02:00</published><updated>2006-12-14T19:09:39.766+01:00</updated><title type='text'>SQL 2005 and tempdb</title><summary type='text'>With the expansion of the row versioning framework in SQL Server 2005 tempdb becomes an even more important part of the platform than it used to be. Snapshot transaction isolation as well as database snapshots make big use of this "temporary" storage facility and keeping track of its usage is the key to the continuous efficiency of data management solutions based on the SQL Server platform.
   As</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115939968178858640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115939968178858640' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115939968178858640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115939968178858640'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/09/sql-2005-and-tempdb.html' title='SQL 2005 and tempdb'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115883938176585549</id><published>2006-09-21T13:42:00.000+02:00</published><updated>2006-11-21T08:07:58.056+01:00</updated><title type='text'>Date[Time] constructor SQL-style</title><summary type='text'>Querying temporal data in SQL Server has been discussed on many occasions, many tips and how-to's can be found online, best practices regarding date/time data that have evolved over time have been discussed in blogs, articles and books. As the eternal quest in developing practical, simple and efficient solutions regarding temporal data in SQL continues I've decided to chip in and show you a </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115883938176585549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115883938176585549' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115883938176585549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115883938176585549'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/09/datetime-constructor-sql-style.html' title='Date[Time] constructor SQL-style'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115771926840524462</id><published>2006-09-08T14:40:00.000+02:00</published><updated>2007-07-04T23:33:29.318+02:00</updated><title type='text'>Snapshot transaction isolation – optimistic concurrency made easy?</title><summary type='text'>In a previous post we've looked at an example of how the principles of optimistic concurrency should be corrected in order to prevent possible harmful consequences that might come from uninhibited optimism. We've seen how to utilise a rowversion column to track data modifications at row level, and we've reached into the core of how to leverage data modification activities in a multi-tiered </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115771926840524462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115771926840524462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115771926840524462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115771926840524462'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/09/snapshot-transaction-isolation.html' title='Snapshot transaction isolation &amp;ndash; optimistic concurrency made easy?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115710723755976425</id><published>2006-09-01T12:35:00.000+02:00</published><updated>2006-09-01T12:42:35.156+02:00</updated><title type='text'>Optimistic concurrency (with essential corrections)</title><summary type='text'>Optimistic concurrency rests on somewhat wobbly foundations – the presumption that no user will ever be blocked by another user. Which is usually true for single-user solutions while multi-user solutions require a slight correction to this logic. Put another way: with optimistic concurrency we assume that a particular row will only be modified by one user at any given time, and being fully </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115710723755976425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115710723755976425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115710723755976425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115710723755976425'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/09/optimistic-concurrency-with-essential.html' title='Optimistic concurrency (with essential corrections)'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115676774271055340</id><published>2006-08-28T14:20:00.000+02:00</published><updated>2006-09-01T16:18:37.740+02:00</updated><title type='text'>[snap] Cryptography limitations</title><summary type='text'>As mentioned before SQL Server 2005 brings several security improvements – one of them being the support for cryptography. The purpose of the built-in cryptiographic functions is to enhance server and/or database security and to provide additional methods in data security (by allowing the encryption of values in columns and variables). The SQL Server encryption hierarchy is well documented in </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115676774271055340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115676774271055340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115676774271055340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115676774271055340'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/snap-cryptography-limitations.html' title='[snap] Cryptography limitations'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115590250698107567</id><published>2006-08-18T13:59:00.005+02:00</published><updated>2011-05-10T16:54:20.916+02:00</updated><title type='text'>XPath/XQuery functions in SQL Server 2005</title><summary type='text'>One of the key improvements in SQL Server 2005 is the implementation of XML as a native data type. At first glance this may not seem like such a big task (after all, it's just one more data type, right, and it's been a standard for years) but after considering the amount of additional features involved, the task of implementing it seems far from trivial:
   
    XML Schema - a proper data type </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115590250698107567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115590250698107567' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115590250698107567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115590250698107567'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/xpathxquery-functions-in-sql-server.html' title='XPath/XQuery functions in SQL Server 2005'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115554712900231558</id><published>2006-08-14T11:15:00.000+02:00</published><updated>2006-08-14T11:20:42.353+02:00</updated><title type='text'>Certificate dependency</title><summary type='text'>Knowing whether a certificate exists and/or is in use by a dependent object is good, knowing how it's used is slightly better, but knowing exactly which objects are using a certificate is what is really useful.
This post is a follow-up to a previous post concerning the use of certificates, so without further ado...
...here's the function:
create function dbo.fnList_Certificate_Dependencies
 (
 @</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115554712900231558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115554712900231558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115554712900231558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115554712900231558'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/certificate-dependency.html' title='Certificate dependency'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115520232692798039</id><published>2006-08-10T11:24:00.000+02:00</published><updated>2006-08-10T11:32:07.256+02:00</updated><title type='text'>Is a certificate in use?</title><summary type='text'>SQL 2005 brought several important security improvements in regard to previous versions, one of which is the Certificate. It has three purposes in SQL 2005:

 Authentication – subjects (persons, devices, services) are granted access to the server (e.g. through HTTP endpoints, as database principals) after a valid certification path has been verified;
 Module signatures – procedures, functions, </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115520232692798039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115520232692798039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115520232692798039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115520232692798039'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/is-certificate-in-use.html' title='Is a certificate in use?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115503664205284275</id><published>2006-08-08T13:30:00.000+02:00</published><updated>2006-09-22T10:58:56.493+02:00</updated><title type='text'>Full synchronisation</title><summary type='text'>In contrast to Unidirectional synchronisation (discussed in a previous post) also better described as source-to-target data propagation, the purpose of Full synchronisation is to consolidate data at both locations – following the meaning of the word 'synchronisation' more closely: resulting in current historical events (e.g. business transactions) at both locations.
From Greek: syn- (together [</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115503664205284275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115503664205284275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115503664205284275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115503664205284275'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/full-synchronisation_08.html' title='Full synchronisation'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115503650295394177</id><published>2006-08-08T13:22:00.000+02:00</published><updated>2006-08-08T13:42:28.856+02:00</updated><title type='text'>SQL Server 2005 Books Online  – July 2006 Update</title><summary type='text'>In case you missed it - like I have (I've been offline for a while) - the Books Online collection was updated July 20th.
The files can be downloaded from this location.
The online version has also been updated.

ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115503650295394177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115503650295394177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115503650295394177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115503650295394177'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/08/sql-server-2005-books-online-july-2006.html' title='SQL Server 2005 Books Online  &amp;ndash; July 2006 Update'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115312908211063731</id><published>2006-07-17T11:37:00.000+02:00</published><updated>2006-09-11T01:36:16.343+02:00</updated><title type='text'>Column Dependencies and Consequences</title><summary type='text'>There's one task that every database administrator and every database designer hates. Database schema modifications. Executing appropriate DDL scripts usually does the trick, but is the ALTER script for the modified object enough? What about dependencies? In a relational database pretty much every object is in some way related to one or more other objects - either depending on other objects or </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115312908211063731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115312908211063731' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115312908211063731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115312908211063731'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/07/column-dependencies-and-consequences.html' title='Column Dependencies and Consequences'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115270923533939765</id><published>2006-07-12T15:00:00.000+02:00</published><updated>2006-07-12T15:00:35.426+02:00</updated><title type='text'>Aggregate concatenation in SQL 2005</title><summary type='text'>In a previous post I've discussed aggregate concatenation and the issues related to that particular solution.
SQL Server 2005 provides new possibilities of implementing safer and more efficient methods. The most obvious one would seem to be in designing a user-defined CLR function, since .Net 2.0 seems like a pretty efficient place to manipulate strings (in respect to T-SQL). There is, however, </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115270923533939765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115270923533939765' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115270923533939765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115270923533939765'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/07/aggregate-concatenation-in-sql-2005.html' title='Aggregate concatenation in SQL 2005'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115252282810775407</id><published>2006-07-10T11:13:00.000+02:00</published><updated>2006-07-17T13:37:28.093+02:00</updated><title type='text'>Unidirectional synchronisation</title><summary type='text'>In the newsgroups a frequent question is on how to synchronise data between two locations without the use of replication.
Once again, the set-based aproach proves to be the most transparent, the most efficient and the most easy to uderstand.
In this example we'll look at unidirectional synchronisation, which as a matter of facts isn't as much about synchronisation as much as it is about the </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115252282810775407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115252282810775407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115252282810775407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115252282810775407'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/07/unidirectional-synchronisation.html' title='Unidirectional synchronisation'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-115165812229892567</id><published>2006-06-30T11:01:00.000+02:00</published><updated>2006-06-30T11:14:27.563+02:00</updated><title type='text'>Filling the gaps</title><summary type='text'>Recently, in a newsgroup discussion, once again the subject of 'filling the gaps' came up.
Imagine an object that can exist in several different states, each of these can last a certain period of time. In order to preserve space and to avoid redundancy we only trace the changes of the object's state. For reporting purposes, however, we require contiguity - the question is no longer when has the </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/115165812229892567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=115165812229892567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115165812229892567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/115165812229892567'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/06/filling-gaps.html' title='Filling the gaps'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114907313755558881</id><published>2006-05-31T12:56:00.000+02:00</published><updated>2006-06-30T00:06:34.760+02:00</updated><title type='text'>Warnings once, errors today</title><summary type='text'>In the previous post we took a look at some warnings in SQL 2005 that are considered as errors in SQL 2000. There are also a few opposite cases. Not serious breaking changes, but something to consider.Error 21 (SQL 2005)Severity 20Error 21 (SQL 2000)Severity 10Warning: Fatal error %d occurred at %S_DATE. Note the error and time, and contact your system administrator. (Same message text in SQL </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114907313755558881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114907313755558881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114907313755558881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114907313755558881'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/05/warnings-once-errors-today.html' title='Warnings once, errors today'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114898666424455257</id><published>2006-05-30T12:55:00.000+02:00</published><updated>2007-02-13T19:40:14.617+01:00</updated><title type='text'>Errors once, warnings now</title><summary type='text'>SQL 2005 brings many breaking changes that need to be adressed when preparing migrations from previous versions. Here is a brief look at some changes in error messages from SQL 2000 to SQL 2005. These aren't (or at least shouldn't be) vital to the majority of migration cases; still, this post (and the next one) provides an overview, that may prove to be useful - if only for a moment or two.Error </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114898666424455257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114898666424455257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114898666424455257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114898666424455257'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/05/errors-once-warnings-now.html' title='Errors once, warnings now'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114612795790439352</id><published>2006-04-27T09:56:00.000+02:00</published><updated>2006-04-27T11:43:43.986+02:00</updated><title type='text'>Service pack 1 is talking to me! Or is it...?</title><summary type='text'>Have you ever seen Lassie (the original or one of the movies)?

Remember how she's always trying to speak? Trying to warn the kids of imminent danger? With an almost intelligent look on her face, barking excitedly and pointing with her front leg at the culprit wherever he or she might be?

I must say I feel like one of the kids in the movie these days. Each time I start may brand new SQL Server </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114612795790439352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114612795790439352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114612795790439352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114612795790439352'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/04/service-pack-1-is-talking-to-me-or-is.html' title='Service pack 1 is talking to me! Or is it...?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114552137952698881</id><published>2006-04-20T10:05:00.000+02:00</published><updated>2007-11-06T16:43:04.356+01:00</updated><title type='text'>Microsoft SQL Server 2005 Service Pack 1</title><summary type='text'>It's been a whole day now, since SQL Server 2005 SP-1 has been made available for download.
The build number is 2047 (v. 9.00.2047).
Read the list of changes and fixes before attempting an upgrade.
I've installed the CTP when it was first made available, so I guess I'm looking at a uninstall/reinstall weekend. :)
Oh, yes - SQL Server 2005 Express and Express with Advanced Services have also been </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114552137952698881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114552137952698881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114552137952698881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114552137952698881'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/04/microsoft-sql-server-2005-service-pack.html' title='Microsoft SQL Server 2005 Service Pack 1'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114503172965300214</id><published>2006-04-14T18:19:00.000+02:00</published><updated>2006-04-14T19:01:50.006+02:00</updated><title type='text'>Does the DDL Trigger exist?</title><summary type='text'>Here's a simple little function that checks whether a DDL Trigger with the specified name already exists.

If the trigger exists 1 is returned, else the function returns 0.

For most SQL objects I normally use the object_id() system function, but the latter only returns a valid value for objects in the sys.objects system catalog view, while triggers (both DML and DDL triggers), XML Schema </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114503172965300214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114503172965300214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114503172965300214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114503172965300214'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/04/does-ddl-trigger-exist.html' title='Does the DDL Trigger exist?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114363898454318855</id><published>2006-03-29T15:29:00.000+02:00</published><updated>2006-03-29T15:37:30.713+02:00</updated><title type='text'>[snap] Unicode values in varbinary(max) columns</title><summary type='text'>When storing Unicode data in varbinary columns the binary stream must begin with the appropriate marker (0xFFFE), otherwise the iFilter will not be able to properly parse the content when building a full-text index.

I've learned this the hard way. Well, it didn't actually hurt, but it took a day or two to get cleared up.

The interesting bit is the fact that when Unicode data is cast to XML </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114363898454318855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114363898454318855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114363898454318855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114363898454318855'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/03/snap-unicode-values-in-varbinarymax.html' title='[snap] Unicode values in varbinary(max) columns'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114258641460445960</id><published>2006-03-17T10:03:00.000+01:00</published><updated>2006-03-17T11:23:48.470+01:00</updated><title type='text'>Microsoft SQL Server 2005 SP1 CTP</title><summary type='text'>Microsoft SQL Server 2005 Service Pack 1 Community Technology Preview has been announced yesterday and is now publicly available for download.

Of course there's also SQL Server 2005 Books Online SP1 CTP, but more importantly SQL Server Express with Advanced Services CTP!

SQL Server Express with Advanced Services CTP includes:

SQL Server Management Studio Express (SSMSE);
support for full-text </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114258641460445960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114258641460445960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114258641460445960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114258641460445960'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/03/microsoft-sql-server-2005-sp1-ctp.html' title='Microsoft SQL Server 2005 SP1 CTP'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-114013062548724848</id><published>2006-02-16T23:46:00.000+01:00</published><updated>2006-02-20T15:10:17.376+01:00</updated><title type='text'>More fun with strings</title><summary type='text'>This time the fun is in counting how many times one string occurs inside another.

Of course this has been attempted many times - kudos to all who've attempted it before me!

My function, however, includes an extra parameter to support case-sensitive comparisons.

Here it is:

create function dbo.fnCount_StringInText
 (
 @text  nvarchar(4000)
 ,@string nvarchar(4000)
 ,@caseSensitive bit  = null
</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/114013062548724848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=114013062548724848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114013062548724848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/114013062548724848'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/02/more-fun-with-strings.html' title='More fun with strings'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-113957976811060537</id><published>2006-02-10T14:49:00.000+01:00</published><updated>2006-02-10T20:18:04.646+01:00</updated><title type='text'>Fun with strings</title><summary type='text'>Let's imagine there's a string of alpha-numeric and numeric characters and we need to delimit the string in order to separate both types of characters, e.g. to prepare values for normalization.

The following scalar function (minus a few bugs) inserts a parameterised delimiter (a single space as the default) between individual series of apha-numeric and numeric data:


create function </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/113957976811060537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=113957976811060537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113957976811060537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113957976811060537'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/02/fun-with-strings.html' title='Fun with strings'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-113742455839103355</id><published>2006-01-16T16:11:00.000+01:00</published><updated>2006-02-03T19:34:13.873+01:00</updated><title type='text'>XmlSchema usage</title><summary type='text'>This post is basically a follow-up to the fnGet_XmlSchema_IsUsed function I posted recently.

It lists SQL objects and columns (parameters) where a specific XML Schema is used.

If null is specified as the parameter, the function returns a list of all XML Schema Collections and their usage.


create function dbo.fnList_XmlSchema_Usage
 (
 @XmlSchemaName sysname  = null
 )
returns @XmlSchemaUsage </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/113742455839103355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=113742455839103355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113742455839103355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113742455839103355'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/01/xmlschema-usage.html' title='XmlSchema usage'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-113741478297080987</id><published>2006-01-16T13:26:00.000+01:00</published><updated>2006-02-03T19:35:37.393+01:00</updated><title type='text'>Is XmlSchema in use?</title><summary type='text'>SQL 2005 brings XML as a native data type, and what good is XML if it's not typed?

The following function helps identify XML Schemas that exist in the current database. It also helps in identifying XML Schema Collections that are in use in table columns and/or in procedures as typed XML parameters.

The XmlSchemaName parameter should contain a qualified XML Schema Collection name (i.e. &lt;schema&gt;.</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/113741478297080987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=113741478297080987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113741478297080987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113741478297080987'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2006/01/is-xmlschema-in-use.html' title='Is XmlSchema in use?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-113339901724236681</id><published>2005-12-01T00:54:00.000+01:00</published><updated>2006-09-20T06:35:34.086+02:00</updated><title type='text'>IFilter error - byDesign or byBug?</title><summary type='text'>Full-text indexing of binary columns in MS SQL 2005 is – to say the least – somewhat overly vulnerable.
The root of possible problems is the TYPE COLUMN, specifying the type of the binary value (file) that one tries to build a full-text index (FTI) for. The TYPE column is used by the full-text indexing service (FTS) to select an appropriate IFilter to parse the binary value and create a proper </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/113339901724236681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=113339901724236681' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113339901724236681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/113339901724236681'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/12/ifilter-error-bydesign-or-bybug.html' title='IFilter error - byDesign or byBug?'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112672762979331037</id><published>2005-09-14T21:43:00.000+02:00</published><updated>2006-07-17T13:42:19.243+02:00</updated><title type='text'>Index properties with a kick</title><summary type='text'>The following function is an expansion to the Microsoft SQL Server's built-in function INDEXPROPERTY.
It returns a table containing table names, index names, property names and property values, so it can be used for analysis and documentation purposes.
create function dbo.fnList_IndexProperty
 (
 @tableName sysname  = null
 ,@indexName nvarchar(128) = null
 ,@propertyName varchar(128) = null
 )
</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112672762979331037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112672762979331037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112672762979331037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112672762979331037'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/09/index-properties-with-kick.html' title='Index properties with a kick'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112301659904989668</id><published>2005-08-02T22:55:00.000+02:00</published><updated>2006-07-17T13:45:27.846+02:00</updated><title type='text'>When binary values come as characters</title><summary type='text'>When importing data into SQL through ODBC you might stumble upon a slight hiccup - binary data type is not one of the Microsoft Jet or ODBC data types.
The following procedure treats your binary values as character data, but returns them in the correct data type.
create proc dbo.CharToBin
 (
 @CharacterValue varchar(8000)
 ,@BinaryValue varbinary(8000)  = null  output
 )
as
declare @sql  nvarchar</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112301659904989668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112301659904989668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112301659904989668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112301659904989668'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/08/when-binary-values-come-as-characters.html' title='When binary values come as characters'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112197255605604851</id><published>2005-07-21T20:55:00.000+02:00</published><updated>2006-07-17T13:50:42.836+02:00</updated><title type='text'>Defragment all indexes in the current database</title><summary type='text'>Use this script to defragment every index on every table in the current database.
declare @workFlow table (
    WorkID  int identity (1, 1)
    ,TableName sysname
    ,IndexName sysname
    ,unique(TableName, IndexName)
    )
declare @startID int
declare @endID  int
declare @curID  int
declare @curTableName sysname
declare @curIndexName sysname

set nocount on

insert @workFlow
 (
 TableName
 ,</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112197255605604851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112197255605604851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112197255605604851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112197255605604851'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/07/defragment-all-indexes-in-current.html' title='Defragment all indexes in the current database'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112172662538035717</id><published>2005-07-19T00:37:00.000+02:00</published><updated>2006-01-16T17:03:12.303+01:00</updated><title type='text'>OPENXML custom UDF (inline table function)</title><summary type='text'>Ever had the need to manipulate XML programmatically in SQL? How about this generic function? Of course it needs some alterations to suit your specific needs more appropriately...

It recieves one parameter - the document handle of an internal representation of an XML document (see example below).


create function dbo.fnReturn_XML_asUniversalTable
 (
 @xmlObjectHandler int
 )
returns table
as
</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112172662538035717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112172662538035717' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112172662538035717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112172662538035717'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/07/openxml-custom-udf-inline-table.html' title='OPENXML custom UDF (inline table function)'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112126831053894146</id><published>2005-07-13T17:19:00.000+02:00</published><updated>2006-01-16T17:06:39.720+01:00</updated><title type='text'>Climbing trees is for monkeys</title><summary type='text'>So, here's a monkey. A 'monkey' function, that is.

The tree we'll be climbing is a self-referenced table:


create table dbo.TreeOfValues
 (
 NodeID   int  primary key
 ,Value   nvarchar(64)
 ,ChildOfNodeID  int 
  foreign key references dbo.TreeOfValues (NodeID)
 )
go

insert dbo.TreeOfValues
 (
 NodeID
 ,Value
 ,ChildOfNodeID
 )
 select 1 as NodeID
  ,'father1' as Value
  ,null as </summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112126831053894146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112126831053894146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112126831053894146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112126831053894146'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/07/climbing-trees-is-for-monkeys.html' title='Climbing trees is for monkeys'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-112107692394905640</id><published>2005-07-11T12:07:00.000+02:00</published><updated>2007-01-18T00:34:36.503+01:00</updated><title type='text'>Return related values as array</title><summary type='text'>Silly it may be but sometimes de-normalized relationships make more sense to the end-user. The following function presents a way to list related records (in the Northwind database) in a flat table, where in this case the names of products in an order can be listed in a single column as comma-delimited values. Also known as: aggregate concatenation.
create function dbo.fnGet_ProductName_asArray
 (</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/112107692394905640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=112107692394905640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112107692394905640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/112107692394905640'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/07/return-related-values-as-array.html' title='Return related values as array'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-111521629289034246</id><published>2005-05-04T16:07:00.000+02:00</published><updated>2006-02-03T19:40:01.206+01:00</updated><title type='text'>Test for existence of databases on the local and/or a linked server</title><summary type='text'>Working with many databases on many servers can be a drag sometimes.

In special situations - especially when using dynamic queries - it is imperative to test for existence of linked db's programmatically.

I use this function:


create function dbo.fnGet_dbExists
 (
 @dbName varchar(8000)
 )
returns bit
as
begin
 declare @result  bit
 declare @serverName varchar(128)
 declare @serverExists bit

</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/111521629289034246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=111521629289034246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/111521629289034246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/111521629289034246'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/05/test-for-existence-of-databases-on.html' title='Test for existence of databases on the local and/or a linked server'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-110989011640036893</id><published>2005-03-03T23:40:00.000+01:00</published><updated>2007-10-25T13:56:15.422+02:00</updated><title type='text'>Fail-safe conversion to integer</title><summary type='text'>The following function provides a simple solution to string-to-integer conversion.
   It converts strings of data type nvarchar(4000) to numbers of data type integer.
   By utilizing pattern-matching numeric characters are parsed from the input string from left to right until the pattern is matched. For instance: string "338/I" is converted to number 338. Before actual conversion, the part of the</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/110989011640036893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=110989011640036893' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110989011640036893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110989011640036893'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/03/fail-safe-conversion-to-integer.html' title='Fail-safe conversion to integer'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-110743380043178037</id><published>2005-02-03T13:25:00.000+01:00</published><updated>2006-02-03T19:41:52.363+01:00</updated><title type='text'>Functions Overview</title><summary type='text'>I use this query in MS Excel to view the parameters in each of the user-defined functions in a specific database.

It also provides me with an overview into the design of return tables for table functions.



select  sysobjects.[name] as FuncName
        ,ParamName
                = case
                        when    syscolumns.[name] = ''
                                then    'RETURNS'
</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/110743380043178037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=110743380043178037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110743380043178037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110743380043178037'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/02/functions-overview.html' title='Functions Overview'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-110742980133874671</id><published>2005-02-03T13:00:00.000+01:00</published><updated>2006-02-03T19:43:27.736+01:00</updated><title type='text'>Procedures Overview</title><summary type='text'>I use this query in MS Excel to view the parameters in each of the procedures in a specific database.


select  sysobjects.[name] as ProcName
        ,syscolumns.[name] as ParamName
        ,systypes.[name] as Datatype
        ,syscolumns.length as Length
        ,Special
                = case  syscolumns.isoutparam
                        when    1
                                then    '</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/110742980133874671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=110742980133874671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110742980133874671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110742980133874671'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/02/procedures-overview.html' title='Procedures Overview'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10575596.post-110742779221841047</id><published>2005-02-03T11:41:00.000+01:00</published><updated>2006-08-11T12:30:42.806+02:00</updated><title type='text'>The First One</title><summary type='text'>I started this blog to store and to share little bits and pieces of T-SQL code. They are but snippets and scripts which have brought efficiency into my work with SQL.
I sincerely hope they do the same for you.

ML</summary><link rel='replies' type='application/atom+xml' href='http://milambda.blogspot.com/feeds/110742779221841047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10575596&amp;postID=110742779221841047' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110742779221841047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10575596/posts/default/110742779221841047'/><link rel='alternate' type='text/html' href='http://milambda.blogspot.com/2005/02/first-one.html' title='The First One'/><author><name>Matija Lah</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
