There Is No Delete

I don’t have any Apple devices. I used to own a bunch of them, but over time I’ve switched from an iPhone to a Nexus phone; I have an Android tablet; my laptop and desktop both run Linux. Somewhere along the way, I decided that I should either delete my old Apple ID or remove my credit card from that account. [caption id=“attachment_1156” align=“alignright” width=“300”] The people who have successfully deleted an Apple account are all in this section.

How do I update my SQL Server Docker container?

Hooray, we can run SQL Server on Linux inside of a Docker container. That certainly makes it easy to try out SQL Server on Linux and for developers to run SQL Server, regardless of their chosen operating system. But what if we want to update that SQL Server container? There’s an easy way to update SQL Server inside a container. [caption id=“attachment_1074” align=“alignright” width=“300”] An image of containers. Get it? Image… Container… Just keep reading.

A Multi-Column Index - How Should I Design This?

Design problems are fun. It’s a chance to build something that lasts and do it right. Plus, those bad decisions are going to hang around forever. This is our chance to make the right decision. [caption id=“attachment_1059” align=“alignright” width=“300”] Who needs design?[/caption] Our Feature We’re building a system to store events that have occurred in an our application. This is going to be the back end for an event sourcing system.

Friends Don't Let Friends Use DATETIME

I know you love your Pontiac Aztek, but it’s time to move on from SQL Server 2005’s limited set of data types. Unless, of course, you’re stuck on SQL Server 2005. If that’s the case, then you should get working on your migration. For the rest of you, let’s talk about why you should stop creating new DATETIME columns. Microsoft Says So What a great reason to do it! The people who made your database don’t even want you using DATETIME for new applications.

I'm speaking at SQLintersection 2016

I’ll be speaking at SQLintersection this spring in Orlando! It’s gonna be fun on a bun. [caption id=“attachment_982” align=“alignright” width=“300”] Totally not giving away free taquitos[/caption] Two Regular Sessions I’m presenting two regular sessions - Database Lies We Tell Ourselves and Database Design for Software Architects. In Database Lies We Tell Ourselves, I’m going to shed light on common misconceptions that permeate our industry and provide high level solutions to these problems.

Memory Optimized Tables and Columnstore

Let’s follow up on When ALTER TABLE doesn’t work. To summarize: while messing around with SQL Server 2016 CTP 3.2 I was unable to issue ALTER TABLE statements on a memory optimized table that has a clustered columnstore index. What Will Work in SQL Server 2016 It turns out that SQL Server 2016 CTP 3.2 doesn’t have full support for this combination of features. As far as what will be working when SQL Server 2016 is released… I don’t have the answer to that question.

Everything Fails

Everything is horrible! Wait, that’s not the message I want to send at all. [caption id=“attachment_972” align=“alignright” width=“300”] I wonder if these guys have an HA/DR plan…[/caption] Planning for Failure Should Be Comprehensive Think about the last time you thought about high availability and disaster recovery… You’re lying, nobody ever thinks about HA and DR. Not until something is already on fire, at least. Now, pretending you did think about HA and DR at some point in the distant past, how far down the rabbit hole did you go?

When ALTER TABLE doesn't work

We’re all used to being able to change things whenever we want. Heck, I put on a different pair of socks just to write this blog post! They’re my bloggin' socks. But, back to the topic at hand, we’re used to being able to use ALTER TABLE commands to change tables in SQL Server. And, in fact, most of the time that just works. In-Memory OLTP and ALTER TABLE Way back in SQL Server 2014, when we first got In-Memory OLTP, it wasn’t possible to change a table once you’d created it.

Locking and Blocking and Immutable Data

Locking and blocking feel like a normal part of working with databases, right? Locking and blocking inevitably lead to deadlocks in our databases, too. A significant amount of both human and computer time is spent resolving these problems in the database. After all, if it weren’t for locking and blocking, database professionals would spend their time solving more important problems (like where to go to lunch). What if we didn’t have to deal with locking and blocking?

Using Tables for Fast Math

[caption id=“attachment_950” align=“alignright” width=“300”] Convert all the things![/caption] Relational databases are great for storing structured data. But the data we store doesn’t have to be user entered data. What if we use tables in the database to precompute the output of some kind of calculation? Our Conversion Table In this case, we’re doing a simple unit of measure conversion table. Pretty much everybody apart from America uses the metric system, so we’ll create a simple table that lets us look up conversions.