DISCLAIMER: this week, we learn that a naked Erik Darling looks like a bear covered in squid ink. Thankfully, we don’t learn that via the webcams.
Aside from that, Brent, Richie, and Erik also discuss updating stats and rebuilding indexes, feature request for Paste the Plan, included columns’ effect on DML, CLR store procedures, SQL command and SQL command query mode, ALTER TABLE statements, using a GUID as a primary key instead of an IDENTITY column, keeping SQL server settings across multiple servers in sync, and more.
You can register to attend next week’s Office Hours, or subscribe to our podcast to listen on the go.
Enjoy the Podcast?
Don’t miss an episode, subscribe via iTunes, Stitcher or RSS.
Leave us a review in iTunes
Office Hours Webcast – 2017-04-12
What do I do if stats updates are causing blocking?
Brent Ozar: Let’s see what we got here, John says “after we upgraded from SQL Server 2014 to 2016 last month we’re seeing stats update get blocked while my indexes are being reorganized, then my inserts are being blocked too.” So he’s running all kinds of problems with updating stats and rebuilding indexes. I’m going to zoom out to a bigger question and say if you’re seeing blocking due to index maintenance and statistics, what would you do differently?
Erik Darling: Oh you’re asking me?
Richie Rump: He wasn’t asking me, that am for sure.
Erik Darling, I don’t know, he could have been asking the person who asked the question too – rephrase that long bible… I would want to know first if he’s running them at the same time or if there’s some query running which is like pooping its pants and saying ooh I’ve got to update stats now, and that’s what the organized stats update conflict it. That would be my first question because if you’re running them both at the same time, well then that’s not a good idea.
Brent Ozar: Yes, index of stats at the same time, that’s a bad idea to begin with. Don’t change a table across multiple sessions – bad idea.
Do rollbacks affect AGs differently?
Brent Ozar: Gordon says, “if I have a database in an AG and within a transaction I’m moving data from it to an archive database that’s not a member of the AG will it cause a problem on an AG secondary if I rollback the transaction?” You may want to sketch this out and ask it on Stack Exchange because there’s a few different things at play here, like I’m wondering why you’re even asking about the secondary if you’re talking about inserts that are over on the primary node…
Erik Darling: Well I’m guessing if it’s an archive there’s an insert and then a delete and then there might be a rollback of the delete?
Brent Ozar: I would do the insert in a separate transaction, make sure everything worked perfectly, and then the delete should be just one statement, just delete from the primary wherever it’s already in the archive, but more details on that one are probably needed and to see it’s best on dba.stackexchange.com.
What’s causing all these forwarded fetches?
Brent Ozar: James asks “I ran sp_BlitzFirst and I noticed high forwarded fetches per second. I’m seeing 36,000 forwarded records per second, how do I find out what table is causing this issue?”
Erik Darling: Run sp_BlitzIndex on your databases in mode four and you’ll see all the heaps you have, and sp_BlitzIndex will tell you if you have a heap with many forwarded records and you can link that up to whatever’s going on there. The other thing you could do is, I believe if you run BlitzFirst with the plan cache switch turned on, you might get the query plan of what’s running at the time. Also, BlitzWho which runs at the beginning and end of BlitzFirst in expert mode will give you what’s currently running and you might be able to see the query plan there. So in order, BlitzWho, BlitzFirst with the plan cache on and then BlitzIndex, that’s where I’d go.
Brent Ozar: Wow, that’s good.
Erik Darling: This is what happens when you spend a lot of time in GitHub, you learn what stuff does.
Brent Ozar: That’s true…
Erik Darling: [Crosstalk]
Richie Rump: And what stuff does it do?
Brent Ozar: Bugs, side effects…
Erik Darling: Work…
Brent Ozar: It’s been a couple of weeks fixing bugs, ladies and gentlemen, and introducing bugs; we introduced a few as well.
Erik Darling: It was nice to meet them.
Richie Rump: Never nice to meet them, no.
What do I do with Paste the Plan feature requests?
Brent Ozar: Well speaking of which, Wes has a feature request for you, Jorriss, for Paste the Plan, he says he want to be able to jump to the pain points, either high percentage of the query plan or high query bucks.
Erik Darling: Wow, what would that be worth to you?
Rickie Rump: That’s interesting.
Brent Ozar: Yes, could we have like swipe your credit card through and then it takes you to the right – I like that…
Erik Darling: How many Bitcoins?
Brent Ozar: We actually don’t have a place to submit feature requests but if you hit contact at the top of the page, you can email us there and we still won’t code it, but at least we’ll send you something nice in response, you know, we might actually code it – we could. Wes says it might actually be worth using paste the plan.
Richie Rump: [Crosstalk] See I was going to before, but now I’m going now, Wes, that’s it, it’s on. …
Should I make a 2×3 VM or a 3×2?
Brent Ozar: Now I don’t know why I’m asking Wes’ question because he’s got another one that’s a real question and I should skip it, Wes says, “I have two socket 14 core VM hosts, I’ve freed up a couple of SQL Server licenses that are already paid for, I want to throw those at our current VMs, should I provision…” Okay you’ve asked like five things that are unrelated so let’s get to the meat of it, “Should I provision the VM with two CPUs with three cores each, or three CPUs with two cores each?”
Erik Darling: Neither…
Brent Ozar: What in the hell? Yes, so what would you do Erik?
Erik Darling: I would either go with one core with a bunch of it or I would go with two cores with things split evenly…
Brent Ozar: Sockets…
Erik Darling: Right, sockets, sorry, sockets with cores split evenly. The odd number thing with CPUs and cores never seems to just work out all that well.
Brent Ozar: And I would just go two by two…
Erik Darling: That’s something that sp_Blitz looks for now too, if you have an odd number of cores, which oddly enough has fired off on 2016 when they do the auto soft-NUMA thing [crosstalk] because the DMV show things as being weird and like – there’s been one client with Tara and a couple with me now where I run it and it’s just like, you have three cores with how many… then auto soft-NUMA…
Brent Ozar: Wow, yes, neat-o. and it would be easy to set that up to repro it in a lab, I need to do that.
Brent Ozar: Wes says, “is six cores no-bueno?” No, you could do one socket and six cores and you’d be fine, that works totally.
Erik Darling: I would like that totally fine.
Are elastic databases different than regular databases?
Brent Ozar: Don says, “good morning, I have a question about elastic databases in Azure, are there any DBA tips that may be different than usual?” Really, I’ll just step back, Azure SQL DB, there’s things that you do differently in Azure SQL DB period, forget even elastic databases, but like you’re not managing backups, you’re not doing CHECKDB. If you want to get your data out things are a little bit more difficult. You can’t use exactly the same DMV scripts, so like not everything works in Azure SQL DB as other databases. Performance monitoring is a tough one for me because if you have one chatty SQL Server or SQL database and the rest are dead, it’s hard to manage that holistically across elastic pools but you’re just relying on Microsoft Azure’s portal there to do the management for you.
Can index includes slow down DML operations?
Brent Ozar: Guillermo asks – holy-moly he’s got three questions lined up. Guillermo, I’m going to ask the first one then I’m going to [Crosstalk] to someone else. Yes he’s got lots of … copy and pasting them in from all his coworkers probably, they’re ashamed to ask.
Erik Darling: Guys come here…
Brent Ozar: Check this out, people are actually answering, they don’t know what they’re talking about but they’re answering. Guillermo says, “can included columns on an index slow down DML operations? Is there any reason that I shouldn’t just, other than using more storage, should I just include all the fields?”
Erik Darling: He asked a similar question last week where I think he was trying to talk someone out of creating indexes that were like a few key columns then including all of the rest of the columns in the table, and I think I answered that then, so to, I guess, expound on that point, yes included columns can impact DML because you have to now keep the leaf level. With Rich, the leaf level is up top, with me the leaf level is down the bottom. You have to now keep the leaf level of that index updated along with everything else.
Richie Rump: A tree has leafs at the top.
Erik Darling: Yes, but an index doesn’t grow up, it’s on a disk…
Richie Rump: Don’t look at my slides because it does have the leafs at the bottom.
Brent Ozar: Oh no, no…
Erik Darling: I like to draw mine sideways.
Brent Ozar: Oh like [Crosstalk] org-chart…
Erik Darling: This is your B-Tree, everyone’s like what, why is it round? Like because your disk is round. [Crosstalk] SSD, then it’s a…
Brent Ozar: There’s another idea for a blog post we should write, Salvador Dali draws your database diagram.
Erik Darling: There you go. [Crosstalk] Homer Simpson crying on it…
Brent Ozar: Or Grampa Simpson walking it …
Richie Rump: He did actually say any other downsides besides using more storage, wouldn’t using more memory be one of those as well?
Erik Darling: Yes, more space on disk, more space on memory.
Richie Rump: That’s right, got to pull it out and read it somehow…
Brent Ozar: CHECKDB takes longer, index rebuilds, stats updates, you name it.
Why do CLR stored procedures work on only one AG replica?
Brent Ozar: Deborah asks a question that I know all of us are going to fight over for the opportunity to answer. She says, we have stored procedures that are CLR…” Should I continue reading, gentlemen? “they work on the primary replica but not the secondary, we get a .NET framework error. Supposedly the two nodes are identical, do you have any hints about the things we should check?
Erik Darling, Yeah… That was mirroring, I don’t know if it’s true for AGs as well, where the first time you failover you have to enable TRUSTWORTHY.
Brent Ozar: That’s true, I don’t think that’s – I love where you’re going, so explain that…
Erik Darling: Well so with mirroring there was a bug where if you had CLR, the TRUSTWORTHY, that should be enabled on a database, the first time you fail it over, that wouldn’t carry over with it, you would have to go enable it on the secondary; so you would have to enable CLR over there. I guess the other question would be if they’re both the same version on both nodes.
Brent Ozar: I would got for the .NET version too, there’s no reason that the.NET version is the same across all those and you may be targeting a specific .NET version that is not on the secondary. I’m not good enough to know what the command is to check, I know there’s a SQL Server command you can use to check the .NET and Framework Installed version, and I don’t know what that is off the top of my head.
Erik Darling: There might be a DLL loader in the error log too that would tell you – that’s wild speculation though.
I got a big raise after going to Brent’s class…
Brent Ozar: Graham says, and of course I’m going to read this one real slow because it’s excellent, “I went to Brent’s performance tuning class, which was awesome by the way…” I should probably repeat that, he says, just so everyone hears, “I went to Brent’s performance tuning class, which was awesome by the way, and I got a job offer shortly after completing the class. Then I got a great counter offer to stay at my current jobs, so take Brent’s classes and you should make more money – results may vary.” Or, I’ll raise you one better than that, Richie took one of our classes before he came to work here and we ended up hiring him, so…
Richie Rump: It was the very first one too, It was your first in-person training classes.
Brent Ozar: Hotlanta… So have you ever put any of that stuff that you learned to use yet or no?
Richie Rump: Yes of course.
Brent Ozar: I was joking…
Richie Rump: Of course… Not here at Brent Ozar, no, but like elsewhere yes, absolutely.
Brent Ozar: The other jobs.
Do you use SQLCMD query mode?
Brent Ozar: Let’s have another one of Guillermo’s excellent question. Guillermo asks, “how much do you guys use SQLCMD as well as the SQLCMD query mode and what do you use it for?
Erik Darling: Wow, well I always used that when I was messing around with AGs in the lab because it made it real easy to hop around and do stuff in there, that was always my primary use for it.
Brent Ozar: That’s the only time I’ve ever used it, it’s so useful for that, to jump, run queries back and forth between different replicas – excellent for that. Kendra used to use it for demos sometimes, she would use it just to have a query coming from somewhere else, you know, just outside of management studio.
What are database snapshots good for?
Brent Ozar: Because Guillermo asks so many good questions there’s others in the queue but I’ll ask Guillermo’s next one because it’s so doggone good, “how often have you guys used native database snapshots and for what purposes?”
Erik Darling: Rollbacks.
Brent Ozar: Rollbacks for transactions?
Erik Darling: No – so at a previous job, NDA-NDA-NDA, where there were like weekly software releases, we would take a database snapshot before a code release so that if we had to run anything back in a hurry we could roll it back in a hurry or restore the database snapshot back over stuff.
Brent Ozar: What about you Richie, have you ever used database snapshots for anything?
Richie Rump: Nope.
Brent Ozar: Alright, there you go. I’ve also used them to get point-in-time reading for, you know, someone says hey I need a consistent point-in-time as of this morning, and snapshots have worked for that. Okay so there’s an extra check I guess, we’ve all used it for CHECKDB because that’s how snapshots work behind the scenes, but that’s kind of a cheating…
Erik Darling: Technicality.
Brent Ozar: Yes.
Erik Darling: The snapshot of your mom…
Brent Ozar: It broke the mirror.
Will query memory grants cause page life expectancy to drop?
Brent Ozar: Brian says, “what can cause page life expectancy to plummet on a server with plenty of memory and seemingly static activity, could it be a bad query that gets a large memory grant to clear the buffer pool?” [Crosstalk] If you knew about that happening or suspected that of happening, where would you go look?
Erik Darling: Well I guess I’d have to go look in BlitzCache and sort by memory grant if I was on a newer version of SQL Server. If not I would just turn on Resource Governor and cap everyone’s memory to zero… Just kidding.
Brent Ozar: I like it, one kilobyte…
Erik Darling: You get nothing.
Brent Ozar: that sp_BlitzCache sort order memory grant requires 2012, 2014 or 2016, but you have to be on a current service pack or cumulative update. If you search BrentOzar.com for sp_BlitzCache and memory grant you’ll see the version where Erik introduced this and it also has the versions of the exact service packs and cumulative updates that you need to be on.
Erik Darling: Fun fact, you also have to restart after installing one of those, otherwise your version number will update but you won’t have that information in the DMV. I found that out the really weird way on the phone with someone one day.
Brent Ozar: Oh wow…
Erik Darling: But then, like server-up time was like way too long and I was looking at it, I was like did you reboot after you installed that patch?
Brent Ozar: Wow [Crosstalk] how you would even detect that…
Erik Darling: Well just check the DMV for the columns I guess.
Brent Ozar: Yeah, that blows. [Crosstalk]
Erik Darling: BiltzCache, I don’t think so…
Brent Ozar: At this point those things are so big that anything you touch is terrifying, you know, we go in there and we want to make changes and – Erik and I were on a performance tuning terror last week, two weeks ago, and we both just made rampant changes through sp_BlitzIndex, we did all kinds of changes all throughout and dealing with the merge afterwards was horrible. My first thing was alright, I just made this 3x to 20x faster, but I think it’s going to be so full of bugs it’s not even funny, and it was, it was.
Richie Rump: Oh no, it was funny to me, it was very funny.
Erik Darling: Finally, someone else’s bugs.
Richie Rump: Exactly.
Brent Ozar: Yes, Doug was like how did you do that, how did you make it so much faster? And I’m like well I put all kinds of bugs in there, that works every time.
Erik Darling: You skipped a bunch of stuff.
Does ALTER TABLE work through a table in portions?
Brent Ozar: J.H asks, “does ALTER TABLE statements lock the entire table all at once or in portions?” oh I love how you’re going with that, as if you like added a column would it lock portions of the table as it rolled through the table?
Erik Darling: Probably not, I would guess not because after a certain number of locks that’s just going to try and go for – that’s going to go for an object lock and I’m pretty sure ALTER TABLE is one of those like, no, no, no I’ll wait, I’m going to wait and hang on and do that. Unless, unless you add it as a nullable column with no default value. Then, you know, if you add it as a nullable column you could do some stuff afterward to update…
Richie Rump: Yes, and that’s what you should do anyway.
Brent Ozar: Lacing fast – there’s like a name for that in development and I never remember what it is, like only make constructive changes or additive changes, you know, gradually, never drop things out of your tables over time. I can’t remember what the name is but one of these days I’ll remember it.
Why should I use a GUID as a primary key?
Brent Ozar: Let’s see, Mark says, “can you give me one good reason to use a GUID as a primary key instead of an identity column?”
Erik Darling: You’ll never run out of them.
Brent Ozar: Ooh okay, I like that. Also really good for when you’re doing writes in two locations and you need to make sure that they never have any conflicts. With two locations you could think about doing an identity field that one starts at one and goes up and the other starts at negative one and goes down, and that’s okay but then it starts to fall apart as you start to add more replicas in or like more multi-user bidirectional type stuff. You need to generate unique IDs on the client’s side for batches and then push stuff up into the database. If you want to piss off [Crosstalk]
Richie Rump: That’s how I’ve used it actually, as the client – each client generates their own IDs and then it comes into the database.
Erik Darling: I guess my only piece of advice there was if you’re going to use it as the primary key, I would use it as a non-clustered primary key rather than sick my clustered index around it and have to deal with all the GUID inserts all over the place.
What is the dedicated admin connection for?
Brent Ozar: Guillermo says – here’s another awesome question… Well Guillermo, here’s the deal, I see a theme with your questions; you’re going through books online and picking features and then saying have you ever used this feature. I’m not telling you to stop, I’m just saying I see what you’re doing there. Guillermo says, “has a dedicated amen connection…” And I think he means not amen as in the religious thing or Idi Amin, but a “dedicated admin connection ever come in handy for you and how?” I feel so sorry for our transcriptionist who has to keep up with this stuff.
Erik Darling: it’s great for THREADPOOL demos.
Brent Ozar: What is THREADPOOL?
Erik Darling: THREADPOOL is a nasty weight that you run into when you run out of CPU worker threads to assign the queries and they all just kind of stop and wait, you know, hanging on a minute here – 15 minute union worker thread break, everyone go and get your lunch bucket.
Brent Ozar: Yes it’s good for that. That’s the only time I’ve ever used it, I can’t think of any other time where I’ve had to use it.
Erik Darling: I know the book that Wes’ VMware guy read.
Should I build a 1×6 VM or a 6×1 VM?
Brent Ozar: [Crosstalk] there’s a follow up here to Wes’ CPU configuration thing, and there’s a couple of problems with this follow up here. It says, “I just told my VMware admin to set it to one socket with six cores, he linked something and said that screws with vNUMA and that VMware says to go wide and flat with six sockets with one core each. Do you have a rebuttal?” that’s totally okay, although I would say if you’re on standard edition, standard edition’s going to max out at four sockets, so that trick is only going to work if you run enterprise edition. I would also say, whatever he just linked you to, make sure you read it carefully, read the whole thing and use a highlighter to start calling out things that you know aren’t right, for example, if the author says something about page life expectancy being measured in seconds, maybe that’s something you want to just think about before you take the gospel truth out of that one.
Erik Darling: [inaudible] for parallelism…
Brent Ozar: That’s not what I said…
Erik Darling: Page life expectancy, which is in seconds, but it has nothing to do with CPU cores, probably. That would make parallelism so weird…
Brent Ozar: Yes right.
Brent Ozay: Adam says, “interesting, our VTAM for VMware said the opposite.” Yes it’s funny, you can get a lot of interesting conflicting advice out there from folks.
Erik Darling: I would try it both ways and see how it goes better, because if it’s SharePoint who cares?
Brent Ozar: Yes that’s true, just give it one core and be done.
Erik Darling: Yes right, that’s all it needs anyway.
Brent Ozar: I would also say, you know, we’re joking a lot about it and neither of those is going to screw you, as long as you don’t mess up the licensing thing with standard edition. Whether you go six sockets one core or one socket with six cores, if that’s your biggest problem you’re in pretty doggone good shape.
Half our NUMA nodes are offline. How should we set MAXDOP?
Brent Ozar: Daisy asks, “in production…” Oh I’m going to have to take a deep breath. Daisy you’re lucky, you have the only question left, otherwise I wouldn’t go through all of these, so any of you who have questions in, feel free to get yours in…
Erik Darling: Otherwise I’m going to start taking clothes off.
Brent Ozar: Oh god [crosstalk]. Daisy says, “in production there are two SQL NUMA nodes online out of four…” To go through a long story, she has some gotchas with NUMA nodes being online and offline. There’s a bigger problem here; if you have NUMA nodes that are offline I also worry about you having memory offline. Go read – run sp_Blitz on your SQL Server… Go read sp_Blitz – don’t, whatever you do, don’t read sp_Blitz. Run sp_Blitz on your SQL Server and read the output, one of them is going to warn you about CPU and memory being offline. The only reason I’m having you do that is go copy the URL out of there and go to that blog post, it talks about what happens when you have CPU offline or memory offline. MAXDOP is the least of your problems, you were asking a question about MAXDOP, you have much bigger problems than that.
Brent Ozar: Alright, well good news, Erik doesn’t have to take any clothes off because more questions are coming in.
Erik Darling: I look like a bear got attacked by a squid, not pretty.
Brent Ozar: It took me a minute… Okay so there’s the next visual we’ll have our cartoonist go draw, Erik’s going to be wrestling with a squid [crosstalk]…
Should I store files in the database?
Brent Ozar: Don says, “do you guys recommend storing binaries in the database, like Excel files, PDFs, or should I store my files somewhere else?
Erik Darling: No es bueno. Store them somewhere else…
Brent Ozar: Por que?
Erik Darling: There are no es BLOBs in el database-o. Jeremiah has a great post from the blog grave about keeping BLOBs out of the database and how it’s much better to just store a pointer to where they live in the database and then let something else worry about storing them and opening them…
Richie Rump: Yes, I’ve made that mistake in my career where we put BLOBS on SQL Server and it’s like, okay, so how am I supposed to read this outside, how is someone supposed to edit it and update it? Well now we’ve got to, you know, put it as a BLOB again and pull it out and it’s just – it’s hassle, it’s a mess.
Erik Darling: And have you ever seen a stored procedure that was made to edit a PDF?
Brent Ozar: Oh god…
Erik Darling: It’s worse than those or ones you’re like I need to generate a barcode in T-SQL, how do I do that? You don’t, come on.
Brent Ozar: In fairness, I do also have to point out that Greg Low recently published a blog post on how you write line numbers in T-SQL…
Erik Darling: Oh good, now I’m going to see that on all my client’s servers.
Richie Rump: Oh god, please no. [Crosstalk]
Do I need a separate network for my AG replication?
Brent Ozar: Matt asks, he says he links to an article on SQL Server Central and he says, “do I need to configure a dedicated network for my availability group, do I need a separate network for traffic throughput?” generally speaking no, if you think about most modern servers have 10GB Ethernet and it’s really hard for an availability group to saturate 10GB Ethernet, even when it’s sharing traffic with regular network type stuff. I have not seen something that I really needed to do that on, on any SQL Server. It’s like Bigfoot, I’ve heard of people seeing it, I’ve just never actually seen it myself.
Erik Darling: Well that’s when I turned on jumbo frames, then everything worked.
Brent Ozar: Yeah oh god, increase packet size to 88 miles an hour…
Erik Darling: If we use large pages then everything was fine.
How should I keep settings in sync across multiple servers?
Brent Ozar: Guillermo asks, “what are the best ways to keep SQL Server settings across multiple SQL Servers in sync. Like if you’re using availability groups, database mirroring, how do you keep like sp_configure stuff in sync? Like if you’re using availability groups, database mirroring, how do you keep like sp_Configue stuff in sync?
Erik Darling: Agent jobs that look for changes to Agent jobs.
Brent Ozar: Turtles all the way down.
Erik Darling: It’s awful…
Richie Rump: Like Inception.
Erik Darling: You know like with all the stuff that Microsoft adds to these things you would thing that just a simple mechanism to keep stuff straight and lined up would be there.
Brent Ozar: And I have this philosophy that you shouldn’t because a lot of times there are differences in the servers, like that I’m going to have different settings on a primary that’s used for readable, you know, for readable reports than I would – think max memory for example, not all your severs are going to have the same max memory, so I would go hesitant on that… [Crosstalk]
Erik Darling: Some stuff that you want all on there, available in case something starts happening, like users.
Brent Ozar: Max worker threads.
Erik Darling: That as well. Turn that up to 50,000.
Brent Ozar: 50,000. I got a talking too recently, a client too by the way, whose like – and you know who it was, they pulled me aside and they were like we set max worker threads, Erik said it’s wrong but you should tell him that it’s fine for us. Okay, alright cool.
Erik Darling: Well I agree with them.
Brent Ozar: Yes, you like them, they’re nice people.
Erik Darling: they are.
Brent Ozar: You like all our clients.
Erik Darling: I do, they’re so nice to me.
Brent Ozar: They’re adorable, even though you look like a bear covered in squid ink.
Erik Darling: Even though I’m nude for all my calls that are weird.
Brent Ozar: That’s why we got him a high definition webcam, so everybody can pick out the exact tattoos there, because sometimes it’s confusing which parts is the squid and which parts is the bear, but…
Erik Darling: Squid bear.
What’s included in the new Enterprise Subscription Plan?
Brent Ozar: Kevin Bradley, I try not to ask last names but this is good, it’s a good question so he shouldn’t be ashamed, because sometimes I don’t want people’s employers being read out or whatever, but Kevin says, “training question, would you describe what’s included in the subscriptions, especially the enterprise bundle?” [Crosstalk] hand puppets…
Erik Darling: Happy.
Brent Ozar: If you go to the site and click training at the top of the page the easiest way to see it is on that training page there are sections for what’s in the DBA class, what’s in the performance class? Just go to the top and click training, you can actually go click on each class and see all of the modules, how long they are before you subscribe. You can’t watch previews of every module or anything like that, but it gets you detailed step-by-step descriptions of what’s inside of every other module.
Are you archiving these Office Hours videos?
Brent Ozar: then the last one we’ll take, J.H says, “Are you archiving these office hours’ videos so that we can watch them again afterwards? I don’t know if you’ve answered my question as I keep losing connection here and I have to reconnect back in.” Good news, if you go to the top of our site and click blog we actually – not only can you watch them, but wait, there’s more, you can read the transcripts, so you don’t have to look at the bear covered in squid ink, you can just read the transcription afterwards and see exactly what we said about your question, and we did answer your question J.H because you’ve been in a few times and I think you always ask good questions.
Erik Darling: you really thoughtfully answered that question too, now I’m sad and depressed, I’m going to have to go to the gym and work on stuff.
Brent Ozar: On the bear and the squid, is today a bear day or a squid day?
Erik Darling: It’s all bear days, all bear days. Squid days sound like cardio, I don’t want to do cardio, I’m lazy.
Brent Ozar: You and me both. Alright well thanks everybody for hanging out with us at this week’s Office Hours and we will see you guys next week, adios.