AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / 问题

All perguntas(dba)

Martin Hope
MattyZDBA
Asked: 2024-11-27 06:47:08 +0800 CST

Usando o componente KingswaySoft JSON Destination, como você torna um nó da solicitação preparada repetível e o outro nó não?

  • 5

Estou usando o Visual Studio 2022 para desenvolver pacotes SSIS 2022, criando um fluxo de dados de uma fonte OLEDB (consulta do SQL Server) para um KingswaySoft JSON Destination para postar em um ponto de extremidade de entrada de dados. O corpo da solicitação tem dois nós, um nó "where" e um nó "do" em um relacionamento de 1 para muitos.

Minha consulta de origem tem 10 linhas, então meu nó "do" terá 10 entradas com um único nó "where" como um wrapper. Eu configurei o Modo de Mesclagem para Buffer, mas meu nó "where" está se repetindo na Visualização e no tempo de execução. Eu quero alternar "Is Repeated" para o nó "where" para False, mas a árvore inteira está desabilitada. Como posso alternar a repetição do nó?

insira a descrição da imagem aqui

ssis
  • 1 respostas
  • 17 Views
Martin Hope
Michael J Swart
Asked: 2024-11-26 23:45:27 +0800 CST

Como adicionar uma restrição de verificação confiável rapidamente

  • 9

Estou adicionando uma restrição de verificação a uma tabela grande porque quero prepará-la para transformá-la em uma tabela particionada usando a alternância de partições.

A verificação é uma verificação de desigualdade simples em uma coluna e há um índice nessa coluna. Mas quando adiciono a restrição, o SQL Server ainda executa uma varredura de toda a tabela. É possível adicionar a restrição rapidamente e mantê-la confiável? Eu esperava que fosse possível por causa do índice.

Aqui está uma reprodução que mostra essa digitalização:

USE tempdb;
GO

SELECT * 
INTO MY_MESSAGES
FROM sys.messages;

CREATE CLUSTERED INDEX IX_MY_MESSAGES ON dbo.MY_MESSAGES(message_id);

SET STATISTICS IO ON;
ALTER TABLE dbo.MY_MESSAGES
    ADD CONSTRAINT CK_mymessages CHECK (message_id < 50000);
SET STATISTICS IO OFF;

DROP TABLE IF EXISTS dbo.MY_MESSAGES;

Isso é mostrado na aba de mensagens:

Table 'MY_MESSAGES'. Scan count 1, logical reads 10955
sql-server
  • 3 respostas
  • 64 Views
Martin Hope
Marcello Miorelli
Asked: 2024-11-26 22:47:39 +0800 CST

transações sem uma sessão correspondente no sql server

  • 6

Eu estava olhando para algumas `tabelas de trabalho' da consulta abaixo do meu amigo Martin

SELECT st.session_id
        ,at.*,
 case transaction_type   
      when 1 then 'Read/Write'   
      when 2 then 'Read-Only'    
      when 3 then 'System'   
      when 4 then 'Distributed'  
      else 'Unknown - ' + convert(varchar(20), transaction_type)     
 end as tranType,    
 case transaction_state 
      when 0 then 'Uninitialized' 
      when 1 then 'Not Yet Started' 
      when 2 then 'Active' 
      when 3 then 'Ended (Read-Only)' 
      when 4 then 'Committing' 
      when 5 then 'Prepared' 
      when 6 then 'Committed' 
      when 7 then 'Rolling Back' 
      when 8 then 'Rolled Back' 
      else 'Unknown - ' + convert(varchar(20), transaction_state) 
 end as tranState, 
 case dtc_state 
      when 0 then NULL 
      when 1 then 'Active' 
      when 2 then 'Prepared' 
      when 3 then 'Committed' 
      when 4 then 'Aborted' 
      when 5 then 'Recovered' 
      else 'Unknown - ' + convert(varchar(20), dtc_state) 
 end as dtcState
FROM    sys.dm_tran_active_transactions at
  left JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
ORDER BY at.transaction_begin_time


insira a descrição da imagem aqui

uma coisa que me chamou a atenção é o fato de que essas transações não possuem uma sessão correspondente?

como posso descobrir de onde eles vêm?

Não há nenhuma sessão associada a eles.

sql-server
  • 1 respostas
  • 73 Views
Martin Hope
JanKanis
Asked: 2024-11-26 22:34:56 +0800 CST

Como posso dizer ao Postgres para escanear apenas os valores mais recentes nesta consulta?

  • 5

Tenho uma tabela grande com medições de sensores que tem esta estrutura:

create table measurements (
  sensor_id    varchar(50)      not null,
  timestamp    timestamptz      not null,
  value        decimal(10, 6)   not null,
  primary key (sensor_id, timestamp)
)

Ele contém medições de sensores (pluvômetros, mas isso não importa muito) tiradas em intervalos de 5 minutos. Os valores do sensor podem ser 0 ou positivos, mas não negativos. Atualmente, o conjunto de dados remonta a um pouco mais de um ano, mas deve ser capaz de lidar com anos de dados.

Quero recuperar as medições mais recentes por sensor para análise posterior, de modo que eu obtenha pelo menos duas semanas de medições, e o conjunto de medições deve conter pelo menos 100 valores diferentes de zero. A consulta que usei é esta:

select *
from (
    select sensor_id, timestamp, "value",
      sum(cast("value" > 0 as INT)) over w as cum_nonzero_measurements,
      row_number() over w as cum_measurements,
      first_value(timestamp) over w - timestamp as age
    from measurements
    window w as (partition by sensor_id order by timestamp desc)
    ) windowed
where (cum_nonzero_measurements <= 100 or age < interval '2 weeks' )
  and sensor_id in ($1)
order by sensor_id, timestamp desc

Esta consulta precisa apenas das medições N mais recentes para um sensor, embora N possa variar. A maneira inteligente de executar tal consulta seria começar a ler a partir do valor mais recente, voltando no tempo. No entanto, o Postgresql não percebe que a consulta pode ser executada dessa forma e insiste em carregar todas as medições para os s fornecidos sensor_id, fazendo uma agregação de janela sobre todas as linhas e, somente então, filtrando a maioria das linhas para obter o resultado.

Eu tentei com índices diferentes, o que ajuda a recuperar todas as linhas para os sensores solicitados mais rapidamente, mas o que quer que eu faça, o Postgres continua carregando todas as linhas para os sensores em questão. Atualmente, o desempenho é aceitável, mas isso não escala muito bem se o conjunto de dados cresce.

Existe alguma maneira de convencer o Postgres de que ele não precisa carregar todas as linhas, apenas as mais recentes?

postgresql
  • 1 respostas
  • 68 Views
Martin Hope
cam
Asked: 2024-11-25 23:31:49 +0800 CST

Juntando com generate_series para datas ausentes com coluna de data derivada

  • 4

Existem algumas perguntas semelhantes a esta (por exemplo, https://dba.stackexchange.com/questions/72419/filling-in-missing-dates-in-record-set-from-generate-series), mas a solução não parece funcionar no meu caso... Basicamente, estou tentando gerar entradas zero para datas não presentes em uma série, mas suspeito que o problema seja que estou tendo que extrair o valor da data de um registro de data e hora? Uso SQL há anos, mas sou muito novo no postgres - impressionado até agora, no entanto... Tentei uma junção à esquerda e à direita aqui, mas sem sucesso...

Aqui está um pequeno caso de teste (ainda é recomendável mexer em SQL?):

-- temp test table - works as expected
WITH incomplete_data(payment_date, payment_id) AS (
   VALUES 
     ('2024-09-06 11:26:57.509429+01'::timestamp with time zone, 'uuid01')
    ,('2024-09-06 12:26:57.509429+01', 'uuid02')
    ,('2024-09-07 07:26:57.509429+01', 'uuid03')
    ,('2024-09-08 10:26:57.509429+01', 'uuid05')
    ,('2024-09-08 12:26:57.509429+01', 'uuid08')
    ,('2024-09-08 14:26:57.509429+01', 'uuid11')
    ,('2024-09-10 09:26:57.509429+01', 'uuid23')
   )
select * from incomplete_data;

-- generated dates - work as expected
select * FROM  (
   SELECT generate_series(timestamp '2024-01-01'
                        , timestamp '2024-01-01' + interval '1 year - 1 day'
                        , interval  '1 day')::date
   ) d(day)
;
   
-- join - failing to do what I was hoping..
WITH incomplete_data(payment_date, payment_id) AS (
   VALUES 
     ('2024-09-06 11:26:57.509429+01'::timestamp with time zone, 'uuid01')
    ,('2024-09-06 12:26:57.509429+01', 'uuid02')
    ,('2024-09-07 07:26:57.509429+01', 'uuid03')
    ,('2024-09-08 10:26:57.509429+01', 'uuid05')
    ,('2024-09-08 12:26:57.509429+01', 'uuid08')
    ,('2024-09-08 14:26:57.509429+01', 'uuid11')
    ,('2024-09-10 09:26:57.509429+01', 'uuid23')
   )
select count(payment_id), date_trunc('day',payment_date)::date as time
FROM  (
   SELECT generate_series(timestamp '2024-01-01'
                        , timestamp '2024-01-01' + interval '1 year - 1 day'
                        , interval  '1 day')::date
   ) d(day)
right  JOIN incomplete_data p ON date_trunc('day',payment_date) = d.day
where payment_date BETWEEN '2024-09-01T12:55:36.824Z' AND '2024-09-30T13:55:36.824Z'
GROUP  BY date_trunc('day',payment_date)
ORDER  BY date_trunc('day',payment_date);

 count |    time
-------+------------
     2 | 2024-09-06
     1 | 2024-09-07
     3 | 2024-09-08
     1 | 2024-09-10
(4 rows)

Eu esperava obter uma linha para cada dia do mês com zeros para dias não preenchidos. O pano de fundo é que isso é para preencher uma consulta grafana.

Alguém pode sugerir o que estou fazendo errado ou estou falhando em entender um problema maior aqui? Minha versão é:PostgreSQL 15.9 (Debian 15.9-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit

ATUALIZAÇÃO
A resposta de jjanes abaixo ajudou a esclarecer a sequência de junção e filtragem para mim - esta é a seleção necessária:

WITH incomplete_data(payment_date, payment_id) AS (
   VALUES 
     ('2024-09-06 11:26:57.509429+01'::timestamp with time zone, 'uuid01')
    ,('2024-09-06 12:26:57.509429+01', 'uuid02')
    ,('2024-09-07 07:26:57.509429+01', 'uuid03')
    ,('2024-09-08 10:26:57.509429+01', 'uuid05')
    ,('2024-09-08 12:26:57.509429+01', 'uuid08')
    ,('2024-09-08 14:26:57.509429+01', 'uuid11')
    ,('2024-09-10 09:26:57.509429+01', 'uuid23')
   )
select count(payment_id), d.day as time
FROM  (
   SELECT generate_series(timestamp '2024-01-01'
                        , timestamp '2024-01-01' + interval '1 year - 1 day'
                        , interval  '1 day')::date
   ) d(day)
left JOIN incomplete_data p ON date_trunc('day',payment_date) = d.day
where d.day BETWEEN '2024-09-01T12:55:36.824Z' AND '2024-09-30T13:55:36.824Z'
GROUP  BY d.day
ORDER  BY d.day
;
postgresql
  • 1 respostas
  • 23 Views
Martin Hope
laurent
Asked: 2024-11-25 16:50:09 +0800 CST

Como obter um instantâneo do pg_create_logical_replication_slot?

  • 5

Ao ler a documentação sobre o protocolo de replicação de streaming , vejo que posso obter o nome do snapshot. Isso parece ser útil para executar a sincronização antes de começar a transmitir as mensagens de replicação e garantir que tenho todos os dados. No entanto, não consigo obter o snapshot ao chamar a função sql pg_create_logical_replication_slot (e meu cliente não implementa o protocolo de replicação de streaming). Como posso obter esse nome de snapshot para executar a sincronização inicial?

Para o contexto, tenho uma tabela somente de anexação e quero usá-la como uma espécie de "produtor de eventos", usando replicação lógica para construir um mecanismo de assinatura.

postgresql
  • 1 respostas
  • 13 Views
Martin Hope
Téo Lefebvre
Asked: 2024-11-25 11:53:45 +0800 CST

Podemos autenticar no PostgreSQL com certificado TLS E senha para a mesma conexão?

  • 5

Quero configurar meu servidor PostgreSQL para habilitar a autenticação com certificado TLS e senha ao mesmo tempo (para a mesma conexão, não apenas habilitar os dois mecanismos de autenticação).

Então, para que um cliente se autentique, ele deve:

  • fornecer um certificado válido com o nome de usuário definido no nome comum e assinado por uma autoridade raiz confiável
  • forneça uma senha para este usuário específico

Quero fazer isso para melhorar a segurança. Dessa forma, mesmo que meu certificado de cliente ou minha CA raiz vazem, você ainda precisa de uma senha para autenticar.

Não consigo descobrir como fazer isso. Nesta página da documentação do PostgreSQL , é dito que quando você usa o certificado TLS:

Nenhum prompt de senha será enviado ao cliente

Então é possível fazer isso e, se sim, como?

postgresql
  • 1 respostas
  • 18 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2024-11-24 15:51:20 +0800 CST

A atribuição recursiva de variáveis ​​é ruim mesmo se a atribuição recursiva de uma única linha for feita?

  • 6

Está documentado que a atribuição recursiva de variáveis ​​(como esta ↓↓↓↓) pode às vezes retornar resultados incorretos:

SELECT @var = @var + [Name]
FROM dbo.People
...

Mas isso se aplica mesmo no caso em que tenho certeza de que apenas uma linha será retornada?

Exemplo ( Fiddle ):

CREATE TABLE dbo.People
(
  Id INT IDENTITY PRIMARY KEY,
  [Name] varchar(50) NOT NULL
);

INSERT INTO dbo.People([Name]) VALUES ('Bob');

DECLARE @var varchar(50) = '';


/*Is this bad even if the query always returns only one row?*/
SELECT @var = @var + [Name]
FROM dbo.People
WHERE Id = 1;

SELECT [@var] = @var;

A documentação diz que " Nesse caso, não há garantia de que @Var seria atualizado linha por linha. " o que (para mim) sugere que a seleção de uma única linha deve ser suficiente, certo?

Outro exemplo em que se pode querer usar isso é ao calcular alguns valores agregados e adicioná-los a algum lugar:

SELECT @Total = @Total + SUM(InvoiceTotal) /*single row, aggregate of several values*/
FROM dbo.Invoice
WHERE ...;
/*Notice no GROUP BY*/
sql-server
  • 1 respostas
  • 30 Views
Martin Hope
Eduardo Jiménez
Asked: 2024-11-24 11:07:33 +0800 CST

Conceder execução somente no host local

  • 6

Tenho um usuário que pode ser acessado de qualquer host (estamos atualmente em desenvolvimento). Mas quero limitar a execução de procedimentos armazenados apenas para localhost. O problema é que o localhostusuário não é reconhecido.

DROP USER IF EXISTS 'admin'@'%';
CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED WITH 'caching_sha2_password' BY 'my_password';

###########################
### STORED PROCEDURES   ###
###########################
GRANT EXECUTE ON MY_DATABASE.* TO 'admin'@'127.0.0.1';

###########################
### SELECT              ###
###########################
GRANT SELECT ON MY_DATABASE.MY_TABLE TO 'admin'@'%' WITH GRANT OPTION;
GRANT SELECT ON MY_DATABASE.MY_TABLE2 TO 'admin'@'%' WITH GRANT OPTION;
.
.
.

Executar esse código me gera o próximo erro.

[2024-11-23 20:59:09] [42000][1410] You are not allowed to create a user with GRANT

Alterar o host "resolve" o erro, mas quero limitar a execução ao localhost. Não sei se preciso apenas adicionar um novo usuário assim.

CREATE USER IF NOT EXISTS 'admin'@'127.0.0.1' IDENTIFIED WITH 'caching_sha2_password' BY 'my_password';

###########################
### STORED PROCEDURES   ###
###########################
GRANT EXECUTE ON MY_DATABASE.* TO 'admin'@'127.0.0.1';

###########################
### SELECT              ###
###########################
GRANT SELECT ON MY_DATABASE.MY_TABLE1 TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
GRANT SELECT ON MY_DATABASE.MY_TABLE2 TO 'admin'@'127.0.0.1' WITH GRANT OPTION;
.
.
.

Ou se houver outra maneira sem repetir a definição do usuário

mysql
  • 1 respostas
  • 20 Views
Martin Hope
J. Mini
Asked: 2024-11-24 04:20:05 +0800 CST

Existe alguma informação no Query Store que pode ser usada para encontrar líderes de bloco?

  • 7

Estou em um servidor com grandes problemas de bloqueio. Não deadlocks, apenas bloqueios simples. Sabemos que é o gargalo principal do servidor. No entanto, eles não sabem quais são os líderes de bloco, então não sei quais consultas ajustar. Eu poderia instalar mais monitoramento, mas notei que eles têm o Query Store habilitado. Existe alguma informação no Query Store que pode ser usada para encontrar líderes de bloco?

sql-server
  • 1 respostas
  • 80 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve