Founded by Data Platform MVP, Randolph West, Born SQL provides specialist SQL Server services, upgrades, on-site support and disaster recovery services in western Canada. Allow us to identify what’s hurting your database environment, implement changes with little to no downtime and keep your server running smoothly.
Data management. Simplified.
Find the SQL Server solution for your needs
Discover exactly what’s hampering your SQL Server database environment and how to fix it.
Update your SQL Server to the latest version, or any older version currently supported by Microsoft.
Recover data that may have been lost on databases from SQL Server 2005 and upwards.
Improve your SQL Server performance in two days or your get 50% of your money back.
Get the on-site or remote Database Administration solution for all your SQL Server needs.
Find out where Born SQL will be sharing knowledge or book our expertise for your event.
Sign up to our blog and get e-mail notifications for new entries
SQL Server knowledge. Shared.
Read our latest blog entries
After last week’s post about using WITH (NOEXPAND) to query indexed views even on SQL Server Enterprise Edition, this week is a short but interesting side-road into deterministic values, and why it is important to get your data types correct. Longtime readers will know I care deeply about data types. Here is a T-SQL query
-> Continue reading Using indexed views? What is an imprecise or non-deterministic convert?
Today after fighting with designing a view that let me create a clustered index on it (indexed views — also known as materialized views — are awesome in the right context!), I kept running into the same problem whenever I clicked Display Estimated Execution Plan in SQL Server Management Studio. The problem was that the plan was doing
-> Continue reading Using indexed views? Don’t forget this important tip.
I was thinking about a comment I made to my intern last week. She has been studiously attending to all the different things I do in my day (what many people consider a well-guarded secret!), and over the last few days we were writing documentation for a customer I’m helping build out a brand new
-> Continue reading How to read documentation
In my final post about gatekeeping in technology, I have to come clean about something. Let’s go through this journey together. In the first post we spoke about what gatekeeping is. In the second we looked at choosing our words carefully. In the third post, we looked at diversity in the workplace, and also how
-> Continue reading Gatekeeping and Accessibility
In my home lab I have an Ubuntu virtual machine that runs both SQL Server 2017 and SQL Server 2019 in Docker containers.
After SQL Server 2019 Release Candidate 1 was released, when I performed my usual migration to get the latest version, I noticed that the command line for the SQL Server instance was different.
sudo docker ps -a --no-trunc to see the full command, which is emulated below (note: this output is heavily abbreviated).
CONTAINER ID IMAGE COMMAND
57e9c7ac2470 mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/permissions_check.sh /opt/mssql/bin/sqlservr"
deea050363b4 mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/sqlservr"
For reference, SQL Server 2017 on Docker ran as the root user (similar to Local Administrator on Windows Server). With SQL Server 2019, it no longer runs as root by default, but if you have performed an upgrade to 2019, your data files may have been created as the root user, so SQL Server has to run elevated to start correctly; this is performed by a script called permission_check.sh.
sudo docker logs SQL150 | head
Note how it says this container is running as root because the underlying master database file is owned by root.
SQL Server 2019 will run as non-root by default.
This container is running as user root.
Your master database file is owned by root.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
This is an evaluation version. There are  days left in the evaluation period.
2019-09-02 21:34:25.59 Server Microsoft SQL Server 2019 (RC1) - 15.0.1900.25 (X64)
Aug 16 2019 14:20:53
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 16.04.6 LTS)
2019-09-02 21:34:25.60 Server UTC adjustment: 0:00
That “learn more” link will redirect us to https://docs.microsoft.com/sql/linux/quickstart-install-connect-docker.
You can view the contents of the permission_check.sh file below, or share your thoughts in the comments.
Recently I have become more vocal on Twitter and on my personal blog about my social activism. For the record, I have been an activist for LGBTQIA+ rights since 2001, so if this comes as a surprise to anyone, you haven’t been paying attention. This activism gives me a unique opportunity in my roles as
-> Continue reading Gatekeeping and the lack of diversity in the workplace
In a previous post I wrote about storing password hashes in a database, which raises the question of how to convert an existing legacy password storage system to use hashes (or even no passwords!) without annoying the people who use your system. Dial ‘S’ for Secret Let’s assume that you have inherited a database which stores passwords
-> Continue reading Convert legacy password storage without aggravating your users
As regular readers of this blog will know, I’m a big fan of AzCopy, especially now that it has a sync option to keep local data synchronized with blob storage. In a recent release of the tool, Microsoft introduced a new switch to ensure that old files are only flushed from the destination when using
-> Continue reading Using AzCopy with Batch Files and Task Scheduler
An exciting new feature in SQL Server 2019 is Accelerated Database Recovery (ADR). Resulting from a combination of magic beans and smart software developers (I might be wrong about the beans), there is a good chance that you will find yourself using it. Not only can ADR dramatically improve recovery time with database restores, but
-> Continue reading Accelerated Database Recovery in SQL Server 2019: Choose your own filegroup for the version store
Recently I wrote: Don’t store passwords in a database. I stand by this statement. I expected a lot of flak because I didn’t explain myself. This post goes into a bit of an explanation of my position, as well as how to go about storing something in a database that can be used for authenticating
-> Continue reading How to really store a password in a database