Sempre que em nosso sistema há um bloqueio (tudo parado). Vejo que a consulta abaixo é a culpada,
(@P1 numeric(10))SELECT "Col1128","Tbl1029"."A_NAME" "Col1124" FROM "DbName"."Schema"."MyTable1"
"Tbl1029" RIGHT OUTER JOIN (SELECT "Tbl1027"."MyColumn1" "Col1126","Tbl1027"."MyColumn2"
"Col1127","Tbl1027"."MyColumn4" "Col1128","Tbl1027"."MyColumn5" "Col1130","Tbl1027"."MyColumn6"
"Col1129","Tbl1027"."MyColumn5" "Col1131" FROM "DbName"."Schame"."MyTable2" "Tbl1027" WHERE
"Tbl1027"."MyColumn1"=@P1) Qry1132 ON CONVERT(numeric(2,0),"Tbl1029"."MyColumn3",0)="Col1126"
Temos 2 servidores de banco de dados separados com bancos de dados completamente diferentes. O acima está sendo executado no servidor de banco de dados 2, mas a solicitação está chegando ao servidor de banco de dados 1 (nome do host do cliente). Temos 100 aplicativos conectados a servidores de banco de dados. Além disso, temos servidor de link entre servidores de banco de dados.
Agora, eu sei que a consulta veio do servidor DB 1 com ProgramName Microsoft SQL Server
. Agora estou confuso se o programa Microsoft SQL Server
está indicando a consulta do servidor de link ou a consulta do aplicativo usando ORM.
Estou procurando em todos os aplicativos, mas não encontrei nada ainda. Forme a perspectiva do DBA, o que mais posso fazer para obter o problema real
O nome do host "DB server 1" junto com o nome do programa "Microsoft SQL Server" indica uma consulta de servidor vinculado, não uma consulta executada diretamente do aplicativo.
Como @Learning_DBAdmin sugeriu nos comentários, examine as consultas ativas em execução no servidor de banco de dados 1 durante o episódio de bloqueio. Um ou mais devem mostrar a consulta com o servidor vinculado junto com o host do aplicativo de origem e o nome do programa.
O problema real é provavelmente a necessidade de ajuste de consulta/índice para otimizar a consulta remota. Você pode precisar de índices nas colunas da cláusula join/where. A conversão explícita em
Tbl1029.MyColumn3
impedirá o uso de um índice na coluna de forma eficiente (se houver). As verificações completas resultantes podem levar ao bloqueio.