Como sempre, Aaron Bertrand e Kin deram excelentes respostas. No entanto, ambas as respostas contêm um segmento comum. Se você analisar uma das respostas, verá que o motivo pelo qual o XYZ não está funcionando como funcionou ontem não é por causa de algo que você / eles / a pessoa X fez. A razão pela qual as coisas mudaram é porque o banco de dados decidiu fazer as coisas de maneira diferente devido a razões XYZ.
Um banco de dados é uma entidade viva e respiratória . Os bancos de dados tomarão decisões e mudarão de idéia devido a uma combinação de suposições, estatísticas e outras ferramentas heurísticas. Isso é drasticamente diferente da maioria da programação da camada de aplicativos (o aprendizado de máquina é uma exceção notável).
Vou usar algumas referências militares porque não consigo pensar em algo melhor agora. Uma metáfora mais geral seria apreciada (sem trocadilhos).
Na maioria das aplicações, o programador atua como um instrutor de perfuração. Eles dizem ao computador exatamente o que fazer, em que ordem e, às vezes, por quanto tempo. Programar um banco de dados é mais como atuar como Comandante. Você diz o que deseja fazer em um nível alto e oferece algumas orientações quando necessário. O banco de dados assume a tarefa de descobrir a melhor maneira de executar o plano com base na inteligência atual, como oficiais subalternos e não-comissionados.
Ao deixar essa distinção clara na mente de outros programadores, esperamos que eles comecem a ver que você não tem poderes ditatoriais, como eles têm sobre o ambiente. Você está guiando o banco de dados para a solução e, ocasionalmente, o banco de dados fica fora do caminho por boas ou más razões. Lembre-os de que, no final, não importa por que * o banco de dados saiu do rumo, mas o que podemos fazer para trazê-lo de volta.
* Reconheço que "o porquê" é muito valioso para prevenção futura, aprendizado etc., mas parece que o OP está enfrentando resistência de pessoas que não estão tentando aprender ou ajudar o problema.