If you write code to SQL Server then you migt be interested in this: at the end of 2017 I wrote a tSQLt tdd training course which has helped over 200 people learn both tSQLt and how to apply TDD practices to their SQL Server T-SQL development, you can join the course at https://courses.agilesql.club. The course is free if you are happy to wait 10 weeks to complete it, with 1 lesson being made available per week - if you are in more of a hurry or you would like to help support the project you can purchase the course which makes it instantly available to you.

Interesting Azure ARM "Make it So" behaviour

I had a template that deployed a premium managed disk and a virtual machine. I defined the disk like...

Why didnt my Azure ARM deploy work?

I have been using Octopus to deploy ARM templates for a while now and the default task that comes wi...

VSTS extensions, mixing VSS.require and import ... require

I have been starting to write more and more typescript lately and quite enjoying it. I have also bee...

gdpr - panic part 4

In the first part of this series, we looked at where to find out more information about GDPR in the ...

tSQLt Course

In the last half of 2017, I decided to run a tSQLt course and went down the route of putting togethe...

Re-Imagining an SSIS IDE

Re-Imagining the SSIS development environment. oooh: ahhh: SSIS is a powerful and versatile tool f...

gdpr - panic part 3

In part three of this short series Part one is: https://the.agilesql.club/blogs/Ed-Elliott/2018-02-0...

gdpr - panic part 2

Welcome GDPR friends :) Part one is: https://the.agilesql.club/blogs/Ed-Elliott/2018-02-01/GDPR-Pani...

gdpr - panic part 1

GDPR is coming (or if you are reading this in a few weeks then gdpr is here, what do you need to kno...

Azure ARM template function internals

I have been working with azure arm functions for quite a while and they are exceptionally useful but...

xSQLServer is dead long live SqlServerDsc

I have had a problem with DSC in Azure Automation for a few months now, there was a change made to t...

What The Tool? Multiple choice quiz to help you choose a tool for SQL Server

There are a few different choices for tools to use when it comes to SQL Server, while the “exp...

My Azure ARM template development workflow

Writing infrastructure as code is pretty nice and I enjoy the declarative approach of defining what ...

ARMED - Where is the source?

ARMED, where is the source? For quite a few years I’ve been putting everything I wrote on github and...

ARMED - ARM resource dependency graph inside VSCode

I think the title sums it up, I have published a new version of ARMED the arm helper extension for V...

ARMED - Azure ARM VS Code extension

I have been working with ARM templates for a little while and have found it really annoying to test ...

Azure Virtual Machine + Premium Disk Throughput Calculator

I keep having to refer to the virtual machine size page and the disks pricing page to work out how b...

Fixing SQL AG Routing "Cannot find host" using packet analysis (and a spell checker)

I was setting up an availability group listener recently and when I tried to connect to the listener...

"the input device is not a TTY" error running docker on VSTS build agent

I have been playing around with including all my build dependencies in docker for windows lately and...

How do I use VSTS variables in YAML CI Build definitions?

Hey, VSTS YAML builds are my new favorite thing, by like a million miles. If you have a yaml build d...

You have your database in source control now what?

This post is for a specific type of person if you are: New to source control Are getting started on...

Running any AzureRM powershell command tells you to "Run Login-AzureRmAccount to login." even though you are logged in!

Every AzureRM command I was running I would get an error message telling me to login, I then did a l...

Watching for powershell changes and running Invoke-Pester

It seems like more and more recently I have been writing powershell and typescript rather than c# an...

SSDT How To Fix Error SQL17502

TLDR: If you build an SSDT project you can get an error which says: “SQL71502: Function: [XXX]...

A virtualized CPU forced me to eat my lunch early, every day, for weeks

I worked one particular contract where I was forced to take my lunch at 11:35 every day, and it was ...

Where do you install tSQLt?

The question of where to install tSQLt is probably the most common question I get when I talk about ...

tSQLt Test Adapter for Visual Studio 2017

So Visual Studio 2017 has been released a while and I had created a version of the test adapter (whi...

Learn how to unit test SQL Server T-SQL code

A free email course on how to use tSQLt including the technical aspects of writing unit tests AND th...

SSIS ForEach Enumerator File Order

I saw on slack recently a question about how the ssis file enumeraror orders (or more specifically d...

K-SSIS-ed

K-SSIS-ed - View any property or script in SSIS with a single click A cross platform re-imagined IDE...

SQLCover

SQL Cover is a tool to measure code coverage in T-SQL. This will tell you how much of your database ...

SSDT-Dev-Pack

What is the SSDT Dev Pack It is basically a collection of tools that I find make developing in for S...

TSQL Tuesday - Databases and DevOps

DevOps isn’t running SQL Server in a container and pushing code to it from Jenkins When we tal...

SSDT: Unable to connect to master or target server.

Every now and then I come across this error in SSDT, normally when trying to publish and the odd thi...

SSDT DevPack + Visual Studio 2017

I have upgraded the ssdt dev pack to support visual studio 2017 and fixed a couple of minor annoyanc...

SSDT Dev in Visual Studio Code

I have been quite interested by vs code and have been using it more and more recently. I use it for ...

Updating TSqlModels (DacFx)

This one is for the DacFx nuts out there, it can’t be a very big club but judging from the occ...

My SQL Server Development Team Maturity Levels

A teams maturity shows in its choice of tools. I have seen quite a few different development teams i...

SQL Server Continuous Deployment "In a Box"

What is this? Well if you read the name aloud “SQL Server Continuous Deployment in a box&rdquo...

ScriptDom parsing and NoViableAltExceptions

If you have ever tried to debug a program that used the TSql Script Dom to parse some T-SQL you will...

SqlPackage Deploy Performance - IgnoreXX are not your friend!

Following on from yesterdays blog I was wondering about the comparison of objects that were the same...

SSDT Deploy / Publish Performance

Publishing dacpac’s is a little bit of a pain when you have multiple databases, it can easily ...

SSDT and Friends - .net meetup video

I did a talk at the london .net meetup if you want to get an overview of what SSDT is and how to get...

Devops without management buy in?

I was talking to someone at a meetup recently who was really keen on doing continuous deployment for...

SQLCover Fixes and Download location

There have been a couple of fixes in SQLCover this week, kindly submitted by John Mclusky (https://g...

Refactoring in SQL Server Data Tools - SSDT

In this post I will talk about the in-built refactoring support in SSDT – the language is slightly d...

Database Deployments in Uncontrolled Environments

The ideal is to make a change and see that change deployed to production, in a perfect world we woul...

Controlling a dacpac deployment

I have been thinking quite a lot recently (ok not that much but my thinking has changed) about how t...

tSQLt Visual Studio Test Adapter

tSQLt Visual Studio Test Adapter What is this? This lets you use Visual Studio to run tSQLt tests ea...

DacFxed - Powershell Nugetized DacFx wrapper

Deploying a dacpac from powershell should be pretty easy, there is a .net api which you can use to o...

SQLCover v 0.2 - Bug fixes and Azure V12 Support

I have released a new version of SQLCover which is a code coverage tool for T-SQL (let’s you i...

Where do you put your business logic? In stored procedures?

There seems to be two trains of thought and I think this is mainly down to who and where your develo...

How do you audit automatically generated sql deployment scripts?

I saw recently an email where someone stated that the reason that they manually create deployment sc...

What is code coverage for?

Code coverage gives you an indication of how well tested a particular area is. It is not a measure o...

SQLCover Code Coverage for SQL Server T-SQL

Open Source code coverage tool for T-SQL, SQL Server 2008+ What is code coverage? Code coverage is a...

Post Deploy Scripts In Composite Dacpacs not deploying

Composite projects in SSDT are a really useful way to logically split databases up while still being...

Where did january go?

I have been pretty busy over january and the first half of feburary and haven’t had time to wr...

T-SQL Code Coverage in SSDT using the SSDT Dev Pack

Code Coverage What is code coverage? When you write some code and then test it, how sure are you tha...

What is SSDT? Part 3 - an API for me, an API for you, an API for everyone!

In the final part of this 3 part series on what SSDT actually is I am going to talk about the docume...

What is SSDT? Part 2 - More Reasons to Bother!

In part 1 of this series available here I introduced my drawing of what I think SSDT is and talked a...

What is SSDT all about aka Why should I bother?

I often get asked the questions “What is SSDT” and I have wanted to have a single reference as...

SSDT Migrating Data Without Losing It

You sometimes want to do things like split a table into two or move a column into another table and ...

T-SQL Clippy

I love writing c# code using visual studio and resharper, it is a really nice experience and resharp...

Automatically re-write non-sargable isnulls into sargable code in SSDT

“where ISNULL(column, ‘DontMatch’) = ‘Match’” - is kind of a bad...

Find duplicate indexes in SSDT

Update new download location is https://visualstudiogallery.msdn.microsoft.com/435e7238-0e64-4667-89...

Convert select statements in scripts into Inline-TVFs automatically

Update new download location is https://visualstudiogallery.msdn.microsoft.com/435e7238-0e64-4667-89...

ScriptDomVisualizer - Now Displays TSqlParserTokens

New ScriptDom visualizer now also shows the tokens that are found in a sql script. It also highlight...

Changing case of T-SQL Keywords

Update new download location is https://visualstudiogallery.msdn.microsoft.com/435e7238-0e64-4667-89...

Quickly deploying procedure/functions from SSDT (Bypass Publish)

SSDT is great but one thing that is not so great is the performance of the publish. I am not complai...

Using the ScriptDom without losing comments

The ScriptDom is cool, it lets you parse T-SQL, play around with the AST (tree of statements) and th...

SSDT DevPack - Highlight expensive queries

When developing stored procedures in SSDT it is important to know when you have written a query that...

Create stub tSQLt tests in SSDT from stored procedures

I have released another tool as part of the ssdt dev pack, what this does is create tSQLt classes an...

Automatically name primary key constraints in SSDT

Automatically name primary key constraints There are some things you see when writing t-sql code and...

New Version of MergeUi

I have made some changes to the way MergeUi works and also moved it into a new repository (https://g...

How to get started with the ScriptDom

What is the ScriptDom? The ScriptDom is an api for taking t-sql scripts, converting them into an AST...

ScriptDom Visualizer V2

I have made a few ui changes to this to make it a little more usable, I can’t really think of ...

Blocking SSDT Deployments When You Dont Like Something

This is probably the last contributor that I am going to add to the DacFx deployment contributors pr...

SQL Server Edition aware SSDT deployment scripts

Another day another deployment contributor for the project: https://github.com/DacFxDeploymentContri...

Deploy SSDT INSERTS in Batches

I have added my first actual deployment contributor to my deployment contributor project: https://gi...

ScriptDom Visualizer

Writing code to generate TSql using the ScriptDom is hard. There is a seemingly bewildering array of...

Shared SSDT Deployment Contributor Repository and Free Help

One of the best features of SSDT is deployment contributors. They are so exciting I am going to say ...

Looking at SSDT upgrade scripts

I have been using SSDT seriously for a couple of years now and have really been impressed with the c...

Dir2Dac and github2dacpac - create dacpacs from script folders or the internet

I like writing go (golang not the batch separator) and one of the things that I like is that if you ...

New SSDT Projects default to the latest version of SQL Server

When you create a new SSDT project it is created (at the moment) as a SQL Server 2014 project which ...

Video of sqlrelay talk - build a ci pipeline in 55 minutes

My session yesterday was recorded, apart from the fact that me and mark were having a chat for about...

How do you choose a source control system for your SQL Server database

If you already have a source code repository for your app code or other databases or you have anothe...

SQLRelay Reading - Build a CI Pipeline in 55 Minutes Talk

I had a lot of fun yesterday presenting my talk on how to go from not having your database in versio...

Deployment Contributor Logger

Niche tool of the day If you know what a deployment contributor is and have wanted to see what steps...

Deployment Contributor KeepTableColumns Filter

To help with this scenario (it is pretty specific): You have a table that has columns that you do no...

Inside an SSDT Deployment Contributor

In my deployment filter I have been asked a couple of times to allow columns that exist on a table t...

Setting up a new CI server to build SSDT projects

I am going to ignore the fact that people don’t want to install visual studio on a build serve...

ScriptDom versioning issues

I installed the 2016 SSMS client recently and in one way or another any of my apps that I have writt...

Why is my tSQLt test not running?

I wrote a test earlier and forgot one of the two cardinal rules about tSQLt so I was running my test...

Slides for my pass virtualisation virtual chapter talk on how sql fits into a containered world

The slides are up: https://github.com/GoEddie/SQL-Server-Containers Any questions shout!

We can do professional SQL Server deployments using SSDT

Really excited by my first post on medium, haven’t really used it before but found it to be a ...

Slides and Demos for SQLSupper August meeting

Last night I had a lot of fun presenting on one of my favorite topics, MARS and SQL Server protocols...

I dont use the Visual Studio SSDT Publish

I see questions pretty regularly on stack overflow and the ssdt msdn forum that is some variation on...

Ignore a warning on a dacpac reference at your peril

I worked on a project where we had two SSDT projects with different versions of SQL, one 2012 and on...

Shared databases or private databases?

Traditionally database developers have shared a database and while this certainly made sense when ev...

AdventureworksCI Step 5 Adding tSQLt to the solution

This is part of a series on how to take the Adventureworks database and bring it in line with modern...

AdventureworksCI Step 4 Pushing to GitHub

This is part of a series on how to take the Adventureworks database and bring it in line with modern...

Keep your environments in-sync and your upgrade scripts fresh

Whether we use a tool to generate upgrade scripts or we write manual test scripts for database chang...

Pre-Compare & Pre-Deployment Scripts to SSDT

When you use SSDT to deploy database changes you can include a pre/post deploy script which is run a...

WaitForSql (to start)

In the spirit of having apps that do just one thing I have put a really small .net app on github tha...

Layer a database into a SQL Server container

In my previous post on running SQL Server in a container I showed how you could use the Spoon (https...

AdventureworksCI Step 3 Handling data with SSDT

This is part of a series on how to take the Adventureworks database and bring it in line with modern...

Run SQL Server In A Container Today July 2015

Containers are one of the big things at the moment, Microsoft has recently announced that they will ...

Download SSMS, SSDT or SSDT-BI

It is a constant source of frustration for some people that it is hard to download SSDT or SSDT-BI o...

Why does sqlpackage.exe not compare after the pre deployment script has run?

It isn’t a Pre compare script When you use SSDT to deploy your dacpac, a pre deployment script...

AdventureWorksCI Step 2 From MDF to Dot Sql Files

This is part of a series on how to take the Adventureworks database and bring it in line with modern...

AdventureWorksCI Step 1 planning

This is part of a series on how to take the Adventureworks database and bring it inline with modern ...

A reference implementation of a continuous integration pipeline for legacy SQL Server databases

What am I doing? Creating a publically available version of the adventureworks 2012 oltp database bu...

Why is SSDT so slow?

I see the same question again and again “I am using SSDT but it takes a long time to publish c...

MergeUi is on github.com

I have put the code for MergeUi on github now: https://github.com/GoEddie/MergeUi That is all.

MergUi 0.1.9

What is MergeUi? A Visual Studio Addin to create and edit MERGE statements in SSDT projects. What ha...

Putting the ORM debate to bed

Hopefully this should put the ORM debate to bed, either use an ORM or don’t but please don&rsq...

Approaches to deploying Sql Server database code

When you deploy your Sql Server code, there are two approaches, there is the manual way and the auto...

BIML is better even for simple packages

BIML, you either love it or hate it - either you use it to totally generate hundreds of packages or ...

Sql Saturday Talk

I had the honour of talking at the excellent Sql Saturday Exeter this morning and wanted to share my...

What Permissions do I need to generate a deploy script with SSDT?

It is sometimes useful to be able to use sqlpackage.exe to create a script that can be deployed manu...

HOWTO-Get-T-SQL-Into-SSDT

Ok so you have created an SSDT project and are currently congratulating yourself on how awesome and ...

Generating tSQLt tests from a dacpac

UPDATE I went and built this into my add-in for SSDT, more details https://the.agilesql.club/blog/Ed...

SSDT Myths 1 - SSDT only works with TFS

I was reading a white paper from a Sql Server tools vendor about how to integrate their tools with S...

Free Professional Advice on Setting up Continuous Integration for Sql Server Databases

Calling all London/Sussex Sql Developers does this sound like you? Would you like to set up Continu...

Unit Test Sql Server Code

In part 3 of this series of blogs on “getting more agile” I am going to look at unit tes...

Introducing MergeUI

What is it? MergeUi is a addin (VSPackage) for Visual Studio / Sql Server Data Tools projects. It is...

Source control isnt just a backup

In the second part of this series on getting more agile and bringing our Sql Server development prac...

SSDT all the way

I generally write T-SQL code in SSDT (Sql Server Data Tools) and find that I often publish to my loc...

Steps to become more agile with Sql development

In this series of posts I am going to talk about what it is we need to do, as Sql developers and DBA...

Choosing a Development IDE for Sql Development

In this series of blog posts, I am talking about how to use agile or modern development practices to...

Enable SSDT and DacFx logging

**Update** I have noticed that these cmd files are missing from recent ssdt builds, to enable loggin...

Why does SqlPackage keep dropping and recreating constraints?

I sometimes see this when deploying via sqlpackager.exe: Analyzing deployment plan (Complete) Updati...

HOWTO: Filter Dacpac Deployments

Updated 2015-02-02 I have changed the details about passing multiple filters at the bottom, see the ...

Enforcing T-SQL quality with SSDT Analysis Extensions

What? Simply put, it is possible to include checks in the SSDT (Sql Server Data Tools) build process...

DacFX Links

I thought it would be a good idea to gather together a list of links for DacFx, blogs code or articl...

Make Visual Studio Setup Slightly Faster

If you get the Visual Studio 2012 or 2013 web installer then it uses the BITS service to download th...

Running tSQLt tests from C/VB.Net/Java/Whatever

When you already have a test framework setup such as MSTest or NUnit and possibly a CI build in plac...

For better Sql code use fake tables

When unit testing code there is a really powerful feature that is either called mocking or faking or...

Unit tests help document your code!

I recently had the chance honour to spend twenty minutes talking to Boris Hristov about testing with...

What collation variables take on in T-SQL

I was asked an interesting question about collations in sql server recently about where variables in...

DBAs - Step away from production

I have worked as a DBA and also as a Sql Server developer and in many roles had full access to produ...

DevDev

There has been a gigantic shift in attitudes between development and operations, the devops movement...

Blog Redirected

I have moved my blog over to here, expect exciting posts about the things that interest me my previo...