Blog

Announcing a New Book: Query Store for SQL Server 2019

SQL Server
I'm pleased as punch to be able to share with you the fact that I helped Tracy Boggiano write a whole new book on Query Store. It will be available in October. You can pre-order it now. Tracy is a great author and a serious scholar of SQL Server. She's put together an excellent resource on Query Store. I added a couple of chapters just to help her out, but this is truly her book. Query Store is incredibly simple to use. It is however a bear to manage, so getting Tracy's book is a must if you're going to be implementing Query Store on your databases. By the way, you really should be implementing Query Store on your databases. Tracy covers all the topics from reporting with Query Store,…
Read More

All Day Seminar on DevOps in Oslo

DevOps
In just a couple of weeks, I'll be presenting an all day session on DevOps for databases. It takes place on Friday, August 30th. You can click here now to get signed up. I have a very hard time hiding just how excited I get about DevOps. It's not just that the technology is fun. It is. It's not just that it makes for a happier work environment. It does. It's not because by using DevOps you can deliver more quality functionality, faster, for your organization. You can. No, the reason I love DevOps, as a DBA, is because it creates added protections for my production environment and my production data. You can think of the entire DevOps process as another backup, another consistency check, one more enforced referential constraint.…
Read More

Running Containers In a Virtual Machine

Containers
The more you work with containers, the more you just want to work with containers. However, there are still reasons to have a virtual machine for some types of workloads. So, what if you want to work with containers inside a virtual machine. Is that possible? Yes, and shockingly easily. Enable Virtualization In Virtualization I knew from conversations I've had previously that running Docker inside a virtual machine was possible. I just didn't know the details. So, with a complete lack of knowledge, I did the most expedient thing possible: I installed Docker in a VM and started it up. Now, let's talk about my setup for a moment. My laptop is running HyperV as my hypervisor. You have to have some type of hypervisor for Docker to work. I'm…
Read More

Teaching DevOps in Indianapolis

Uncategorized
There is literally nothing I like better than working on automation. Before we had all the cool toys that we have now, I was working on automating database deployments. Now, with all the cool toys, I'm not automating deployments. I'm automating builds, tests, environment setup, containers, multiple database platforms and more. If you want to learn about DevOps, source control, tools, automation, artifacts, testing and more, I've got an opportunity for you. In just a couple of weeks, on Friday, June 16th, 2019, I'll be teaching an all day seminar on database DevOps. There are some seats left, but don't wait until it's too late. Click here now to get signed up. This is the only time this year that I'll be presenting this course in the United States. If…
Read More

Sample Azure DevOps Pipelines

DevOps
I've said it before and I will repeat myself on this because it's an important concept: DevOps is about culture and communication, not tools Now, that said, to implement the automation required in DevOps, you're going to have to get into some degree of tooling. There are a whole slew of possible tools to support you: Jenkins, Team City, Octopus and more. All these tools offer excellent solutions with variations on limits, methodologies, etc. You'll need to explore them to understand which ones are best for you and your processes. I've been doing a lot of work lately in another tool, Azure DevOps. Let me show you a little of what I've done. Azure DevOps Pipelines I don't mean for this to be a complete tutorial on setting up Azure…
Read More

Importance of Testing

DevOps
I've always said if you're running a script for the first time in a production environment, you're doing it wrong. Testing is fundamental to technology, yet it is one of the single most frequently skipped processes. Let's talk about this a moment. Developing in Production Through my work, I travel quite a bit. That means I get to meet a lot of different people with varying circumstances on their systems. I've even met someone who did all their development directly in production. Why? They ran a software that ran an assembly line. There wasn't a test assembly line. Oh yeah, they had checks and validations that all their inputs and outputs were valid prior to ever putting the code into production. However, they had no mechanisms, of any kind, for…
Read More

Implement DevOps One Step At a Time

DevOps
In preparation for my upcoming DevOps training days (see the bottom of this post for details) and for some articles I'm working on, I've been building all new automation processes for database deployments. In the past, I've been using a fairly simple (and far too simplistic) example to do most of my demos. I haven't built a full process in a little while. OH MY GOD!!! IT'S PAINFUL!!!!! Automation Ain't Easy The easy part of getting your DevOps done is the tooling. I say that all the time because it's true. The hard part is changing your organizations culture to support the level of communication necessary for a successful DevOps implementation. However, easy by comparison doesn't mean just simply easy. There's a lot of work involved and making mistakes early…
Read More

sp_execute_external_script and SQL Injection

SQL Server
In order to take advantage of R and Python (and Java in SQL Server 2019) directly from your SQL Server scripts, you'll be using the function sp_execute_external_script. When you see this code in use for the first time, it's going to remind you of sp_execute_sql. The very first thing I thought about was, "Oh no. Another SQL Injection vector." I have a little good news and a little bad news. It's Not SQL The first and most important thing to understand is, we're not talking about SQL. Let's start with looking at some code. This is straight from the examples in the Microsoft documentation linked above: DROP PROC IF EXISTS generate_iris_model; GO CREATE PROC generate_iris_model AS BEGIN EXEC sp_execute_external_script @language = N'R' , @script = N' library(e1071); irismodel <-naiveBayes(iris_data[,1:4], iris_data[,5]);…
Read More

Continuous Learning

Professional Development
In case you can't tell from some of my blog posts, I'm a bit of an advocate for DevOps. I'm extremely fortunate in my employer, Redgate Software, that they are also huge advocates for DevOps. We not only teach it and promote it, and, oh yeah, make AWESOME tools for it, we practice DevOps in what we do. However, this post is not about DevOps. Instead, I'm trying to leverage some of the concepts of DevOps, Continuous Integration, Continuous Deployment, to arrive at some ideas around learning that I want to share. Pi-Hole Yesterday I spent several hours getting the software Pi-Hole set up for my home network. Now, this software really doesn't take several hours to set up. The reason it took me that long is because I hadn't…
Read More

From Evangelist to Advocate

Redgate Software
It's time for a little bit of change to occur. I am no longer a Product Evangelist for Redgate Software. No, they haven't fired me and I haven't quit. We're changing the role, just a little. I am now a Product Advocate for Redgate Software. Why Advocate? It's simple enough. If you look up the definitions for evangelist and advocate, it's pretty clear that my job has always been more of the advocate role than the evangelist. After all, I'm not trying to convert you to use Redgate. Instead, I want to recommend and support the position that Redgate offers you a superior product. The core role that I fill, teaching, writing, recording videos, testing and training, using Redgate tools in support of your data and data estate will be…
Read More