Poderia me informar se na plataforma InterSystems IRIS, existe uma ferramenta de trace de execução de comandos SQL, procedures entre outros, semelhante ao SQL Profiler?
19 de Fevereiro de 2025 – Alerta: Consultas SQL Retornando Resultados Errados
A InterSystems corrigiu dois problemas que podem fazer com que um pequeno número de consultas SQL retornem resultados incorretos. Além disso, a InterSystems corrigiu uma inconsistência no tratamento de tipo de dados de data/hora que pode levar a resultados diferentes e inesperados — mas corretos — para aplicativos existentes que dependem do comportamento inconsistente anterior.
DP-436825: Consultas SQL com Junção Lateral Podem Retornar Resultados Errados
Introdução: Quando o IRISTEMP Armazena Dados Demais
Então, você verificou seu servidor e viu que o IRISTEMP está crescendo demais. Não precisa entrar em pânico. Vamos investigar o problema antes que seu armazenamento acabe.
Passo 1: Confirmar o Problema de Crescimento do IRISTEMP
Antes de assumir que o IRISTEMP é o problema, vamos verificar seu tamanho real.
Não tenho certeza se muitos se conectam ao MS SQL para executar consultas, procedimentos armazenados, etc., mas nosso Sistema de Saúde possui muitos bancos de dados baseados em MS SQL que utilizamos no ambiente de Interoperabilidade por vários motivos.
Com a migração do ambiente local para a nuvem, enfrentamos algumas dificuldades com as conexões do SQL Gateway e como configurá-las para usar o Microsoft Entra para autenticação do Active Directory.
Há três coisas mais importantes para qualquer converrsa sobre performance SQL: Índices, TuneTable e Plano de Consulta. Os PDFs anexos incluem apresentações históricas sobre esses tópicos que cobrem os fundamentos desses 3 itens em um só lugar. Nossa documentação fornece mais detalhes sobre esses e outros tópicos de desempenho do SQL nos links abaixo. As opções de eLearning reforçam vários desses tópicos. Além disso, há vários artigos da Comunidade de Desenvolvedores que abordam o desempenho do SQL, e os links relevantes também estão listados.
Há uma quantidade considerável de repetição nas informações listadas abaixo. Os aspectos mais importantes do desempenho do SQL a serem considerados são:
Os tipos de índices disponíveis
O uso de um tipo de índice em vez de outro
As informações que o TuneTable coleta para uma tabela e o que isso significa para o Otimizador
Como ler um Plano de Execução para melhor entender se uma consulta é boa ou ruim
Eu criei uma classe que gera código para query customizada a partir de uma global qualquer em um determinado namespace, fazendo com que a global responda ao padrão SQL imediatamente.
De acordo com o relatório OWASP Top Ten de 2021, um documento de referência na área de segurança de aplicações web, as injeções SQL ocupam a terceira posição entre os riscos mais críticos. Este relatório, disponível em OWASP Top 10: Injection, destaca a gravidade dessa ameaça e a necessidade de implementar medidas de proteção eficazes.
Uma injeção SQL ocorre quando um atacante malicioso consegue inserir código SQL não autorizado em uma consulta enviada a um banco de dados. Esse código, disfarçado nas entradas do usuário, pode então ser executado pelo banco de dados, causando ações indesejáveis como o roubo de dados confidenciais, a modificação ou a exclusão de informações sensíveis, ou ainda a interrupção do funcionamento da aplicação.
O FHIR (Fast Healthcare Interoperability Resources) é o padrão mais utilizado pelo mercado para interoperar e armazenar dados em saúde. Trata-se de um padrão que mapeia dezenas de recursos de dados (Pacientes, Observações, Medicações, Diagnósticos, Alergias, Vacinas, Faturamento, Provedores de Saúde, Atendimentos, dentre outros) e seus relacionamentos (Medicações do Paciente, por exemplo). O acesso a todas estas estruturas de dados se dá pelo uso de APIs REST em formato JSON ou XML. A princípio, a maioria dos fornecedores de soluções FHIR, não disponibiliza acesso aos dados no formato SQL.
Vamos montar nossa próxima integração utilizando o adaptador SQL Inbound Adapter. Este adaptador permite acessar uma tabela externa ao IRIS e consumir seus registros.
Em ObjectScript, você tem uma ampla coleção de funções que retornam algum valor tipicamente:
set variable = $somefunction(param1,param2, ...)
Não há nada de especial nisso. Mas há um conjunto de funções que classifico como Funções de Lado Esquerdo A especialidade delas é que você também pode usá-las à esquerda do operador igual como um alvo no comando SET:
Isso pode ser conseguido usando o procedimento CSV() da classe %SQL.Util.Procedures . Abaixo está o exemplo de uso do código. (Assumindo que o arquivo test.csv está em c:\temp.)
Se você encontrou o problema de que nem todas as linhas do seu resultado estão retornando no seu snapshot, você está no lugar certo.
Ao usar snapshots, existe uma informação não trivial de que eles têm um máximo de linhas que vem por padrão como 250.
Para mudar isso é muito simples. Ao invés de enviar o snapshot como referência direto no seu método de execução de query ou procedure, vamos inicializá-lo antes e definir um valor na propriedade MaxRowsToGet.