Data Breaches: All Your Fault

DevOps, Redgate Software
One part of my job is to understand the compliance landscape. This means that I read a lot about the GDPR and related similar laws. I also have to read a lot about data breaches in order to understand how and where laws like the GDPR apply to them, and how they happened so that I can better prepare people through good DevOps practices to prevent them. The more I read about data breaches, the more I realize: It's You. It's your fault. Don't believe me? Let's walk through a few recent data breaches together. Passwords? We Don't Need Stinking Passwords. The Collection #1 data that represents 21 million unique email addresses and passwords for a combination of up to more than 700 million, was found by Troy Hunt... on…
Read More

Database Fundamentals #21: Using the JOIN Operator, OUTER JOIN

Database Fundamentals, SQL Server
The OUTER JOIN returns one complete set of data and then the matching values from the other set. The syntax is basically the same as INNER JOIN but you have to include whether or not you’re dealing with a RIGHT or a LEFT JOIN. The OUTER word, just like the INNER key word, is not required. OUTER JOIN Imagine a situation where you have a list of people. Some of those people have financial transactions, but some do not. If you want a query that lists all people in the system, including those with financial transactions, the query might look like this: [crayon-5cbf74c2a8d13200651771/] Except for the addition of the LEFT key word, this query could just as easily be using the INNER JOIN operation until you see the results shown…
Read More

Learning Jupyter Notebooks

Azure, Professional Development, Tools
I'm starting the process of learning how to use Jupyter Notebooks. Notebooks are documents that contain live code, commentary, results, pictures and more. Jupyter Notebooks are used for presentations, documentation, run books, troubleshooting guides and lots more. Their support within Azure Data Studio opens up lots of opportunities. Azure Data Studio If you're interested in learning about notebooks yourself, or, as I publish the notebooks that I put together and you want to consume them, you need to have a mechanism. There are any number of third party or open source solutions to read notebooks. However, since I'm focused primarily on the Microsoft data platform, I'm using Azure Data Studio to do this work. I've written in the past about using Azure Data Studio (ADS). I also have a bunch…
Read More

Jobs That Beat The Caring Out Of You

Professional Development
I was inspired by Jen McCown's story here. Read that first. It's WAY better than mine. This is not an April Fools post. Fools are involved, but none were harmed. Oprah-Level SA YOU GET SA! AND YOU GET SA! I'm working for a DOTCOM startup as a developer. I have SA privs. I have SA privs because EVERYONE has SA privs. We're developing a system (this was a long time ago) in SQL Server 6.5. The database originally was designed in Paradox (where I started my career). To be as kind as possible, the database design was a living nightmare, like the worst possible black, ichorous, Lovecraftian, tentacled monstrosity to walk the earth database. It was bad. On top of that, the code we were writing was always barely functional.…
Read More

Can You Force A Parallel Plan in Query Store?

SQL Server 2016, SQL Server 2017
I love the questions I get when presenting: Can You Force a Parallel Plan in Query Store. I haven't a clue. The trick I think is going to be in setting up the test. Let's try it out. Reliably Getting a Parallel Plan Because this is for testing, rather than try to build some crazy query that may or may not go parallel, I've decided to cheat. I'll take advantage of a little functionality that ensures I see a parallel plan when I want to. Here's my code: DBCC TRACEON(8649); GO SELECT soh.OrderDate, soh.ShipDate, sod.OrderQty FROM Sales.SalesOrderHeader AS soh JOIN Sales.SalesOrderDetail AS sod ON sod.SalesOrderID = soh.SalesOrderID WHERE soh.SalesOrderID = 43705; GO DBCC TRACEOFF(8649); Traceflag 8649 will force all plans to go parallel by effectively making the Cost Threshold for…
Read More

Monitoring Your Databases and Servers and…

Redgate Software
You absolutely need to know about the servers you have under management in your estate. You need to know about the databases. Uptime, performance, behaviors, errors, corruption and a much longer list of items that will frankly fill this blog post, are very important to you. I've been doing work in and around data and databases for over 30 years now (OMG, I'm so old). I feel like I know how monitoring works, what's important, what's not, what's vital and what's trivial. However, I know that you have different needs, different requirements, different problems. Those problems need different solutions. Tell Us The Problems You're Solving, and How Or not. I'm assuming that you're doing the work you need to do to solve these issues, but maybe you just don't know…
Read More

Compliance Ain’t Easy

Redgate Software
I'm sure by now you've heard of the GDPR and some of the large scale data breaches that have occurred within it. If you haven't heard of the GDPR, you've been under a rock, or, you're like me, a United States citizen (it's amazing how little we know about this oncoming train). If you're seeing the four letters GDPR strung together for the first time, then you better jump on learning about it right now. Why? Let's string together more letters, CPPA. That stands for the California Privacy and Protection Act. That's a law modeled off the GDPR that goes into effect in 2020 (yeah, nine months). Compliance Isn't Always Spelled GDPR Maybe you're not in an EU country and you don't have any person's data from there. Maybe you…
Read More

Database Development Gone Wrong

Redgate Software
I recently shared a story about how I was personally responsible for a development project going off the rails (and oh boy, did it go off the rails). It's a very painful story to share since I was the principal bad guy. However, I learned a lot of lessons from it. Now, it's your turn. Redgate Software (yes, my employer), is running a contest between now and March 20, 2019. We want to hear your story about database development gone wrong. It can be a horror story like mine, or just a simple story of the pain involved when developing databases ('cause there's always a little pain). Inspiration! What, the chance to $150 or more isn't inspiring? OK, how about this, here's Kendra Little's story about her database development... not…
Read More

Missing Indexes in the Query Store

SQL Server 2016, SQL Server 2017, T-SQL, Tools
I've shown before how to use the DMVs that read the plan cache as a way to connect the missing indexes suggestions with specific queries, but the other place to find missing index suggestions is the Query Store. Pulling from the Query Store The plans stored in the Query Store are exactly the same as the plans stored within the plan cache. This means that the XML is available and you can try to retrieve information from it directly, just as we did with the missing index queries against the DMVs. Here's the query modified for the Query Store: [crayon-5cbf74c2a94b8067797164/] A couple of notes on the query. I cast the query_plan as xml so that I can use the XQuery to pull out the information. It is possible that the…
Read More

system_health Extended Events in Azure SQL Database

Azure, SQL Server
The system_health Extended Events session is incredibly useful. Further, it's running, by default, in every server you have under management that is 2008 or greater. Things are not the same in Azure though. system_health in Azure SQL Database If you look at the documentation for system_health, it shows that it's applicable to Azure SQL Database. However, if you try to run the example query, it won't work. This is because the implementation of Extended Events inside Azure SQL Database is a little different. Instead, you need to use the Azure SQL Database equivalent system views to create the same query like this: [crayon-5cbf74c2aa17a732723411/] Now, running this in Azure, prepare to be disappointed. While the system_health documentation says it applies to Azure SQL Database, there is not a system_health session there.…
Read More