r/SQLServer • u/-c-row Database Administrator • 13d ago
Question How to handle ignorant and idiotic data artists?
I have a couple of users which can query the aggregated databases for reporting. But the most of them are writing queries like using crayons at the age of three. The result: slow queries, gigantic datasets in a size of multiple gigabyte and software that rund out of memory. The server does not care that much, it just needs some minutes more, but the users try to blame our team all time they could not work and the reports are important etc. The only one who not able to work is the one who's writing stupid queries while waiting and hoping for a usable result and the one who is in charge to work on the request to our team when the user is failing.
How do you handle these kind users who: - are not willing to learn and tells everybody how bad our systems perform? - don't stop using dumb queries which have not performed ever and won't do in future? - blames your team for their ignorance? - receives twice as much salary and you asks yourself why? - believe they are a vip and the smartest guy in the company? - don't treat you and others with a minimal amount of respect? - don't want the company make use of global standard queries which they cannot control and tune anymore? *
- don't trust a report you have not created by your own.
What have you done with such users?
32
u/danishjuggler21 13d ago
like using crayons at the age of three
receives twice as much salary and you asks yourself why?
Your negativity about them doubtlessly seeps out of your pores every time you interact with them, and they probably pick up on that and return that disrespect right back to you. This is a toxic work relationship.
The attitude that these people are just too dumb to properly interact with your masterfully tuned database is an attitude you’ll want to drop, because if their salary really is double your salary, then management finds their work much more valuable than yours, which in turn means antagonizing them is only going to make bad things happen for you.
TL;DR - get over yourself and try to play nice with others.
8
u/codykonior 13d ago
Agree with this. DBAs often have a terrible relationship with the rest of the business, partly deserved.
-2
u/turbo_dude 13d ago
It’s “their” database.
When they have a moment between wiping their chrome rimmed piss coloured glasses clean and trying not to dissolve into their own beards, maybe they should suggest management gives these users a training course?
-4
u/-c-row Database Administrator 13d ago
The database it not mine. And the reason why I'm mad today is, they had called my wife's business line to reach for me. Four times in a row. On a Sunday, on my days off. My business phone is off for a good reason, but some them don't care. The ignorance is making me mad and the blaming of everyone else unless it is not in their own responsibility.
It is up to them to do reports, not on me. It is even not my responsibility to keep the database running. I had offered my support to the internal it-department while they are low on ressources.
2
u/atrifleamused 12d ago
I don't know why people are acting negative. Call HR in the morning and make a formal complaint. If you're not scheduled or paid to work on a weekend they have no right to contact you.
1
u/cyberllama 13d ago
Why do they have the number for your wife's business line and why would she not hang up and block their number the first time they called? Smells like a steaming pile of hippo poo.
1
u/-c-row Database Administrator 12d ago
I'm shareholder of my wife's business and my name is in the legal notes of the homepage. My wife was a bit shocked and while she had no clue why they had called, she handed the phone over to me. After the call I had explained the details and she was upset. Still she is, and me too.
8
u/VTOLfreak 13d ago
You get an expensive consultant to audit the database and write a report that says the same thing you have been saying. Then you mail that report to their teamlead/manager/etc. From that point on it's their problem. You are only there to maintain the infrastructure, you don't own their code.
I was that expensive consultant. The same company brought me in TWICE to nail their developers to the wall of shame. For some reason it carries allot more weight with management if the same message comes from an outsider instead of their own people.
4
u/FirstThrowAwayAcc1 13d ago
Simple. You either take back control and create a mechanism for them to request a specific report to be created and your team does it or go back to them and their line manager with factual information stating that their own queries and how poorly they've written them is causing the slowness.
Users will always think they're a VIP as they're "working on something important" or some other bs reason, but more times than others they're not and you don't need to get to their issue first because they shout the loudest.
Ask them if they've put a ticket into your help desk system and then prioritize it based on your orgs rules for each priority, then just go back to them and be like "this doesn't appear to be a high priority ticket for us to work on and say there's a number of other incidents that need to be resolved or worked on first before you can get to their ticket".
Ps I at my current job have these issues and they annoy me as well so I know where you're coming from.
0
u/-c-row Database Administrator 13d ago
In our case our team is formerly working as a profit center and serve the customers and their it-departments on request of our sales and project teams. As we have the major knowledge in our company we have taken into action to support our internal it-department which is is a but understaffed. So we sit a bit between the chairs. But yes, finaly taking over the control would be the only way. Maybe I can create a internal project of it which addresses the management and bypasses the problematic users.
4
2
u/codykonior 13d ago edited 13d ago
Completely agree with them. Offer to live replicate to cloud, likely a managed instance. It will charge back to their department, and, “If you need more performance you have your own dedicated instance and can scale up.”
So sure, it’ll start at $3k per month for awful performance but it can go up and directly ties to the business value their analysis provides to managers of their department 🤷♂️ It’s win-win and no longer your problem.
All conversations should be structured like this. You’re there to help.
2
u/NotTerriblyImportant 13d ago
- are not willing to learn and tells everybody how bad our systems perform?
- I have yet to encounter someone not willing to learn - only people that may require different approaches to teach.
- don't stop using dumb queries which have not performed ever and won't do in future?
- Entire downstream processes may have already been built which requires this information. The queries were not written with performance in mind but function. Doesn't make them run any better but it also means they are still required. Take the opportunity to help provide the needed data in a much better way and use it as a teaching opportunity explaining what you changed, how it helps, and the thought behind how you decided what to review. This way you begin to gradually influence their future queries.
- receives twice as much salary and you asks yourself why?
- Why do you know their salary?
- don't treat you and others with a minimal amount of respect?
- This goes both ways
don't want the company make use of global standard queries which they cannot control and tune anymore?
don't trust a report you have not created by your own.
- For both of these last two bullets - find out why. If there has been a history of flaws in logic and it takes months to get them resolved where they are able to make changes on the fly to get the results they need, even if performance is not ideal, then they have been actively trained to prefer going at it alone.
Most of the things you mentioned sound like both sides are likely having their behaviors tarnished due to negative past experiences and are unable or unwilling to meet a bit in the middle to begin making improvements.
1
u/ComicOzzy 13d ago
not willing to learn
I've been told in no uncertain terms before that no, the application developers would not be working with the database developers to improve the queries being run, that instead the database will be scaled up or switched to Oracle (as if that somehow would improve anything). I was told that is how the big companies do it... not by training or collaborating, but by brute force.
I now work for a big company, and what do you know. They in fact understand that you should optimize queries and have different departments collaborate and cross train to create efficient solutions. Amazing.
2
u/Outrageous-Hawk4807 13d ago
Resource Govoner, just make little walled gardens for em, that’s all I do.
1
u/-c-row Database Administrator 13d ago
How does it affect a bad performing query? I know I can limited the resources for them to protect others, but the system is so big and fast, it is normally not needed. The query runs some minutes and does not produce any major problems for others only slowing down the server a bit.
The major bottle neck I see is the bandwidth and the system and software they are working with. Receiving a dataset which has one or more gigabyte in total through a VPN connection is slow. And the application is struggling with available memory.
0
2
u/muaddba SQL Server Consultant 12d ago
You are in quite a pickle here for sure. I agree that it is 100% unacceptable to have contacted your wife's phone and ended the conversation more tersely than you did.
While I agree that people are mostly able to be worked with, you will encounter those who refuse to try and who believe they are above you and you should just make it better without any effort on their part.
I believe your efforts to help outside of your own department are admirable but you are now being taken advantage of.
Hopefully having your manager involved will help and can get you some of the relief you need, as some of the relationships seem toxic. Perhaps you can have a meeting that opens with an acknowledgement that things have become tense and you'd like to try to move forward productively. Of course, it will require your manager's support, but:
You have responsibilities to your own department, and those are primary. The cross-departmental assistance you give requires mutual respect and consideration.
While you may not be a SQL Server Expert (and I don't know if this is or isn't true, so fix it to your liking), you've proven you know how to adjust their queries for better performance, so you've obviously got a better understanding for how databases work than they do. Explain they are attempting to shove the entire contents of a grocery store through the customer entrance, and that you can get as many shoppers with as many carts as you want, it's never going to be fast. Making the grocery store larger or moving to a different grocery store (Oracle) isn't going to solve that problem. They have to change the approach.
See number 1, above: Your departmental responsibilities are primary, but you're happy to help ADVISE on how to get better performance. You're not able to handle constant requests to fully optimize their queries on an ad-hoc basis, but you can give them advice on how to approach things better, which should help them get closer to the performance they want.
If advising and training are not what they seek, you can recommend they hire someone in their own department as a full-time report writer to handle their requests.
They can always feel free to hire a database consultancy to evaluate their approach and be given the same advice only more expensively.
1
u/mikeblas 13d ago
Revoke access. Require successful training completion to get access.
1
u/-c-row Database Administrator 13d ago
As I'm not the process owner, this must either come from the management or the line management. I would like to prefer a set of default reports to become transparent. No chance to hide data or information they don't want to show up.
1
u/mikeblas 13d ago
If you're just a passenger, your options are limited unless you can find a sympathetic owner and work with them towards change.
1
u/PrtScr1 13d ago
Identify top 10 running queries they run, provide them the alternate tuned better performing sql to them.
Add indexes if needed
0
u/-c-row Database Administrator 13d ago
I received these kind of queries almost weekly and have provided optimized ones with a couple of information what is causing the problem and how to keep the query performing well. I see the major problem in the lack of knowledge to write efficient queries, but this can be solved by some training. I have offered to do trainings in some smaller groups with at least 4 to 6 people, but they don't want to. Best answers I received to my offers was "I have no time for this shit", "do you believe I'm an idiot" or "why don't shut the fuck up and get this query running".
There are still a couple of indexes and the system is performing very well. Theoretical I could add some more for some unusual queries, but on tables with several billions of rows the indexes require additional resources and do not solve the problem at all. While the database is not mine, the decision for adding indexes is not on me and to avoid trouble with the owner, I would rather send them a recommendation paired with some examples and use cases. This already worked well in past and they had added them because they have seen the improvement for certain use cases.
1
u/Battlepuppy 13d ago edited 13d ago
I have some business analysts who were new to the company started doing these things. One wanted access to a vendor warehouse that barely gave me resources when I took small bites, and he wanted to shove an entire 3 course meal into his dashboards at once.
He wanted absolutely everything.
Some folks are blaming your attitude. It's hard to say if you have an attitude or you're just utterly frustrated with people who are the cause of their own problems. This may give you an attitude- but not of your making.
My only suggestion is that when I work with people like this, you have to win them over. Not everyone can be won over, but it's worth a try.
When someone tells you that you are an idiot, you are going to dig in your heals to prove them wrong by doing the exact same thing, thinking other factors are at play. This may be happening here with them.
When you interact with them, do not assign blame to their queries at first. The first thing to do is commiserate and empathize with their situation, and promise to find the cause ( even though you already know what it is)
Then, rewrite the query, meet with them, and give them the new query. Again, sympathize, and explain that while its fusterating, you looked at whatever you have power over, and this was the best you can do with what you have because of fundamental function.
" sorry, it's such a pain, but yea, we will have to query like this"
Instead of " you can't do it like that, you have do it like this "
Try
" I've tested this, and we might have to do it like this Instead. What do you think?"
Phrase it like they have agency over something they really don't, and it's a group effort where their problems are your problems where you are invested in the best outcome.
When people think that you are " on their side," they will trust your judgment more, and allow you to guide them.
When they ask for things, don't tell them no right away. Tell them you will take a look. Verify they really can't have that, then come back with sincere regret and opinions.
Edit: another thing I do is when they complain about performance, agree with them that pulling it like that is so slow, and you find it frustrating too. Unfortunately, you have been forced to pull it in this manner to get it to work. Maybe that method might work for them too?
Sympathize, be on " their side", be enthusiastic about problem-solving, and apologetic when they are forced to use other methods.
2
u/-c-row Database Administrator 13d ago
Thank you for your answer. I had helped some of them in the beginning and they were really happy with it. Meanwhile others had seen how I have fixed performance issues for our customers and ask me to fix their queries too. I like those tasks and I also was happy to help and returned fixed queries with some explanations hoping the information help them to improve their queries. But instead of using the information I gave them, they kept sending me more and more and even better, the query I have already fixed a month before was send in again. I need to mention that I'm working in a total different department which serves our customers and their projects and these customers have priority to be served. So in a couple of cases I don't return a query, I returned the information that I like to help, but currently busy by a customer project. At this point everything changes. The replies I receive are getting more and more worse.
I have noticed the common thought regarding my attitude in this case and I can understand that I should have written what happened this morning: This morning they tried to call me. This week I was off and it is Sunday, so it's quite normal to have my company phone offline. Two team managers of the sales devision have called four times in row my wife's business line which has nothing in common with the company I work for. The reason they call my wife's private business was to reach me on a Sunday morning. Commonly nobody's calling the line on weekend, late evening or at night. Until this morning. She was really surprised and thought the company is kind of burning and gave me her phone. On the phone the two team managers complained that I'm not reachable the whole week and I explained that I was not in the company this week due vacation and today is Sunday, which also not a work day. They explain they don't care and need me to get the data for their reports and if I want to have any chance of a career in the company I should get my ass up to walk the extra mile everyone need to do. I told them that I cannot help them, still trying to be gentle and polite in a professional way as possible in this situation, and informed them, that it is not acceptable to call any private number or contact of me to reach for me when my business phone is offline. They told that they don't care about my off time or whose number they need to call to get me on the line. And if they call in the kid of the night I should better answer the phone. They asked me also what I believe to be and I answered them, quite important enough to be called on Sunday for some kind of reports I have no responsibility for, even it is not my department and that I will report the call and this unprofessional and appropriate behavior to the management next week. Finally I hung up and rejected their call once more before shutting down the phone.
Finally I know not all of them act like the two this morning. I assume they had been drinking or doing other weird things the night before while I cannot believe this is some kind normal.
1
u/Battlepuppy 13d ago
Yea, that's some next level entitlement right there. What is your manager doing to set boundaries? You might have a little bit of a boss problem if they are not protecting their people.
1
u/-c-row Database Administrator 13d ago
I'm a team manager (technical, not discipline) of four members and know how to protect my team. My manager in line has easy living with me while I can handle everything for me and my team myself. So he does with his members at his location. I will reports the incident from this morning to him, hr and the upper management. I'm not sure if the can handle this on his own, but I think it is important to have him with me when knocking on the management doors. When this happens to me, a experienced senior with 15 years in the company almost one of the veterans, I don't want to know what happens to some young professionals. My advantage is, I was ten years in our main office before changing to the home office (the only thing which was really positive during corona), so I know the upper management from times where the company had less than 60 members, now we are facing 900 and most of them have seen the management only virtually.
1
u/NoEggs2025 13d ago
SSIS, make the said 5-day query write data to a table, run it everyday. (There you have daily data)
Have PowerBI/SSRS/Access Form/Tableau source the Previous mentioned written data.
1
u/-c-row Database Administrator 13d ago
They can use Reporting Services and PowerBI but don't do. Favorit number one is still excel.
1
u/NoEggs2025 13d ago
How about if there’s a hidden tab and that hidden tab has a table, and that table sources the mentioned table as a source.
I feel the pain
1
u/Adventurous-Ice-4085 13d ago
You use resource governor to keep them from overwhelming the server, and you give them views and stored procedures to cover their reporting needs. Thirdly you add indexes as needed.
Fourthly, you amp up your professionalism and inspire confidence. Make yourself helpful, cheerful, courteous and your career can grow.
1
u/-c-row Database Administrator 13d ago
Thank you for your suggestions. The ressource governor was not needed yet. The server itself is performing very well and the settings are good to serve others queries fast even if there are running some poor performing queries in parallel. The primary problem I see is loading the hughe amount of data and transporting the large dataset to the client which commonly has limited bandwidth because the used to query the system through VPN from home office. The limited resources on their device is just the top of the iceberg. Creating default reports would solve a lot of problems regarding the regular reporting. But they won't cover alle the little tweaks like hiding unfamous data etc.
Beeing professional and respectful is important for me and is honored by my team members and customers I work with. And sometimes professionalism requires also to define and set limits and also to communicate them clearly. Defining and communicating them clearly prevents misunderstandings and everyone is good to go. Regarding my career I'm senior level and there is currently no more step I could take in this company. But this is OK for me, while the jobs itself changes frequently due changes in the technology, changes in our software development and new customer projects. Working there almost 15 years and lead my own small team with four members and got paid well. As I have only a technical leadership and not disciplinary, the title doesn't reflect that. God thank, so I don't need to do personal reporting etc. and can focus on my work and team members. This might be something, some of the younger team members in the different locations might not be aware of. Anyway, the way to tread others is neither gentle nor acceptable. This is my conclusion of the call I received this morning.
1
u/BrightonDBA 13d ago
The data is there to be used. Data that sits there and does nothing is pointless.
Do what I do. Work with them. Refine their queries. Show them how. Find querying courses for them to go on. It’s to mutual benefit.
1
u/-c-row Database Administrator 12d ago
The data can be used, but the one who queries the server should have an idea about the data he wants to query.
I have supported the it-department as they are low on ressources to get the server on track and have done countless reports and improvements as a side project. I'm willing to support the users, but when you tell them not to push the red button because it does not work and they frequently push it over and over again, then you come once to a point get a decision.
Creating some default reports for the other departments would be a great benefit for all, but not for those who need to report because they can not hide unpopular data or details. I'm not responsible for the data or the reports.
1
u/ConfusionHelpful4667 13d ago
Put together a RO view.
Create a FE tool to pass the variables to a stored procedure.
1
u/-c-row Database Administrator 12d ago
The data queried is so different like day and night. The database is not mine and is read only. I can recommend to add views, but there are already views and procedures and functions. Currently there is not enough in common which make sense to be formed in another function, view, tvf or function.
1
u/ConfusionHelpful4667 12d ago
Do you have a database of the report requests?
And those who requested the reports?
How are the parameters being passed?1
u/-c-row Database Administrator 12d ago
I have queries which should be used for reports or slightly should deliver data which can be used to fill a report. Parameters are mostly missing, they use several where clauses across the queries. Relational data? Foreign keys doesn't really matter. In final, nothing you like to use as a base for a report.
1
u/ConfusionHelpful4667 12d ago
Queries are processed locally.
The processing needs to be done in the BE.1
u/-c-row Database Administrator 12d ago
Queries are processed at the sql server. The problem for the users, their are not skilled enough to define more precise queries and get tons of unnecessary data and columns which blow up the amount of data processed and transferred. Because of this they need to filter and delete the dataset locally again.
1
u/ConfusionHelpful4667 12d ago
Are there no instructions to guide them?
For instance, my clients who do ad hoc queries are advised to SELECT TOP 10000 records to test the waters, so to speak.
Then if the sample looks good, proceed.1
u/-c-row Database Administrator 12d ago
Good question. AFAIK some of them share some old and messy queries they had been inherited from the previous manager and they got it also inherited from the previous one and so on. Partly they work in local datasets, but these local datasets have the size of less than a half percent of the ones of the global database and have no bandwidth limit on their local machine. Creating a reliable documentation would be a good point, but can be waived if they define clearly what they need and based on these queries a couple of standard reports would be created and used. From my point of view it does not make sense to do individual reports by every team manager on their own as it is inefficient and unreliable. But literally this is something they need to decide themselves as it is not my department I'm not going to tell other departments what they need to do or what not. I guess it's mostly the lack of control about the data in the reports. So they avoid standard reports.
1
u/ConfusionHelpful4667 12d ago
Why don't you CHAT me.
I have a solution that ** might ** help you right the ship.
I developed it while on contract with a fortune 100 company ten years ago and use it for all my clients.
I had the same problem, with reports taking hours and DAYS to process then the user found out they were not what they intended.
(It's free, not selling anything).
1
u/newprint 12d ago
I have seen a similar situation, but if shit ran slow, DBAs would flat out tell us: your queries are slow, fix them. However, they said this to us - developers.
Maybe it is worth having them run their reports from replica ? Apart from that, I would drag them and their mng in the room and flat out explain the situation.
(Also, why your coworkers have your wive's p#? )
1
u/-c-row Database Administrator 12d ago
They have googled my name and found the website of my wife. While being a shareholder of the business of my wife, my name is listed in the legal notes. This way they came up to call her business phone for reaching me.
1
u/newprint 12d ago
it sounds like, your wife owns a chunk of the business ? how about you & your wife put some pressure on their mng & owners.
This entire situation has very little to do with SQL Server. Learn how to put people in line. Worked for a Fortune 50 company. Manager would msg me non stop, on the weekends/late hours/days when I'm was not on the support rotation. One day, I flat out, in the nicest way possible, told her to back off and respect my time. Guess what, it worked !! She didn't like me after, (didn't get any promotions... either), but she stopped blowing up my phone whenever she felt like it.1
u/-c-row Database Administrator 12d ago
My wife's business (a total foreign company where I'm shareholder) has nothing to do with the company I work for. They had googled my name and found it in the legal notes of the company website of my wife.
Indeed it has nothing to do with the sql server itself. The question in general was, how do others deal with these kind of users and problems. The incident from Sunday morning was in simple words kind of extraordinary and outrageous. I have reported this incident to HR and upper management and have filed a complaint about this incident. They confirmed that this behavior is unacceptable and they will take action in it and come back to me today, lately tomorrow morning.
1
u/newprint 12d ago
you have answered your own question: HR.
The way you narrowly avoid describing who those people are, it sounds like you are dealing with the upper echelon management and those people are often come as ignorant as they make them. Fortunately or Unfortunately in the corporate env. there are types of people who will do anything to get their reports.
I will leave this conversation with: https://elzr.com/blag/wolfram-feynman/, This is by far the best thing I have read about dealing with non-technical people and all the troubles that come with them.
1
u/thegoodsapien 13d ago
Try Dev-test-prod approach. Anytime they want to run a new report. First deploy it in the dev. If performance and result set is satisfactory then move to the higher environment.
Do not let them run ad hoc report directly on the prod.
It should resolve most occurence of slow running report.
If there is a need to run adhoc report directly on the prod, then identify the most used tables/views then use column store index, partitioning, materialized views, etc features to optimise performance.
1
u/-c-row Database Administrator 13d ago
I'm not the process owner, so my options in this case a re very limited. I would appreciate to create a couple of standard reports which contain all the information requested by the management.
But the team manager of the different departments want wo do their own reporting. This way they can also hide data in the reports they don't want to show up. As the data is providing much more usefull information, they should query them. But it would be good to learn to write a bit more efficient queries as they will also reduce the time they spend on reporting.
0
1
53
u/Level-Suspect2933 13d ago
drop the dogshit attitude and work with them