Hi, I’m Hamish Watson and I’m running for the PASS Board of Directors.

Hi, I’m Hamish Watson and I am running for the PASS Board of Directors:


This blog post is why I decided to run for the board, why I think I am qualified to be a board member and the vision of where I think the board needs to go.

I had thought about running for the board for some time – I have been a member of the PASS community since 2013. I’ve been a User Group leader since 2015 and lead organizer of SQLSaturday South Island since 2016.  I have always been someone who cares about what is going on and was a peer support person for new students at my high school and through university as part of the Māori student community. I’m 1/4 Māori and helping my extended student family (whanau) was important to me.

PASS is a global community and it has helped me extend and stretch myself – because without becoming a member of our community I would never have travelled around the world helping others make a positive change in their lives through my talks.

This outward looking viewpoint is probably as a result of being a New Zealander – we’re a small country that does big things. We were the first country to give women the right to vote in the 1890s, we had reforms in the 80s that meant that people of any gender, race and sexuality could be considered a “Kiwi” i.e. we all are one – we should treat each other as one. I try and live my life according to those foundational goals of my country, specifically around helping others who are not included or represented.

I bring to the board a viewpoint that we need to be aware of inclusivity and the diversity of our community. It has been encouraging to see the actions that PASS have started to take and whether or not I get on the board – I want to help continue those steps.

I wrote an article this year around how I and my fellow MVPs need to consider other people:


It shows how even at grass roots level we all have a part to play to help people and make sure that they are included, supported and have a positive experience with us.

Two of my endorsements for the board were Reza Rad and Rob Farley- two people who have mentored me over my community career and their tutelage over the years has encouraged me to help others. I have mentored students in India and helped them get their first job, I have helped SQLSaturdays get off the ground in new places – I do this because I know what it is like to have to ask for help. I want to be the person that approaches people and say “can I help?”

Applying for the board is my way of saying to my PASS community – “can I help?”

My vision is to bring some of my positive attributes – I am passionate about helping others, my drive is for people’s viewpoints to be heard and acknowledged and I like to incorporate openness in all the things…

Our technology platform is evolving – we’re Data Platform instead of just SQL Server – the role of the DBA is evolving too (Data Engineer and the like) and PASS needs to be a part of this evolution. To be both a leader in the education space and also to serve our changing community.

Your vote is important and this year we have an awesome strong contingent of people who care deeply about our community. It is very encouraging for the direction of where PASS will go to see more people from around the world put their hand up and say “I want to help guide our community”. I stand amongst champions this year and if I do not get on the board – I know that the other people will make a difference.

My mantra for everything in my life is “make stuff go”, I like to connect disparate technology and people where others say it can’t be done.  After the March shootings this year in Christchurch I saw a community that was hurting and needed some help. I helped them “make stuff go”. I was told for certain things it couldn’t be done – I refused to accept that and even now I’m still involved within that community helping and just being someone that they know cares.

That is what I want to bring to the board – to bring together disparate cultures, viewpoints and thoughts – to bring it together towards a common goal of connecting us all as a global community.

I want to MakeStuffGo and I hope that you do too – if you see me – please stop and have a chat. I want to hear about your experiences, your thoughts, because for our community to grow it needs voices to be heard.


but more importantly – #Vote – the number of people who vote in the past are low – and I hope that this year you all will take some time, read the bios and place three votes to make a difference.

Feel free to read Steve Jones (t | w) blog post endorsing myself and 2 other candidates:


How to Vote

To be eligible to vote in the 2019 PASS Election, PASS members must have completed their myPASS profiles by June 1, 2019. (If you’re not already a free member of PASS, there are many reasons to join, including the wide variety of Virtual User Groups, free training, and ability to interact with your  chapters and SQLSaturday events!) Voting will commence at 11:30am Pacific Time on November 6th until 12:00pm Pacific Time on November 12th. Election results will be announced November 13th.

You’ll be able to vote via your PASS.org My Profile page.

So please go and vote – make your voice be heard and action change in our community.


Blogging – goal achieved – 72 days early

So I started blogging in 2016:

So why blog….now?

It is very interesting going back and reading that first blog post.

It was mostly thanks to my late great mate Tom Roush (t | w) who 20 months later I still miss dearly….

Tom said to me that I should write stuff – to help others. He helped me become a way better person within the community – both SQL Server community and others.

This blog post is dedicated to a wonderful guy who cared and had a wonderful mischievous laugh.

Back in 2016 I wrote 2 blog posts – it was November 2016 so it wasn’t too bad.

Each year I wrote more and Tom would give me constructive feedback on some of the topics etc.

I found that some of the blog posts that I thought were the simplest ones that no one would read were in fact the most popular:

SSRS won’t bind HTTPS to new certificate — “We are unable to create the certificate binding”

Changing TFS to use HTTPS? — update your agent settings too….

Changing TFS to use HTTPS? — update your agent settings too….

I get the occasional email/comment from people thanking me for writing the three posts above – yet I really only wrote them to remind myself when I had to do them!!

Anyways – each year I gave myself a goal to achieve in terms of views – and subsequently failed.

2017 – 3,000 views  X (2,913 – so close!!)

2018 – 15,000 views X (14,493 – agonisingly close…)

2019 – I decided that I would try for 20,000 views and I’m happy to say that on day 293 of the year I achieved it:

Blog Stats

I’m glad that I have continued blogging and writing posts that help people.

Just like my mate Tom told me I should….


“xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun” – git in terminal does not work after macOS upgrade to Catalina

This blog post is how to get git going after upgrading to Catalina (10.15).

I use git as a method of storing all my presentations and work files. It was a great way to learn how to use git. I use git commands and run them in the Terminal app on my mac.

However after upgrading to Catalina this weekend:


I always run

git status

to see what changes I have locally.

I then run

git pull

in case I’ve made change to source control on my other computer and need to merge changes.

However I got this error:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun


The fix was relatively easy and I’ve had to use it before for other apps when upgrading macOS:

xcode-select --install

It took about 3 minutes to install the latest XCODE utilities/libraries and then everything worked again.


You can also try

xcode-select --reset

But my opinion was – I’ve upgraded the OS I may as well upgrade the utilities as well.



GotoWebinar (and Teams) won’t screen share after macOS update to Catalina (10.15)

This blog post is about the situation where after upgrading to the latest macOS version 10.15 – also known as Catalina – you may not be able to share your screen content.

All that will show is your background…..


Click the Apple in the upper left hand corner of the screen > System Preferences > Security & Privacy.

Click the Privacy tab at the top of the dialog box.

Scroll down on the left hand side of the screen to Screen Recording.

Check the box next to GotoMeeting.

You will be alerted to quit GotoMeeting before the change can take place.

Then re-start GotoMeeting. You will be all set to now share your screen.

Screen Shot 2019-10-19 at 08.52.29.png

Do that and you’re all good – note this might affect Skype and Teams – so follow the same procedure there.


The Data platform has evolved – so too must the DBA.

This blog post is around the changing landscape of both SQL Server and the people who are our trusted guardians of it – DBAs.

If you have been involved with SQL Server in the past 5 years, you will have seen some fantastic changes within the product. Where once we worked on SQL Server—we now work on a Data Platform. Microsoft has evolved the name of the SQL Server platform for very good reasons.

These days data exists both on-premises and in the cloud—data is being retrieved from Big Data running on Kubernetes clusters, it is being consumed by open source services that are interfacing with cognitive intelligent applications and data is being used with AI and Machine Learning models to provide predictive analytics. Our usage of data has also changed dramatically in the past 5 years, and with it, our administrative guardians of that data, the DBA, must also evolve with these changes

This article will help the reader who is trying to determine what they need to do to remain relevant—and more importantly—employable.

Embrace DevOps and Automation:

Automation will kill the DBA” this statement is wrong – automation will enhance the DBA. Deployments that were manual and disjointed can now be automated and by utilizing DevOps principles like Continuous Integration (storing the database model/code in source control and automating the building and testing of it) and Continuous Delivery (automating the repeatable, reliable release of that code through consistent environments).

There are open source (free) tools for automating a lot of manual database processes and tasks, for example https://dbatools.io which is a community-driven project helping DBAs work better. By automating a lot more it means DBAs will have more time to be proactive, to tune their systems more and to have time to upskill for the evolving platform that they manage.

Consider the Cloud as your next Server and Skillset:

Cloud-based computing has revolutionized industry and the same can be said around database management. No longer do DBAs need to be tethered to their infrastructure, looking at what security patches need to be applied or how to manage on-premises capacity constraints within their database ecosystem.

Cloud-based databases are shifting DBAs from hands-on guardians of databases to value-drivers for their businesses. I use the term value-drivers because cloud computing does cost money, where provisioned incorrectly it can cost a lot, and if DBAs have the skills to tune databases then that compute cost can be reduced.

The changes that the cloud brings are:

  • More higher quality deployments, less weekend work
  • More automation, less hands-on work
  • More data enrichment, less database maintenance
  • More growth in data, less resource constraints

The growing importance of cloud-based data and databases frees up DBAs from mundane, tasks, and provides more time to work directly with the business on ways data can be applied to market driven needs. The cloud also opens the door to DevOps; through the use of consistent tooling and automated processes, the work of DBAs, developers and operations teams are synchronized to deliver value at a velocity the business requires.

Lastly, by embracing the cloud and what it has to offer, DBAs have the greatest ability to advance and extend their career opportunities that they’ve had for the past 25 years.

Understand How The Platform is Evolving:

If we look at Big Data clusters—these are typically run on the Linux platform or on containers within a Kubernetes cluster. These clusters need to be provisioned and how they integrate together needs to be understood by all involved. What this means is DBAs need to become more general technologists. DBAs need to understand how SQL Server will run in a container, they need to look at how R, Python, Bash and PowerShell are languages they need to know in conjunction with T-SQL. The role of the DBA now encompasses more intelligent tooling that can manage and report on data infrastructure and processes across a wide variety of platform technologies. Hint: SQL Server doesn’t just run on windows server anymore…


Data has never been more important to organizations, and no individual has a better understanding of how to manage and ultimately harvest that data than the DBA. However, with the evolution of the Data Platform to be more self-autonomous, DBAs will be under increased pressure to prove their value. Whether that is learning open source tools, big data clusters, cloud technologies, or performance monitoring processes, that is up to the DBA. The DBA has to evolve, like all professions that have with the introduction of cloud and automation, but the role itself is unlikely to ever disappear—the name could even evolve to become “Data Platform Engineer”.

If you are going to PASS Summit this November, then I feel the following sessions would greatly help you on your evolving career path within the Data Platform:

Journey to the Cloud: Planning the First Steps

Best Practices for Branching Database Code in Git

SQL Migration to Azure: Best Practices, Accelerators, and Production Case Studies

Should I Move My Production SQL Server Workloads to Containers?

How to Deploy SQL Server Containers on Kubernetes in Azure

Introducing SQL Server 2019 Big Data Clusters

This blog post is a reproduction of an article I wrote for PASS:


You’re keen about data and haven’t heard about PASS?

You should join it – it has a LOT of free resources and is free to join:


Joining revolutionised my career and life.



Quick 6 month check – how are those learning goals going…?

So in January I wrote a blog post on some goals I had this year:

Some of my goals for 2019

It’s now July – how are things going?

I’m happy to say that I have indeed been doing a whole heap more on containers and have been using the Azure Kubernetes Service (AKS). Admittedly this has had to be in my own spare time as I have found that my clients are not ready to embrace either containers or AKS for SQL Server yet.

In fact a fair chunk of my clients need help getting SQL Server tuned optimally….

But in my spare time I have been folding AKS into CI/CD pipelines and looking at as much as I can.

In fact I am speaking about AKS in the following places:

Data Platform Summit:

SQLSaturday Perth:

PASS Summit:

(As a slight aside I am also speaking at Redgate SQL in the City Summit at PASS (https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92888) – which is a life goal achieved!!)

So 6 months in – I’ve been doing a fair bit of what I had planned to do. Which after a fairly tumultuous start to the year is a pretty good start.



“An installation package for the product Microsoft SQL Server 2012 Native Client cannot be found” – during SQL Server 2017 install

This blog post is about a situation that initially perplexed me – I was installing SQL Server 2017 onto a new DEMO machine – running Windows Server 2019. This install is one I have done over 50 times, if not more.

Halfway through I got an interesting error that (1) I’ve never seen before and (2) did not expect post SQL Server 2014.

MSI Error: 1706 An installation package for the product Microsoft SQL Server 2012 Native Client cannot be found. Try the installation again using a valid copy of the installation package ‘sqlncli.msi’.

And it then asked me to locate the install files for SQL Server 2012 Native Client.

I (obviously) could not find those as I had not installed it – so I downloaded the native Client off Microsoft’s website and then proceeded to get this error:

If a later version is installed – why does the installer want me to install it…??!!

At which point I wondered what the heck was going on….

Until I remembered that unlike my normal setup I had installed Visual Studio 2019 on the VM first. So I looked in Programs and Features and lo and behold there was SQL Server Native Client:

Screen Shot 2019-07-20 at 11.14.04.png
Huh – I didn’t install that… oh wait – Visual Studio probably did!!

I also noticed SQL Server 2016 LocalDB which is installed by Visual Studio – which I made a note to upgrade to version 2017 as this can cause issues with things like the TRANSLATE function that was introduced in SQL Server 2017.

So I uninstalled SQL Server 2012 Native Client and reinstalled SQL Server 2017 Developer Edition and boom!! – it worked.


Can you speak at my User Group or Conference? No? Sweet As – can you help people register please?

This blog post is not going to be a technical one…. but it’s about technology – well more accurately about bringing technology to the masses.

I recently got awarded this:

0.0028% of people have been awarded within the PASS Community….   😯

What is it?

It is an award that is given to people within the PASS Community who have done a heap of volunteering. You have to be nominated to get it – so thank you to whomever nominated me – it was a surprise. A very humbling surprise…..

You can find more about here:


I was lucky enough to have PASS President Grant Fritchey ( t | w) announce it via YouTube (2 minutes 08 seconds in but please watch the whole video – PASS is a great community initiative)


Oh and if you are interesting in learning stuff for free and be part of a growing community of 300,000 like-minded Data Platform people – register here:


It’s FREE!! And you get access to a lot of cool educational things like Virtual User Groups and a heap of material to help you be a better Data Platform person.

So here’s my challenge to you – in fact two challenges:

Do you know someone within the PASS Community who has been an outstanding volunteer? If you do – please nominate them, we need to recognise the hard work, late nights, early mornings and stuff that people do. By the way – people don’t do those things to earn awards – they do it because helping others is a fantastic way to live your life.

We’ve all been there where we don’t know how to do something, or need to learn or just need a helping hand.

I’ve been there, I’ve had so many people help me out, give me advice (both technical and personal) and that’s why my drive is to help that one person in the crowd or webinar to do things better. It’s why I give up my time in my local community to speak at any event that I can – especially ones with young people.

Helping others grow and learn is rewarding in itself and I’m flattered and humbled by the nomination and award. Writing this blog post I hope it inspires you too to go out and #MakeStuffGo for your local community.

Which is part of my second challenge – do you have a local User Group, Meetup or Community Conference that is run in your city? Please go and find the organiser and ask them if they need help.

Don’t worry if you don’t think you have anything to speak about – that’s OK – you know what makes a User Group or Conference actually work?

The people who are helping the registrations, the people who help test the AV, the people who stick around afterwards and clean up.

Those volunteers are the true engine of a community conference.

So please, give it a go – you will make a massive difference.




How to resolve ‘Login failed for user’ and sa password lost (Error 18456)

This blog post explains how to get into SQL Server if you have lost your sa password or you have no way of getting into your SQL Server instance.

This blog post is dedicated to the people who came along to my training course in Wellington 22nd February 2019…..


During the course on “DevOps for the Database” – my 2nd instance on the training VMs was not setup for the training user. I did not have the sa password on me at the time and so I had to break into the instance…..


There are two methods you can do this:

  • the GUI
  • command line

Using the GUI:

First thing – stop the SQL Server Agent using configuration manager:

Stop the SQL Server Agent so we have exclusive use of SQL Server

Now we want to stop the SQL Server instance and add the -m flag to it’s startup parameters:

Adding the -m switch to startup parameters
The -m switch is assigned to the SQL Server engine

We now start the service up and SQL Server will be in single user mode. You can now choose which methods to connect to the SQL Server instance.

Using the CommandLine to bring up SQL Server in Single User Mode:

These days it is way more preferable to write scripts for everything – and it’s a bit quicker to run the following commands.

For the example below the instance name is PROD.

First – if you’re not sure where SQL Server is installed you can look at the properties of the instance via the services applet and see where the path to the executable is.

Screen Shot 2019-02-26 at 10.31.24
Seeing as you’re here you could actually stop the service!!

For the example above the executable that we want to put into an ADMIN command prompt is:

"C:\Program Files\Microsoft SQL Server\MSSQL13.PROD\MSSQL\Binn\sqlservr.exe" -sPROD

You can now stop the services:

Screen Shot 2019-02-26 at 10.59.21
You will be prompted to stop SQL Server Agent – this is a good thing

You can now paste in the executable path from the services applet and add a /m to the end

Screen Shot 2019-02-26 at 10.59.21


Logging in:

Regardless of which method you used to start SQL Server up in Single User mode you can now bring up another command prompt in Administrator mode and use SQLCMD to connect to the single user instance:

Screen Shot 2019-02-26 at 11.24.30
Connecting is very easy
Screen Shot 2019-02-26 at 11.35.08
You can now type T-SQL like normal

You have two methods of creating users – SQL Authentication or Windows Authentication.

Creating a SQL Authenticated User:

1.Connect to the master database in SQLCMD window:


2. Create a login called temp login (or whatever you want to call it)

CREATE LOGIN TempLogin WITH PASSWORD = '***********'

(replace ******** with your password)

3. Add your user to SYSAdmin role:


You can now connect to your instance with SQL Authentication and your username/password from above and add your required user that could not login to your SQL Server instance.

Or change the sa password if required…

Creating a Windows Authenticated User:

1.Connect to the master database in SQLCMD window:


2. Create a login for your windows domain (i.e. my domain is called MyDOMAIN)


3. Add your user to SYSAdmin role:


You can now connect to your instance with Windows Authentication and  and add your required user that could not login to your SQL Server instance.

Or change the sa password if required…

When you are happy that you can connect – remove your temporary login and if you used the GUI – stop the SQL Server instance and remove the -m flag from startup parameters and start up SQL Server.

This is a very quick way to essentially break into your SQL Server instance and create an admin account – obviously quite dangerous if you have RDP access to the server… so be careful who can access the server that hosts your SQL Server instances!!


Authentication considerations for your applications when migrating to Azure SQL Managed Instances

This blog post is related to my previous blog post on Azure SQL Managed Instances:

Azure SQL Managed Instance – full blown SQL Server in the cloud….?

Before you actually migrate your database you need to think about what changes to your application you may need to do.

Azure SQL Managed Instances do not utilise windows authentication – so your two methods of authenticating applications and users are:

  • SQL Authentication:This authentication method uses a username and password.
  • Azure Active Directory Authentication:This authentication method uses identities managed by Azure Active Directory and is supported for managed and integrated domains. Use Active Directory authentication (integrated security) whenever possible.

Azure Active Directory (AAD) logins are the Azure version of on-premises database logins that you are using in your on-premises SQL Server instances. AAD logins enables you to specify users and groups from your Azure Active Directory tenant as true instance-scoped principals, capable of performing any instance-level operation, including cross-database queries within the same Managed Instance.

Note: Azure AD logins and users are supported as a preview feature for Azure SQL Managed Instances.

A new syntax is introduced to create AAD logins, which utilises  “FROM EXTERNAL PROVIDER”  i.e.

CREATE LOGIN [hamish@morphit.onmicrosoft.com] FROM EXTERNAL PROVIDER

compare this to our normal method of creating a login for a windows domain account


One of the key things to understand with Azure SQL Managed Instances is that if you are
leveraging AAD for authentication then the SID for the server level login will not be
the same as on-premises. This will be a consideration when you are migrating your database and users from on-premises to Azure SQL Managed Instance.

Just like any database migration where SQL Authentication is used, you will need to handle the mismatch in SID between the database user and Instance Login.

This means that you may have to use ALTER USER to link the AAD login to the database user. Which in effect will link the database user to the server login.

You can also remove the user and re-add them in – however this is quite a destructive method and you will have no certainty that you will get the securables correct or as they were before you removed the user.

The biggest consideration is – will your application handle AAD – if not then you will have to use SQL Authentication.

If you decide to use SQL Authentication initially and then move to AAD then you will need to re-engineer your application to leverage AAD….