<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AdaTheDev Blog</title><link>https://www.adathedev.co.uk/</link><description>Recent content on AdaTheDev Blog</description><generator>Hugo -- gohugo.io</generator><managingEditor>adathedev@gmail.com (Adrian Hills)</managingEditor><webMaster>adathedev@gmail.com (Adrian Hills)</webMaster><atom:link href="https://www.adathedev.co.uk/index.xml" rel="self" type="application/rss+xml"/><item><title>Bulk Load To Azure Table Storage Using Azure Function Scale Out</title><link>https://www.adathedev.co.uk/2022/02/bulk-load-azure-table-storage-functions.html</link><pubDate>Mon, 14 Feb 2022 00:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2022/02/bulk-load-azure-table-storage-functions.html</guid><description>&lt;p>In this post, we&amp;rsquo;ll work though how we can maximize bulk insert throughput to Azure Table Storage using Azure Functions in a consumption plan.&lt;/p></description></item><item><title>Monitoring Azure Function Consumption Plan Instance Scale Out</title><link>https://www.adathedev.co.uk/2022/01/monitoring-consumption-plan-instance-scaleout.html</link><pubDate>Sat, 29 Jan 2022 00:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2022/01/monitoring-consumption-plan-instance-scaleout.html</guid><description>&lt;p>With the Consumption Plan hosting model for Azure Functions, we can take advantage of event-driven scaling to automatically spin up extra instances of a Function app based on
load. In this post, we&amp;rsquo;ll cover how you can view this in real-time and also how to chart the scaled-out instances retrospectively over time.&lt;/p></description></item><item><title>E2E Testing Azure Functions</title><link>https://www.adathedev.co.uk/2022/01/e2e-testing-azure-functions.html</link><pubDate>Mon, 10 Jan 2022 00:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2022/01/e2e-testing-azure-functions.html</guid><description>Scenario Recently I was working on a solution which included multiple Azure Function apps, with unit tests (xUnit) giving rapid feedback for discrete components across the solution in isolation. But the next step was to create some automated end-to-end (E2E) tests that exercised the behaviours of the solution as a whole.
The goal was to be able to get that feedback as early on in the development process as possible which meant being able to run those E2E tests against a local build on a dev machine when needed with minimal hassle, and in an Azure DevOps CI/CD pipeline, without requiring the Azure Functions to be deployed first.</description></item><item><title>Troubleshooting Azure Function Consumption Plan Scaling</title><link>https://www.adathedev.co.uk/2021/12/troubleshooting-azure-function.html</link><pubDate>Fri, 17 Dec 2021 13:02:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2021/12/troubleshooting-azure-function.html</guid><description>I recently encountered an issue with an Azure Function Event Hub trigger running on a Linux Consumption Plan, whereby events stopped being consumed by the trigger once it went to sleep. I learned a lot about consumption plan scaling and diagnosing what was going on, so in this post I&amp;rsquo;m going to share the key takeaways that I picked up as it was a bit of a journey.
Background: Azure Function Event Hub trigger stopped processing events This was in a low-throughput scenario for testing - so the rate of events coming into the Event Hub was low/sporadic.</description></item><item><title>Samsung Gear Sport vs SWIMTAG - Swimathon 2018</title><link>https://www.adathedev.co.uk/2018/04/samsung-gear-sport-vs-swimtag-swimathon.html</link><pubDate>Sun, 29 Apr 2018 11:51:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2018/04/samsung-gear-sport-vs-swimtag-swimathon.html</guid><description>This post is a bit different to my normal ones in that it&amp;rsquo;s not my usual ramblings about something software development related. Instead, it&amp;rsquo;s a cross between a write-up of my taking part in Swimathon 2018, and a side-by-side comparison of how my swim was tracked by 2 different bits of kit: a Samsung Gear Sport and SWIMTAG. For those that sponsored me, this is proof that I held up my side of the deal!</description></item><item><title>Getting started with SignalR</title><link>https://www.adathedev.co.uk/2016/10/getting-started-with-signalr.html</link><pubDate>Tue, 11 Oct 2016 22:56:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2016/10/getting-started-with-signalr.html</guid><description>Follows on from previous post: Real-time SignalR and Angular 2 dashboard
I had a couple of questions from someone who forked the project on GitHub and is using it as the basis for their own custom dashboard, which reminded me that there are a few key things I picked up on my learning journey that I should share. These are primarily focused around SignalR aspects.
An instance of a SignalR hub is created for each request A single instance is not shared across all clients connected to that hub.</description></item><item><title>Real-time SignalR and Angular 2 dashboard</title><link>https://www.adathedev.co.uk/2016/10/real-time-signalr-angular-2-dashboard.html</link><pubDate>Fri, 07 Oct 2016 09:14:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2016/10/real-time-signalr-angular-2-dashboard.html</guid><description>tl;dr Check out my new SignalRDashboard GitHub repo
Followup post: Getting started with SignalR
For a while now, I&amp;rsquo;ve had that burning curiosity to do more than just the bit of hacking around with SignalR that I&amp;rsquo;d previously done. I wanted to actually start building something with it. If you&amp;rsquo;re not familiar with it, SignalR is a:
&amp;hellip;library for ASP.NET developers that makes developing real-time web functionality easy.
It provides a simple way to have two-way communication between the client and server; the server can push updates/data to any connected client.</description></item><item><title>dm_exec_query_plan returning NULL query plan</title><link>https://www.adathedev.co.uk/2014/08/dmexecqueryplan-returning-null-query.html</link><pubDate>Tue, 12 Aug 2014 16:03:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2014/08/dmexecqueryplan-returning-null-query.html</guid><description>&lt;p>I recently hit a scenario (SQL Server 2012 Standard, 11.0.5058) where I was trying to pull out the execution plan for a stored procedure from the plan cache, but the query shown below was returning a NULL query plan:&lt;/p></description></item><item><title>70-486 Developing ASP.NET MVC 4 Web Applications</title><link>https://www.adathedev.co.uk/2013/09/70-486-developing-aspnet-mvc-4-web.html</link><pubDate>Thu, 19 Sep 2013 09:59:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/09/70-486-developing-aspnet-mvc-4-web.html</guid><description>Last week I passed the 70-486 Microsoft exam - Developing ASP.NET MVC 4 Web Applications, so thought I&amp;rsquo;d knock up a quick post on my experience and what materials I found useful as part of my preparation.
Going into this exam, I had just over a year and a half&amp;rsquo;s commercial experience using ASP.NET MVC 2 &amp;amp; 3. Before that, I had experience in ASP.NET and prior to that, when dinosaurs still roamed, classic ASP.</description></item><item><title>SQL Server 2008 R2 in-place upgrade error</title><link>https://www.adathedev.co.uk/2013/06/sql-server-2008-r2-in-place-upgrade.html</link><pubDate>Wed, 05 Jun 2013 21:18:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/06/sql-server-2008-r2-in-place-upgrade.html</guid><description>Today I encountered the following error during the process of performing an in-place upgrade of a SQL Server 2008 instance to 2008 R2:
The specified user 'someuser@somedomain.local' does not exist
I wasn&amp;rsquo;t initially sure what that related to - I hadn&amp;rsquo;t specified that account during the upgrade process so I went looking in the Services managemement console. The SQL Server service for the instance I was upgrading was configured to &amp;ldquo;Log On As&amp;rdquo; that account and it had been happily running prior to the upgrade.</description></item><item><title>.NET Project File Analyser</title><link>https://www.adathedev.co.uk/2013/03/net-project-file-analyser.html</link><pubDate>Thu, 21 Mar 2013 09:53:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/03/net-project-file-analyser.html</guid><description>I&amp;rsquo;ve started knocking together a little app to automate the process of trawling through a folder structure and checking .NET project files (C# .csproj currently) to extract some info out of them. The DotNetProjectFileAnalyser repo is up on GitHub. I&amp;rsquo;ve been working against Visual Studio 2010 project files, but could well work for other versions assuming the project file structure is the same for the elements it currently looks at - I just haven&amp;rsquo;t tried as yet.</description></item><item><title>GB Post Code Importer Conversion Accuracy Fix</title><link>https://www.adathedev.co.uk/2013/03/gb-post-code-importer-conversion.html</link><pubDate>Wed, 13 Mar 2013 23:09:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/03/gb-post-code-importer-conversion.html</guid><description>In a post last year (Ordnance Survey Data Importer Coordinate Conversion Accuracy) I looked into an accuracy issue with the conversion process within the GeoCoordConversion DLL that I use in this project (blog post). Bottom line, was that it was a minor with an average inaccuracy of around 2.5 metres and a max of ~130 metres by my reckoning. I&amp;rsquo;ve since had a few requests asking if I can supply an updated GeoCoordConversion DLL with fixes to the calculations.</description></item><item><title>SQL Server Table Designer Bug With Filtered Unique Index</title><link>https://www.adathedev.co.uk/2013/03/sql-server-table-designer-bug-with.html</link><pubDate>Fri, 08 Mar 2013 13:11:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/03/sql-server-table-designer-bug-with.html</guid><description>A colleague was getting a duplicate key error when trying to add a new column to a table via the Table Designer in SQL Server Management Studio (2008R2 - not tested on other versions), despite there being no violating data in the table. After a bit of digging around, I tracked the problem down to what appears to be a bug in Table Designer when there is a unique, filtered index in place on the table and the table is being recreated (i.</description></item><item><title>MongoDB ASP.NET Session Store Provider v1.1.0</title><link>https://www.adathedev.co.uk/2013/03/mongodb-aspnet-session-store-provider.html</link><pubDate>Sun, 03 Mar 2013 22:05:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/03/mongodb-aspnet-session-store-provider.html</guid><description>Since I created the MongoDB ASP.NET Session State Store Provider (v1.0.0), a few things have moved on in the MongoDB C# Driver. I&amp;rsquo;ve pushed a number of changes up to the project on GitHub (which I&amp;rsquo;ve incremented to v1.1.0), so it now uses v1.7.0.4714 of the driver. There is no change to way it is configured in web.config, so if you are using v1.0.0 of my provider it should be painless.</description></item><item><title>Importing twitter archive into ElasticSearch</title><link>https://www.adathedev.co.uk/2013/02/import-twitter-archive-elasticsearch.html</link><pubDate>Sun, 10 Feb 2013 19:53:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2013/02/import-twitter-archive-elasticsearch.html</guid><description>I recently downloaded my full history of tweets from Twitter (via the &amp;ldquo;Request your archive&amp;rdquo; button on the Settings page), which gives the data in CSV and JSON formats. The download comes with a simple web UI so you can browse locally, all your historical tweets, as well as perform basic searches. When I tried performing a wildcard search, it resulted in an unresponsive script warning and nobbled the browser tab.</description></item><item><title>Configuring Azure Storage Emulator SQL Server Instance</title><link>https://www.adathedev.co.uk/2012/05/configuring-azure-storage-emulator-sql.html</link><pubDate>Mon, 28 May 2012 10:20:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/05/configuring-azure-storage-emulator-sql.html</guid><description>If you&amp;rsquo;re using Windows Azure Storage, you are almost certainly going to be running the storage emulator during development, instead of working directly against your storage account up in the cloud. This emulator (which comes in the Windows Azure SDK - see the &amp;ldquo;other&amp;rdquo; category), allows you to test locally against local instances of Blob, Queue and Table services.
As per the Overview of Running a Windows Azure Application with Storage Emulator reference, the emulator needs a local SQL Server instance.</description></item><item><title>Error Creating Azure Blob Storage Container</title><link>https://www.adathedev.co.uk/2012/05/error-creating-azure-blob-storage.html</link><pubDate>Thu, 24 May 2012 09:19:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/05/error-creating-azure-blob-storage.html</guid><description>I received a rather&amp;hellip;vague&amp;hellip;error when trying out a bit of .NET code to connect to a Windows Azure Blob Storage account, and create a new container in which to store some blobs.
The code CloudStorageAccount storageAccount = CloudStorageAccount.Parse( &amp;#34;DefaultEndpointsProtocol=https;AccountName=REMOVED;AccountKey=REMOVED&amp;#34;); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(&amp;#34;TestContainer1&amp;#34;); container.CreateIfNotExist(); // This error&amp;#39;d The error A StorageClientException was thrown saying &amp;ldquo;One of the request inputs is out of range.&amp;rdquo;. An inner WebException showed that &amp;ldquo;The remote server returned an error: (400) Bad Request.</description></item><item><title>ASP.NET MVC Performance Profiling</title><link>https://www.adathedev.co.uk/2012/05/aspnet-mvc-performance-profiling.html</link><pubDate>Wed, 23 May 2012 09:33:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/05/aspnet-mvc-performance-profiling.html</guid><description>Building up a profile of how a web application functions, all the database interactions that take place and where the server-side time is spent during a request can be a challenging task when you are new to an existing codebase. If you&amp;rsquo;re trying to address the generic/non-specific &amp;ldquo;we need to improve performance / it&amp;rsquo;s slow&amp;rdquo; issue, you need to get a good picture of what is going on and where to prioritise effort.</description></item><item><title>Trust your developer instinct and experience</title><link>https://www.adathedev.co.uk/2012/04/trust-your-developer-instinct-and.html</link><pubDate>Fri, 13 Apr 2012 11:59:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/04/trust-your-developer-instinct-and.html</guid><description>That feature you&amp;rsquo;re implementing, that bug you&amp;rsquo;re fixing, that performance improvement you&amp;rsquo;re trying to make&amp;hellip;it&amp;rsquo;s using up a fair few brain CPU cycles trying to analyse how best to implement it. Scalability, performance, ease of maintenance, clean code&amp;hellip;just some of the things you are mentally scoring your potential approaches against to determine which route to take. And that&amp;rsquo;s without any mention of business domain logic. We&amp;rsquo;ve all been in the situation where you start heading down one path only to find a hurdle.</description></item><item><title>Ordnance Survey Data Importer Coordinate Conversion Accuracy</title><link>https://www.adathedev.co.uk/2012/03/ordnance-survey-data-importer.html</link><pubDate>Wed, 14 Mar 2012 22:11:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/03/ordnance-survey-data-importer.html</guid><description>Update 13 March 2013: Please see latest blog post (fix) on this here.
Thanks to a comment on my original post around my project that imports Ordnance Survey CodePoint data into SQL Server, I was made aware of a potential issue with the (awesome) third party GeoCoordConversion DLL I use to convert the Eastings/Northings coordinates supplied in the Ordnance Survey data files, into Latitude/Longitude coordinates. The issue relates to an inaccuracy in the conversion process, specifically to do with integer divisions instead of double.</description></item><item><title>Quick win - check your table variable use</title><link>https://www.adathedev.co.uk/2012/03/quick-win-check-your-table-variable-use.html</link><pubDate>Mon, 05 Mar 2012 09:30:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/03/quick-win-check-your-table-variable-use.html</guid><description>Quick wins are awesome. Making a change that takes minimal effort and yields a significant performance improvement is very satisfying.
This particular potential quick win relates to the use of table variables vs. temporary tables. Have a non-trivial stored procedure that produces some intermediary results and stores in a table variable which then goes on to be used further in the stored procedure? Consider evaluating a switch to a temporary table instead.</description></item><item><title>Automating Web Performance Stats Collection in .NET</title><link>https://www.adathedev.co.uk/2012/02/automating-web-performance-stats.html</link><pubDate>Mon, 20 Feb 2012 21:36:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/02/automating-web-performance-stats.html</guid><description>You have a web application. You&amp;rsquo;re a .NET developer. Maybe you already have some automated UI testing in place via Selenium, or maybe you don&amp;rsquo;t. What you want to do is automate the collection of some performance metrics about your application.
Q. How would you go about doing that in .NET?
A. Use the following recipe for success.
Ingredients BrowserMob Proxy by Webmetrics, which (quote) is:
A free utility to help web developers watch and manipulate network traffic from their web applications</description></item><item><title>Excluding nodes from XML data before returning from SQL Server</title><link>https://www.adathedev.co.uk/2012/01/modifying-xml-data-before-returning.html</link><pubDate>Mon, 16 Jan 2012 10:36:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/01/modifying-xml-data-before-returning.html</guid><description>This post follows on from a question I recently replied to, for how to exclude a specific node from an XML column value before returning it, using TSQL.
Example setup CREATE TABLE Example ( ID INTEGER IDENTITY(1,1) PRIMARY KEY, XmlField XML ) INSERT Example (XmlField) VALUES (&amp;#39;&amp;lt;Root&amp;gt;&amp;lt;ChildA&amp;gt;Value I want to see&amp;lt;/ChildA&amp;gt;&amp;lt;ChildB&amp;gt;Value I do not want to see&amp;lt;/ChildB&amp;gt;&amp;lt;/Root&amp;gt;&amp;#39;) So if you want to return the XML minus the ChildB node, how do you do it?</description></item><item><title>Round up of 2011</title><link>https://www.adathedev.co.uk/2012/01/round-up-of-2011.html</link><pubDate>Mon, 02 Jan 2012 22:32:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2012/01/round-up-of-2011.html</guid><description>Another year is done and dusted so it&amp;rsquo;s that time again - time to reflect on the past year.
Quick Timeline March: Mongo UK - London
A chance to attend my first NOSQL conference, having recently entered in the world of MongoDB for some projects. Picked up some good pointers and food-for-thought.
Just some words: NOSQL, hard seats, gonna-need-a-bigger-venue, enlightening. April: SQLBits 8 - Beside The Seaside - Brighton
Highlight of the year for me, conference-wise (was unable to make SQLBits 9 - Liverpool).</description></item><item><title>OS CodePoint Data Geography Update Sept 2011</title><link>https://www.adathedev.co.uk/2011/09/os-codepoint-data-geography-update-sept.html</link><pubDate>Thu, 15 Sep 2011 21:44:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/09/os-codepoint-data-geography-update-sept.html</guid><description>History: GB Post Code Geographic Data Load to SQL Server using .NET
OS CodePoint Data Geography Load Update
Following a comment on my original post listed above, it appears the structure of the CodePoint data file has changed. This means that the importer will fail when attempting to import the latest data files supplied by Ordnance Survey as the columns in the files have changed.
I&amp;rsquo;ve pushed an update to the project on GitHub to address this - it now takes a sensible approach so the index positions are no longer hard coded.</description></item><item><title>Getting Started with Riak and .NET</title><link>https://www.adathedev.co.uk/2011/08/getting-started-with-riak-and-net.html</link><pubDate>Thu, 18 Aug 2011 21:44:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/08/getting-started-with-riak-and-net.html</guid><description>Earlier in the year, I started playing around with MongoDB using .NET and wrote up a Getting Started guide. Now it&amp;rsquo;s Riak&amp;rsquo;s turn.
Nutshell Riak is a distributed, schemaless, data-type agnostic key-value &amp;ldquo;NoSQL&amp;rdquo; database written primarily in Erlang.
Check out the &amp;ldquo;What is Riak?&amp;rdquo; page on Basho&amp;rsquo;s wiki.
Riak does not run on Windows so you&amp;rsquo;ll need to choose your supported OS of choice to install Riak on. Having used Ubuntu before for MongoDB, I went down that route so my notes here are oriented that way.</description></item><item><title>sp_executesql change between 2005 and 2008</title><link>https://www.adathedev.co.uk/2011/06/spexecutesql-change-between-2005-and.html</link><pubDate>Mon, 27 Jun 2011 20:28:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/06/spexecutesql-change-between-2005-and.html</guid><description>Today I tripped over what turned out to be a difference in the way sp_executesql behaves between SQL Server 2005 and 2008 when executing a string containing a parameterised stored procedure call.
Take this simplified example:
DECLARE @SQL NVARCHAR(256) SET @SQL = &amp;#39;sp_help @obj&amp;#39; EXECUTE sp_executesql @SQL, N&amp;#39;@obj NVARCHAR(100)&amp;#39;, &amp;#39;sp_help&amp;#39; In SQL Server 2008 (10.0.4000.0), the above executes successfully.
In SQL Server 2005 (9.00.1399.06), it throws the following exception:
Msg 102, Level 15, State 1, Line 1 Incorrect syntax near &amp;#39;sp_help&amp;#39;.</description></item><item><title>The importance of "Working Set"</title><link>https://www.adathedev.co.uk/2011/06/importance-of-working-set.html</link><pubDate>Fri, 24 Jun 2011 20:55:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/06/importance-of-working-set.html</guid><description>One of the things that I see cropping up pretty often is this thing called &amp;ldquo;working set&amp;rdquo;. After recently chipping in on another StackOverflow question on the subject of &amp;ldquo;What does it meant to fit &amp;lsquo;working set&amp;rsquo; in RAM?&amp;rdquo;, I thought it was a good subject for a blog post. This is really just a copy and extension of my input on that question and focused in certain parts on MongoDB, but is also as relevant to other databases.</description></item><item><title>Upcoming SQLSoton UG - 6th July 2011</title><link>https://www.adathedev.co.uk/2011/06/upcoming-sqlsoton-ug-6th-july-2011.html</link><pubDate>Thu, 23 Jun 2011 14:15:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/06/upcoming-sqlsoton-ug-6th-july-2011.html</guid><description>The next SQLSoton (twitter) UserGroup meet is coming up on Wednesday 6th July. Matt Whitfield (twitter) will be presenting some &amp;ldquo;notes from the field&amp;rdquo; and Alex Whittles (twitter | blog) will be giving a talk on automating cube documentation with SSRS, DMV &amp;amp; spatial data.
Don&amp;rsquo;t forget to register!
Oh, and did I forget to mention? There&amp;rsquo;s an XBox up for grabs. See you there? Thought so :)</description></item><item><title>If you can't make it, untake it</title><link>https://www.adathedev.co.uk/2011/06/if-you-cant-make-it-untake-it.html</link><pubDate>Wed, 22 Jun 2011 11:33:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/06/if-you-cant-make-it-untake-it.html</guid><description>There&amp;rsquo;s some great free events out there; SQLBits community day and the upcoming SQL In The City day by Red Gate are just two examples. With the high demand for spaces at events like these, it is well worth getting in there ASAP to reserve your space before they all go and you end up on a waiting list.
But if you find you can no longer make it, make someone else&amp;rsquo;s day by cancelling your place so that it can be freed up for those on the waiting list.</description></item><item><title>MongoDB ASP.NET Session State Store Provider</title><link>https://www.adathedev.co.uk/2011/05/mongodb-aspnet-session-state-store.html</link><pubDate>Tue, 03 May 2011 21:03:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/05/mongodb-aspnet-session-state-store.html</guid><description>Please note: v1.1.0 of this Sesssion State Provider is now available. See blog post: https://www.adathedev.co.uk/2013/03/mongodb-aspnet-session-store-provider.html
I&amp;rsquo;ve pushed up an initial drop of a custom ASP.NET session state store, backed by MongoDB, to my GitHub repository. After a quick test it seems OK, though could do with a real hammering before being deemed production worthy! So if you want to use it, just make sure you give it a good test through and most importantly, let me know how it goes!</description></item><item><title>Microsoft Community Contributor Award 2011</title><link>https://www.adathedev.co.uk/2011/04/microsoft-community-contributor-award.html</link><pubDate>Fri, 29 Apr 2011 20:22:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/04/microsoft-community-contributor-award.html</guid><description>For a number of years now (since 2002 to be exact), I&amp;rsquo;ve been chipping in with my 2 pence on various online Q&amp;amp;A sites. As I mention in one of my first blog posts from just over a year ago, &amp;ldquo;Ways to improve technical skills&amp;rdquo; and one back in August on &amp;ldquo;The importance of being earnest&amp;rdquo;, participating in sites like StackOverflow and the MSDN forums is a great way to keep you on your toes technically.</description></item><item><title>5 Tips For Attending Conferences</title><link>https://www.adathedev.co.uk/2011/04/5-tips-for-attending-conferences.html</link><pubDate>Mon, 04 Apr 2011 12:01:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/04/5-tips-for-attending-conferences.html</guid><description>With SQLBits 8 being this week in Brighton and it being set to be the biggest and best one yet, it got me thinking.
If I was a first timer to a conference like this, what should I expect? So here&amp;rsquo;s my top 5 tips:
Talk.
It&amp;rsquo;s easy to be daunted by a room full of people who all seem to be in little groups chatting away. You think everyone else there knows someone, except you.</description></item><item><title>OS Data Importer Supports Scale Gazetteer Dataset</title><link>https://www.adathedev.co.uk/2011/03/os-data-importer-supports-scale.html</link><pubDate>Sun, 27 Mar 2011 21:54:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/os-data-importer-supports-scale.html</guid><description>I&amp;rsquo;ve just pushed some updates to GitHub for the Ordnance Survey Data Importer .NET app I&amp;rsquo;ve been working on every now and then (see my previous posts: GB Post Code Geographic Data Load to SQL Server using .NET and OS CodePoint Data Geography Load Update).
Aside from a little re-jigging to potentially pave the way to load more Ordnance Survey data files to SQL Server in the future, it now supports importing the 1:50000 Scale Gazetteer data file to SQL Server (available to download from here).</description></item><item><title>MongoDB Journaling Performance - Single Server Durability</title><link>https://www.adathedev.co.uk/2011/03/mongodb-journaling-performance-single.html</link><pubDate>Fri, 18 Mar 2011 10:34:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/mongodb-journaling-performance-single.html</guid><description>Note: Relates to v1.8.0 release. v1.8 of MongoDB (production release hot off the press, available from here) brings single server durability to MongoDB via its support for write-ahead journaling. The following summarises the key points from the journaling documentation, administration guide and from my initial playing around.
you have to specify the &amp;ndash;journal switch for mongod in order to enable journaling (was previously &amp;ndash;dur prior to production release) journal files are created within a journal subfolder of your dbpath, up to 1GB each in size in the event of a crash, when mongod restarts it will replay the journal files to recover automatically before the server goes online if mongod shuts down cleanly, the journal files are cleared down.</description></item><item><title>Upcoming DevConnections London conference</title><link>https://www.adathedev.co.uk/2011/03/upcoming-devconnections-london.html</link><pubDate>Thu, 17 Mar 2011 08:55:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/upcoming-devconnections-london.html</guid><description>What: IT&amp;amp;DevCONNECTIONS Conference
Where: ExCel Conference Centre, London
When: 13th - 15th June 2011
Here&amp;rsquo;s the summary on the event, which gives a good overview of what you can expect from it. Hold on to your hat for some very impressive name-dropping!
Penton, publishers of SharePointPro Connections, DevPro Connections, Windows IT Pro and SQL Server Magazines are excited to announce the IT&amp;amp;DevCONNECTIONS powered by Microsoft conference to be held at the ExCeL conference centre in London.</description></item><item><title>SQLSoton UG March 2011</title><link>https://www.adathedev.co.uk/2011/03/sqlsoton-ug-march-2011.html</link><pubDate>Thu, 10 Mar 2011 22:13:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/sqlsoton-ug-march-2011.html</guid><description>Last night saw another gathering of the SQL Server Southampton UserGroup, with Gavin Payne (Twitter | Blog) making the trip down to give a talk on replication, his first since joining Coeo.
As a developer, I&amp;rsquo;ve had very little exposure to replication and have seen it as some form of dark art. I&amp;rsquo;ve never scratched much past the surface. Over the past couple of months of getting up to speed with MongoDB, I&amp;rsquo;ve dived far deeper into replication within that than I ever have in SQL Server in 10 years+ that I&amp;rsquo;ve been using it which is quite a strange feeling, thinking about it like that.</description></item><item><title>MongoDB 1.8.0 Release Candidate 2 Available</title><link>https://www.adathedev.co.uk/2011/03/mongodb-180-release-candidate-2.html</link><pubDate>Thu, 10 Mar 2011 10:04:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/mongodb-180-release-candidate-2.html</guid><description>Fast on the heels of my previous blog post about MongoDB 1.8.0 Release Candidate 1 becoming available, I&amp;rsquo;ve just seen 1.8.0 RC2 is now available which includes a handful of changes (Download | Change Log).
Did I mention, MongoDB is rapidly evolving?!</description></item><item><title>Upcoming SQLSoton UG - 9th March 2011</title><link>https://www.adathedev.co.uk/2011/03/upcoming-sqlsoton-ug-9th-march-2011.html</link><pubDate>Thu, 03 Mar 2011 10:33:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/03/upcoming-sqlsoton-ug-9th-march-2011.html</guid><description>Quick reminder that the next SQLSoton (twitter) UserGroup meet is fast approaching on Wednesday 9th March. Gavin Payne (twitter | blog) will be making his way down to Southampton to give us a talk on replication:
For those who have never had the chance to use SQL Server’s replication features, or perhaps only manage an existing implementation of it, this session will give you an overview of the different replication services SQL Server offers, some background into the primary and secondary design goals each, along with some considerations for deployment and in-life management.</description></item><item><title>Thoughts on MongoDB from a SQL Server Dev</title><link>https://www.adathedev.co.uk/2011/02/thoughts-on-mongodb-from-sql-server-dev.html</link><pubDate>Fri, 25 Feb 2011 14:20:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/thoughts-on-mongodb-from-sql-server-dev.html</guid><description>As someone with a background in SQL Server development dating back to 2000, the whole NoSQL jazz has been something that&amp;rsquo;s been on the radar for a while but never made it under the microscope so to speak. Partly because SQL Server is my comfort zone and there&amp;rsquo;s plenty more to still learn about that; partly because I&amp;rsquo;ve had my career mapped out in my head and NoSQL didn&amp;rsquo;t feature much in that vision; partly because until you have something real-world driving a push into a technology then you tend to have that technology remaining as a distant dot on the radar.</description></item><item><title>MongoDB 1.8.0 Release Candidate is out</title><link>https://www.adathedev.co.uk/2011/02/mongodb-180-release-candidate-is-out.html</link><pubDate>Thu, 24 Feb 2011 09:26:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/mongodb-180-release-candidate-is-out.html</guid><description>MongoDB 1.8.0-rc0 is now available, you can download from here and find the release notes here.
The main changes over the current 1.6 production release relate to:
durability, a much talked about topic (!), with support now for write-ahead journaling (docs)
sparse and covered indexes (on my radar to try out)
support for more Map/Reduce functionality (note there are some breaking changes in this area)
The full info on the changes is in the Release Notes document.</description></item><item><title>MongoUK 2011 - Upcoming MongoDB event</title><link>https://www.adathedev.co.uk/2011/02/mongouk-2011-upcoming-mongodb-event.html</link><pubDate>Wed, 23 Feb 2011 15:45:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/mongouk-2011-upcoming-mongodb-event.html</guid><description>There&amp;rsquo;s a one day conference on MongoDB coming up, being held at the Skills Matter eXchange in London on Monday 21st March 2011. If you&amp;rsquo;re interested in MongoDB or even just curious as to what it&amp;rsquo;s all about, then it&amp;rsquo;s worth registering for it based on what&amp;rsquo;s on the agenda - it&amp;rsquo;s going to be tough to choose between the different sessions, which include ones on:
schema design storage engine internals indexing and query optimiser scalability map/reduce &amp;amp; geo indexing It will also be a good chance to hear from speakers outside of 10gen such as Thoughtworks, Guardian and Boxed Ice.</description></item><item><title>SQLSoton UserGroup Room Change from March</title><link>https://www.adathedev.co.uk/2011/02/sqlsoton-usergroup-room-change-from.html</link><pubDate>Mon, 21 Feb 2011 20:34:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/sqlsoton-usergroup-room-change-from.html</guid><description>Due to the success of the SQL Southampton User Group and based on the feedback/opinions of those who have attended, the room the group is held in is changing. It&amp;rsquo;s still in the same venue, Avenue St Andrews United Reformed Church, but instead of being in the Upper Room as per the last few meets, it will be in St Andrew&amp;rsquo;s Hall. This gives a bigger, more flexible room.
The now famous #SQLSoton signs will be in place to direct as per usual - still round via the back carpark but a different entrance now.</description></item><item><title>MongoDB replication - oplogSize</title><link>https://www.adathedev.co.uk/2011/02/mongodb-replication-oplogsize.html</link><pubDate>Mon, 21 Feb 2011 11:10:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/mongodb-replication-oplogsize.html</guid><description>Background An oplog is a write operation log that MongoDB uses to store data modifications that need to be replicated out to other nodes in the configured set. This oplog is a capped collection which means it will never grow in size beyond a certain point - once it reaches it&amp;rsquo;s max size, old data drops off the end as new data is added so it keeps cycling round. The size of the oplog basically determines how long a secondary node can be down for and still be able to catch up when it comes back online.</description></item><item><title>OS CodePoint Data Geography Load Update</title><link>https://www.adathedev.co.uk/2011/02/os-codepoint-data-geography-load-update.html</link><pubDate>Sun, 13 Feb 2011 19:07:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/os-codepoint-data-geography-load-update.html</guid><description>Following on from my previous post on loading the Ordnance Survey Code-Point data for GB post codes to SQL Server and converting to the GEOGRAPHY data type, I&amp;rsquo;ve made a few tweaks to the importer app that is up on GitHub:
The schema of the SQL Server table generated has changed - postcodes are now split into 2 distinct columns: OutwardCode and InwardCode The importer now calculates a basic average for each postcode district (e.</description></item><item><title>MongoDB - Does My Data Look Big In This?</title><link>https://www.adathedev.co.uk/2011/02/mongodb-does-my-data-look-big-in-this.html</link><pubDate>Mon, 07 Feb 2011 10:10:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/02/mongodb-does-my-data-look-big-in-this.html</guid><description>You have an existing relational database containing x amount of data and you decide to migrate that data, for whatever reason, into MongoDB. You may have an pre-conceived belief that as your relational database is x GB in size, that after loading that data into MongoDB your NoSQL database size will be around about x GB too - after all, you&amp;rsquo;re loading exactly the same data from one to the other right?</description></item><item><title>GB Post Code Geographic Data Load to SQL Server using .NET</title><link>https://www.adathedev.co.uk/2011/01/gb-post-code-geographic-data-load-to.html</link><pubDate>Mon, 24 Jan 2011 08:38:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/gb-post-code-geographic-data-load-to.html</guid><description>Ordnance Survey now make available a number of mapping data/geographic datasets to download for free, allowing unrestricted use for commercial and non-commercial use. One of these is the Code-Point Open dataset, which gives a precise geographic location of each post code in Great Britain as a CSV file.
This file contains the Easting and Northing coordinates for each postcode. You may want to convert these to Latitude/Longitude coordinates to then load into a GEOGRAPHY column in SQL Server (as of 2008) and do all kinds of spatial wizardry in the database.</description></item><item><title>Running MongoDB as a Windows Service</title><link>https://www.adathedev.co.uk/2011/01/running-mongodb-as-windows-service.html</link><pubDate>Tue, 18 Jan 2011 09:58:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/running-mongodb-as-windows-service.html</guid><description>Following on from my opening &amp;ldquo;Getting started with MongoDB and .NET&amp;rdquo; post, one of the next logical steps was to get mongodb running as a Windows service.
From a command prompt, in the mongodb bin directory run:
mongod --install --serviceName &amp;#34;MongoDB&amp;#34; --dbpath C:\mongodb\data\db --logpath C:\mongodb\logs\mongolog.txt --logappend Obviously you can tweak the arguments for your environment - I opted to use a different dbpath to the default \data\db
Starting the service is then just a case of running:</description></item><item><title>SqlBulkCopy to SQL Server in Parallel</title><link>https://www.adathedev.co.uk/2011/01/sqlbulkcopy-to-sql-server-in-parallel.html</link><pubDate>Wed, 12 Jan 2011 10:32:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/sqlbulkcopy-to-sql-server-in-parallel.html</guid><description>In an earlier post last year, I blogged about high performance bulk loading to SQL Server from .NET using SqlBulkCopy. That post highlighted the performance gain that SqlBulkCopy gives over another batched insert approach using an SqlDataAdapter. But is it possible to squeeze more performance out? Oh yes.
First, a quick recap. For optimal performance:
load into a heap table (with no indexes - add any indexes you need AFTER you&amp;rsquo;ve loaded the data)</description></item><item><title>GROUPING SETS in SQL Server</title><link>https://www.adathedev.co.uk/2011/01/grouping-sets-in-sql-server.html</link><pubDate>Mon, 10 Jan 2011 12:09:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/grouping-sets-in-sql-server.html</guid><description>Something I personally haven&amp;rsquo;t seen a lot of out there in the SQL Server world, is use of GROUPING SETS - an operator that can be applied in a GROUP BY clause. So what does it do? How would you use it?
Take the AdventureWorks sample database as an example playground. Suppose you want to query the sales data to find the following:
total sales for each product total sales for each product category total sales There&amp;rsquo;s a number of ways you could do this.</description></item><item><title>.NET Admin GUI for MongoDB</title><link>https://www.adathedev.co.uk/2011/01/net-admin-gui-for-mongodb.html</link><pubDate>Mon, 10 Jan 2011 09:04:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/net-admin-gui-for-mongodb.html</guid><description>Having just started out fiddling around with MongoDB from .NET, finding a GUI over the top of MongoDB to help me out while I find my feet was one of the first things I looked for. And I&amp;rsquo;ve been using the first tool I found : MongoVUE - there undoubtedly are others out there, but at the moment I&amp;rsquo;ve found no reason to continue searching.
Can it do everything I want it to?</description></item><item><title>Getting Started with MongoDB and .NET</title><link>https://www.adathedev.co.uk/2011/01/getting-started-with-mongodb-and-net.html</link><pubDate>Fri, 07 Jan 2011 21:28:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2011/01/getting-started-with-mongodb-and-net.html</guid><description>Getting up and running with MongoDB using C# is a very simple process. It literally takes a couple of minutes, including the time to download MongoDB itself and the C# drivers - so if you fancy having a play around with it to see what it&amp;rsquo;s all about, there&amp;rsquo;s no barrier stopping you.
Nutshell To quote MongoDB.org:
MongoDB (from &amp;ldquo;humongous&amp;rdquo;) is a scalable, high-performance, open source, document-oriented database.
Check out the MongoDB homepage for a highlight of the key features.</description></item><item><title>Round up of 2010</title><link>https://www.adathedev.co.uk/2010/12/round-up-of-2010.html</link><pubDate>Thu, 30 Dec 2010 21:36:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/12/round-up-of-2010.html</guid><description>2010 was my first year as a blogger, after finally pulling my finger out back in February. I learnt an early lesson in naming/tagging posts appropriately after my first search engine hits came in via the term &amp;ldquo;pull my finger&amp;rdquo;. Not exactly the kind of search term I was hoping to bring up my site - things have improved now so I&amp;rsquo;ve headed in the right direction with a focus on SQL Server and .</description></item><item><title>SqlBits 8 - Upcoming SQL Server event</title><link>https://www.adathedev.co.uk/2010/12/sqlbits-8-upcoming-sql-server-event.html</link><pubDate>Thu, 23 Dec 2010 12:03:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/12/sqlbits-8-upcoming-sql-server-event.html</guid><description>So SQLBits 8 has been announced and is going to be beside the seaside (so maybe it should be called SeaQLBits) in that there Brighton at The Grand, from Thursday 7th April to Saturday 9th April 2011. If you&amp;rsquo;re reading my blog, then there&amp;rsquo;s a pretty strong chance you use SQL Server in which case without a doubt, SQLBits will have a lot to offer you. Chalk it down in your calendar.</description></item><item><title>SQLSoton UserGroup Jan 2011</title><link>https://www.adathedev.co.uk/2010/12/sqlsoton-usergroup-jan-2011.html</link><pubDate>Sun, 19 Dec 2010 21:03:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/12/sqlsoton-usergroup-jan-2011.html</guid><description>After the success of the first ever SQL Server Southampton UserGroup this month, the next is planned for Wednesday 19th January 2011 with Christian Bolton (Blog| Twitter) doing a talk on &amp;ldquo;Exploring SQL Server&amp;rsquo;s Architecture&amp;rdquo;. Followed by SQL Supper - a chance to eat pizza and discuss anything SQL Server related. Got a niggle at work you&amp;rsquo;d like 2nd/3rd/nth opinions on? Perfect opportunity. Just want to network and have a casual chat?</description></item><item><title>SQL Server Southampton UserGroup</title><link>https://www.adathedev.co.uk/2010/12/sql-server-southampton-usergroup.html</link><pubDate>Thu, 09 Dec 2010 08:15:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/12/sql-server-southampton-usergroup.html</guid><description>Last night was the first SQL Server Southampton UserGroup (#sqlsoton for those on twitter) organised by Mark Pryce-Maher (Twitter | Blog). It&amp;rsquo;s a difficult job trying to get a local usergroup up and running especially when it&amp;rsquo;s difficult to reach out to local professionals and get a firm idea of who&amp;rsquo;s going to come, and so credit to Mark for making it happen.
Cap&amp;rsquo;n, we have no power Despite projector/power lead problems (and there being a million and one kettles in the hired room, none with suitable lead!</description></item><item><title>SQLBits 6 videos available</title><link>https://www.adathedev.co.uk/2010/10/sqlbits-6-videos-available.html</link><pubDate>Thu, 21 Oct 2010 08:20:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/10/sqlbits-6-videos-available.html</guid><description>First tweet I say today was a great one - the SQLBits 6 videos are now available. Good news from Simon Sabin (Blog | Twitter) - thanks once again, and to the whole SQLBits team.
If you were there, then no doubt you&amp;rsquo;re like me and keen to either catch the sessions you didn&amp;rsquo;t attend or re-watch some sessions you did attend.
If you weren&amp;rsquo;t there, then even more reason to check them out (list of sessions).</description></item><item><title>SSMS Tools Pack</title><link>https://www.adathedev.co.uk/2010/10/ssms-tools-pack.html</link><pubDate>Wed, 20 Oct 2010 20:40:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/10/ssms-tools-pack.html</guid><description>Today I downloaded and installed the SSMS Tools Pack, a free add-in for SQL Server Management Studio developed by Mladen Prajdić (Blog | Twitter).
Late to the party&amp;hellip;and not even fashionably late Yes I know, I know - everyone uses the SSMS Tools Pack and I&amp;rsquo;m well aware I&amp;rsquo;m late to the party! Fail whale on my part. It&amp;rsquo;s one of those things I bookmarked a long time ago and just never got round to actually trying out.</description></item><item><title>Long time no post</title><link>https://www.adathedev.co.uk/2010/10/long-time-no-post.html</link><pubDate>Mon, 18 Oct 2010 17:14:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/10/long-time-no-post.html</guid><description>It&amp;rsquo;s been a while since my last blog post, with good reason as September saw the arrival of my first child - a beautiful baby girl. It did mean I had to miss SQLBits 7 up in York, but of course that pales into insignificance when comparing to becoming a Dad for the first time! Besides, there&amp;rsquo;s always SQLBits 8&amp;hellip;(cough bring it to the south coast! cough). Now I&amp;rsquo;m back at work after paternity leave and I&amp;rsquo;m starting to get back in the swing of things.</description></item><item><title>Passing a TABLE variable into dynamic SQL</title><link>https://www.adathedev.co.uk/2010/08/passing-table-variable-into-dynamic-sql.html</link><pubDate>Tue, 10 Aug 2010 19:55:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/08/passing-table-variable-into-dynamic-sql.html</guid><description>A question popped up on StackOverflow today, asking how to pass a TABLE variable into a dynamic SQL statement in SQL Server 2008. I&amp;rsquo;ve previously blogged about table-valued parameters, comparing the approach of passing in a TABLE of values to a stored procedure to the techniques you&amp;rsquo;d have had to use in earlier versions of SQL Server (e.g. CSV or XML), but this specific question is worth a quick follow-up.</description></item><item><title>The importance of being earnest</title><link>https://www.adathedev.co.uk/2010/08/importance-of-being-earnest.html</link><pubDate>Thu, 05 Aug 2010 23:40:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/08/importance-of-being-earnest.html</guid><description>I&amp;rsquo;ve been learning and trying out a lot of new things recently and it got me to thinking just how important it is in this business, to continue pushing yourself and adding more strings to your bow. It can be easy to stay within your comfort zone and go with the flow, but there (usually) comes a time when you have to branch out for one reason or another.
Stand-ups, Tomatoes and a date(-abase) with Cassandra Over the past week we&amp;rsquo;ve started doing daily stand-ups at work - still in the early stages but it already feels like I&amp;rsquo;ve been doing it for longer.</description></item><item><title>Getting started with Cassandra and .NET</title><link>https://www.adathedev.co.uk/2010/07/getting-started-with-cassandra-and-net.html</link><pubDate>Mon, 05 Jul 2010 23:05:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/07/getting-started-with-cassandra-and-net.html</guid><description>Over the past couple of days, I&amp;rsquo;ve started playing around with Cassandra in an effort to satisfy my curiosity and to see what it&amp;rsquo;s all about. In terms of databases, SQL Server is my main skill - I first started using it nearly 10 years ago, and will always remember the first book I read cover to cover on it: Inside Microsoft SQL Server 6.5 by Ron Soukup. So Cassandra is a step outside of my comfort zone; something new and a little alien to me&amp;hellip;.</description></item><item><title>Validating an SQL query programmatically, with gotcha</title><link>https://www.adathedev.co.uk/2010/07/validating-sql-query-programmatically.html</link><pubDate>Thu, 01 Jul 2010 22:31:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/07/validating-sql-query-programmatically.html</guid><description>If you want to check the validity of a TSQL statement programmatically, you can make use of the SET NOEXEC statement. As this MSDN reference states, SET NOEXEC ON will compile the query but won&amp;rsquo;t actually execute it. This is ideal (well, nearly&amp;hellip;.) if perhaps you have a dynamically generated statement that you want to check is valid before executing it.
Example time SET NOEXEC ON GO SELECT TOP * FROM sys.</description></item><item><title>The SQL Server MasterClass Experience</title><link>https://www.adathedev.co.uk/2010/06/sql-server-masterclass-experience.html</link><pubDate>Fri, 18 Jun 2010 22:18:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/06/sql-server-masterclass-experience.html</guid><description>SQL Server MasterClass 2010 was a very high quality, one day event presented by Paul S. Randal (Twitter | Blog) and Kimberly L. Tripp (Twitter | Blog) - not that they need any introduction of course. In fact if you don&amp;rsquo;t know of them, then perhaps you should close down your SSMS window and switch off your machine - after reading my blog of course :). Maybe uninstall SQL Server too&amp;hellip;</description></item><item><title>SQL Server XML datatype with CDATA</title><link>https://www.adathedev.co.uk/2010/06/sql-server-xml-datatype-with-cdata.html</link><pubDate>Mon, 14 Jun 2010 14:06:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/06/sql-server-xml-datatype-with-cdata.html</guid><description>So today I learnt something new - it turns out the XML datatype in SQL Server does not preserve CDATA sections.
e.g.
DECLARE @XML XML SET @XML = &amp;#39;&amp;lt;Test&amp;gt;&amp;lt;NodeA&amp;gt;&amp;lt;![CDATA[Testing cdata section &amp;lt;woop!&amp;gt;]]&amp;gt;&amp;lt;/NodeA&amp;gt;&amp;lt;/Test&amp;gt;&amp;#39; SELECT @XML Results ------------------------------------------------------------------ &amp;lt;Test&amp;gt;&amp;lt;NodeA&amp;gt;Testing cdata section &amp;amp;lt;woop!&amp;amp;gt;&amp;lt;/NodeA&amp;gt;&amp;lt;/Test&amp;gt; After a quick dig around, I found this MS Connect case. I personally would like to see it accept whatever you pass in without silently altering it, as long as it&amp;rsquo;s well-formed XML of course.</description></item><item><title>Optimising wildcard prefixed LIKE conditions</title><link>https://www.adathedev.co.uk/2010/05/optimising-like-conditions-with.html</link><pubDate>Wed, 26 May 2010 08:41:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/05/optimising-like-conditions-with.html</guid><description>Suppose you want to write a query to find all products in your database that have a name beginning with &amp;ldquo;Long-Sleeve&amp;rdquo;. You&amp;rsquo;d more than likely use something like below (examples based on AdventureWorks LT sample database):
SELECT name FROM SalesLT.Product WHERE name LIKE &amp;#39;Long-Sleeve%&amp;#39; This produces a good execution plan, performing an index seek on the nonclustered index that exists on the name column. If you look at the seek operation, you&amp;rsquo;ll see the query optimiser has done a good job of ensuring an index can be used by looking at the seek predicate:</description></item><item><title>QCon London 2010 Videos</title><link>https://www.adathedev.co.uk/2010/05/qcon-london-2010-videos.html</link><pubDate>Mon, 24 May 2010 22:00:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/05/qcon-london-2010-videos.html</guid><description>It&amp;rsquo;s been a couple of months now since QCon London (check out my previous blog post on The QCon London 2010 Experience) and some session videos are starting to make their way out on InfoQ. With a lot of great content, they&amp;rsquo;re well worth checking out.
I&amp;rsquo;ve re-watched the sessions I attended and enjoyed them as much the second time round as I did the first time.
The State of the Art on .</description></item><item><title>The SQLBits VI Experience</title><link>https://www.adathedev.co.uk/2010/04/sqlbits-vi-experience.html</link><pubDate>Mon, 19 Apr 2010 08:20:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/04/sqlbits-vi-experience.html</guid><description>I had high expectations about SQLBits VI and it certainly lived up to it! Not only did it have great speakers, who really know their stuff and have an effortless way of getting the information across, but it was also free. So it goes without saying that it was a popular event. There were 4 sessions going on at any one time with a theme of performance and scalability and plenty of choice across DBA, Dev and BI areas.</description></item><item><title>SqlBulkCopy ColumnMappings Mismatch</title><link>https://www.adathedev.co.uk/2010/04/sqlbulkcopy-columnmappings-mismatch.html</link><pubDate>Wed, 14 Apr 2010 22:49:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/04/sqlbulkcopy-columnmappings-mismatch.html</guid><description>&amp;ldquo;The given ColumnMapping does not match up with any column in the source or destination&amp;rdquo; This error caused me more head-scratching than it should have done today. I was using SqlBulkCopy to bulk insert some data into an SQL Server table from a .NET DataTable, something I&amp;rsquo;ve done before - it&amp;rsquo;s not rocket science. But I hit this error upon calling WriteToServer and it took me a while (longer than it should have done really!</description></item><item><title>SQL CAST to VARCHAR without size</title><link>https://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html</link><pubDate>Tue, 06 Apr 2010 19:27:00 +0100</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html</guid><description>What&amp;rsquo;s the result of this, in SQL Server?
SELECT CAST(12345 AS VARCHAR) As you expect, it&amp;rsquo;s &amp;ldquo;12345&amp;rdquo;. How about this?
SELECT CAST(1234567890123456789012345678901 AS VARCHAR) You may be expecting it to return &amp;ldquo;1234567890123456789012345678901&amp;rdquo; but it will in fact throw an error:
Msg 8115, Level 16, State 5, Line 1 Arithmetic overflow error converting numeric to data type varchar. It&amp;rsquo;s all because a length was not given for the VARCHAR to convert the value to.</description></item><item><title>The QCon London 2010 Experience</title><link>https://www.adathedev.co.uk/2010/03/qcon-london-2010-experience.html</link><pubDate>Sun, 14 Mar 2010 15:59:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/03/qcon-london-2010-experience.html</guid><description>QCon London 2010 - what a conference!
Awesome&amp;hellip;with a capital AWE
So many inspiring speakers, a packed schedule of talks over 3 days on a number of tracks and a great bunch of people. This was my first QCon, and cannot recommend the experience enough. The only thing I didn&amp;rsquo;t enjoy, was having to decide between which talks to attend. But that&amp;rsquo;s the true sign of a good conference. I&amp;rsquo;m finding it difficult to write a blog post as my mind is still buzzing and there was a lot to soak up.</description></item><item><title>Rise of the SQL Server DevBA</title><link>https://www.adathedev.co.uk/2010/03/rise-of-sql-server-devba.html</link><pubDate>Thu, 04 Mar 2010 21:30:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/03/rise-of-sql-server-devba.html</guid><description>Something that has got me thinking recently is the distinction between an SQL Server Developer and a DBA. I imagine that most people would describe themselves as one or the other exclusively. My CV for example says I&amp;rsquo;m a developer - that is what I am. I would never market myself as a DBA; aside from the fact I just don&amp;rsquo;t have the full skillset of a DBA, it would just be an insult to the real DBAs out there whose knowledge and experience in that arena far outweighs mine.</description></item><item><title>Queue table processing in SQL Server</title><link>https://www.adathedev.co.uk/2010/03/queue-table-processing-in-sql-server.html</link><pubDate>Mon, 01 Mar 2010 22:27:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/03/queue-table-processing-in-sql-server.html</guid><description>Implementing SQL Server queue table processing logic is something I keep meaning to blog about and finally I&amp;rsquo;ve got round to it thanks to my memory being jogged by StackOverflow questions I&amp;rsquo;ve recently participated in, including this one. The scenario is you queue up records in a database table, each representing a piece of work needing to be done. You then want to have processes that periodically poll this table to pick up the next item of work from the queue and process them.</description></item><item><title>Changing primary key index structure</title><link>https://www.adathedev.co.uk/2010/03/changing-primary-key-index-structure.html</link><pubDate>Mon, 01 Mar 2010 08:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/03/changing-primary-key-index-structure.html</guid><description>Changing the structure of a primary key constraint index from nonclustered to clustered (or from clustered to nonclustered) is not necessarily as straight forward as it first seems. The process of changing it over, involves the constraint being dropped and then recreated. This could potentially cause a problem if you&amp;rsquo;re making the change on a table whilst there could be activity against it.
Example
TableX was originally created as below:</description></item><item><title>SQLBits VI - Upcoming SQL Server event</title><link>https://www.adathedev.co.uk/2010/02/sqlbits-vi-upcoming-sql-server-event.html</link><pubDate>Thu, 25 Feb 2010 20:32:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/sqlbits-vi-upcoming-sql-server-event.html</guid><description>SQLBits VI is scheduled in my calendar for Friday 16th April - and I&amp;rsquo;m expecting great things! It&amp;rsquo;s a 1 day, SQL Server event being held in London (Westminster to be semi-precise), and the theme is performance and scalability which, as I mentioned in an earlier blog post, is particularly high on my agenda at the moment.
Not only does it offer high quality speakers, but it&amp;rsquo;s a free event too.</description></item><item><title>Autogenerated SQL constraint names - why to avoid them</title><link>https://www.adathedev.co.uk/2010/02/autogenerated-sql-constraint-names-why.html</link><pubDate>Tue, 23 Feb 2010 21:42:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/autogenerated-sql-constraint-names-why.html</guid><description>Autogenerated constraint names in SQL Server - are they convenient, or are they a hindrance? For me, they are a hindrance.
Why should I care that SQL Server autogenerates a constraint name when I don&amp;rsquo;t explicitly specify one? Why does it matter if it names my PRIMARY KEY constraint &amp;ldquo;PK__Constrai__3214EC271FCDBCEB&amp;rdquo;, or my DEFAULT constraint &amp;ldquo;DF__Constraint__ColumnA__21B6055D&amp;rdquo;?
Why should I name each constraint myself and not rely on autogenerated constraint names?
Because it makes maintenance and database update deployments easier, simpler and in my opinion, safer.</description></item><item><title>Optimising date filtered SQL queries</title><link>https://www.adathedev.co.uk/2010/02/optimising-date-filtered-sql-queries.html</link><pubDate>Sun, 21 Feb 2010 16:55:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/optimising-date-filtered-sql-queries.html</guid><description>How you structure your SQL queries is very important and choosing the wrong approach can have big effects on the performance of the query.
One of the key things that should flag up the potential for needing optimisation, is if you are using a function/calculation within a WHERE clause. These can lead to inefficient execution plans, preventing sub-optimal index use.
A classic example to demonstrate this is when querying the data for a specific month.</description></item><item><title>Using the SP:StmtCompleted SQL Profiler trace event class</title><link>https://www.adathedev.co.uk/2010/02/stmtcompleted-sql-profiler-trace-event.html</link><pubDate>Wed, 17 Feb 2010 22:42:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/stmtcompleted-sql-profiler-trace-event.html</guid><description>One question I&amp;rsquo;ve seen popping up a few times recently, is how to check what individual statement(s) within an SQL Server stored procedure are taking the most time.
The scenario is that there is a stored procedure that consists of a number of SQL statements. The stored procedure has been flagged up as running slower than perhaps it was expected to, but as there are a number of statements/queries within it, it&amp;rsquo;s not immediately clear where the time is being taken.</description></item><item><title>High performance bulk loading to SQL Server using SqlBulkCopy</title><link>https://www.adathedev.co.uk/2010/02/sqlbulkcopy-bulk-load-to-sql-server.html</link><pubDate>Mon, 15 Feb 2010 21:24:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/sqlbulkcopy-bulk-load-to-sql-server.html</guid><description>If you ever want to bulk load data into an SQL Server database as quickly as possible, the SqlBulkCopy class is your friend (in the System.Data.SqlClient namespace). Since being introduced in .NET 2.0, it has provided an extremely efficient way to bulk load data into SQL Server, and is one the classes that I see as a &amp;ldquo;must know about&amp;rdquo;. A usual scenario is where you want to dump some data into the database to then do some processing on.</description></item><item><title>Ways to improve technical skills</title><link>https://www.adathedev.co.uk/2010/02/ways-to-improve-technical-skills.html</link><pubDate>Sat, 13 Feb 2010 12:41:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/ways-to-improve-technical-skills.html</guid><description>It&amp;rsquo;s nearly the end of my first week as a blogger. Already I&amp;rsquo;m feeling the benefits of finally getting round to starting up my blog. It got me thinking about what the best ways are to continue developing your skills and learning new things.
For me, there are 3 particular ways that I find are invaluable if you want to keep yourself on your toes technically:
Learn by doing - often you learn my making mistakes.</description></item><item><title>Sorting a DataTable - LINQ performance</title><link>https://www.adathedev.co.uk/2010/02/sorting-datatable-linq-performance.html</link><pubDate>Fri, 12 Feb 2010 21:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/sorting-datatable-linq-performance.html</guid><description>Whenever there are a number of ways to achieve the same goal, I&amp;rsquo;m always inquisitive as what the performance difference is between them. I&amp;rsquo;m a firm believer in thinking about scalability from the start - if you can make your best effort to prepare for scale, then you can save yourself time and effort further down the line. I like to try and avoid pain - it doesn&amp;rsquo;t agree with me.</description></item><item><title>SQL Server 2008 - Table Valued Parameters vs XML vs CSV</title><link>https://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html</link><pubDate>Thu, 11 Feb 2010 20:38:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html</guid><description>The scenario is, you want to create a stored procedure that returns the records relating to a finite set of keys/IDs that you pass in to it. How do you do it? Well you could use dynamic SQL, but for the purpose of this article I&amp;rsquo;m going to ignore that option.
Test scenario -- Create basic customer table CREATE TABLE [dbo].[Customer] ( Id INTEGER IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(50) NOT NULL ); GO -- Populate Customer table with 100,000 sample records DECLARE @Counter INTEGER SET @Counter = 1 WHILE (@Counter &amp;lt;= 100000) BEGIN INSERT Customer (Name) VALUES (&amp;#39;Test Customer #&amp;#39; + CAST(@Counter AS VARCHAR(10))) SET @Counter = @Counter + 1 END Option 1 - CSV list of keys In SQL Server 2000, you would most likely have ended up passing in a CSV list of keys, splitting that out into a table, and then joining that on to your real data table to match the records to return.</description></item><item><title>QCon London 2010</title><link>https://www.adathedev.co.uk/2010/02/qcon-london-2010.html</link><pubDate>Wed, 10 Feb 2010 21:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/qcon-london-2010.html</guid><description>So QCon London is fast approaching, starting with 2 days of tutorials on the 8th and 9th of March, then the 3 day conference from 10th-12th. This will be my first time at QCon and I&amp;rsquo;m really looking forward to it. Having never been to many conferences in the past, the level of expectation I have is solely based on the StackOverflow DevDay in London last October. That was a great day with some very interesting (and humorous) talks, so I&amp;rsquo;m expecting even better things from QCon as it&amp;rsquo;s reputation precedes it!</description></item><item><title>Would you like SQL cache with that?</title><link>https://www.adathedev.co.uk/2010/02/would-you-like-sql-cache-with-that.html</link><pubDate>Tue, 09 Feb 2010 19:32:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/would-you-like-sql-cache-with-that.html</guid><description>One of the things I feel I keep badgering on about in the world of SQL Server and query tuning is to be fair and consistent when comparing the different possible variants. If you don&amp;rsquo;t level the playing field, then potentially it will lead to you thinking a particular query out-performs another when in fact the opposite could be true. It&amp;rsquo;s a bit like comparing 2 paper boys to see which one can complete a given round the quickest - if one of them has been doing the round for the past 2 weeks but the other has never done that round before, then are you going to be able to reliably tell which one is actually quickest?</description></item><item><title>Pulling my finger out</title><link>https://www.adathedev.co.uk/2010/02/pulling-my-finger-out_09.html</link><pubDate>Tue, 09 Feb 2010 13:40:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/2010/02/pulling-my-finger-out_09.html</guid><description>Starting up a blog is something I&amp;rsquo;ve been threatening to do for some time now. There&amp;rsquo;s always a good excuse not to get round to it, even though it&amp;rsquo;s something I&amp;rsquo;ve really wanted to dip my toe into, just to see if I could cut the mustard.
As it&amp;rsquo;s the start of what I hope will be a successful foray into blogging, I&amp;rsquo;m afraid this is indeed a &amp;ldquo;what do you do and where do you come from?</description></item><item><title/><link>https://www.adathedev.co.uk/page/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>adathedev@gmail.com (Adrian Hills)</author><guid>https://www.adathedev.co.uk/page/about/</guid><description>Full-stack C#, Azure, database developer (NOSQL &amp;amp; SQL).
Remote worker.
Always learning.
Based in Hampshire, UK.</description></item></channel></rss>