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
questionto42
Asked: 2024-04-18 00:36:47 +0800 CST

Por que você deve sempre escrever “varchar” com o comprimento entre colchetes atrás dele? Freqüentemente, você obtém o resultado certo sem fazer isso

  • 4

"Muitas vezes, você obtém o resultado certo sem fazer isso."

Exemplo:

select CONVERT(varchar, getdate(), 112)

saídas

20240417

Eu vi isso em alguns lugares no Stack Exchange até encontrar um pequeno comentário que dizia ao leitor para não esquecer o comprimento entre colchetes. Afirmei que isso não é necessário se você definir o número do estilo para uma data e hora como esta. No entanto, agora tenho conhecimento suficiente para entender que "varchar nunca deve ficar sozinho", deve sempre ser escrito como algo como varchar(1234).

Quanto ao código acima, seria:

select CONVERT(varchar(8), getdate(), 112)

Se você olhar para ele, a saída é a mesma:

20240417

Um comentário abaixo foi ainda mais longe: char(8)deveria ser levado em consideração, já que

nenhum valor no estilo 112 será menor que 8 caracteres.

Por que você deve sempre escrever varchar com o comprimento entre colchetes atrás dele?

Links que levaram a esta pergunta

  • Converter data aaaa-mm-dd em número inteiro AAAAMM - DBA SE
  • SQL Server Converter Varchar em Datetime - Stack Overflow
  • Converter data em tipo de dados numérico - Stack Overflow
sql-server
  • 2 respostas
  • 147 Views
Martin Hope
user24266786
Asked: 2024-04-17 13:39:09 +0800 CST

A reversão de transação não foi revertida com sucesso

  • 3

No PolarDB, um lote de instruções SQL de gravação foi executado, entre as quais uma falhou, solicitando uma reversão da transação. No entanto, a reversão não pareceu ser concluída com êxito. O objetivo é verificar se ocorreu um erro durante o processo de reversão, apesar de nenhum erro ter sido relatado pelo código de negócios.

rollback
  • 1 respostas
  • 22 Views
Martin Hope
Yossi Geretz
Asked: 2024-04-17 06:59:49 +0800 CST

Como esse usuário efetua login no servidor de banco de dados, quando seu login está desativado no servidor de banco de dados?

  • 5

Desativei especificamente um login no servidor de banco de dados. Este é um banco de dados SQL como serviço hospedado no Azure.

alter login [********@hotmail.com] disable

Esta é a aparência do login no servidor. Como você pode ver, o X vermelho no ícone indica que ele está de fato desabilitado.

insira a descrição da imagem aqui

Mesmo assim, consigo fazer login no servidor e acessar o banco de dados para o qual esse usuário está definido. Como isso é possível? O que significa desabilitar um login no servidor de banco de dados se isso não impedir que essa conta faça login no servidor de banco de dados?

insira a descrição da imagem aqui

Testei esse comportamento com duas contas diferentes, de dois domínios de autenticação diferentes. Ambos exibem o mesmo comportamento.

O que estou tentando fazer é definir o usuário no banco de dados para que o usuário possa acessar o banco de dados no servidor de réplica de leitura, mas desabilitar (ou remover) o login correspondente do servidor primário para que esse usuário não seja capaz de acessar o banco de dados primário no servidor primário. No entanto, estou descobrindo que, com a conta Microsoft Entra (Azure AD) definida como um usuário em um banco de dados específico, não faz absolutamente nenhuma diferença se houver um logon correspondente definido no servidor ou se não houver nenhum logon definido no servidor , ou se houver um login definido no servidor, mas ele estiver especificamente desabilitado. Isso é um bug na forma como os logins de contas de usuários externos são tratados? Meu entendimento da relação login/usuário é que primeiro é necessário que haja um login em situação regular no servidor e que esta é a primeira coisa que é verificada ao fazer login em um servidor de banco de dados. Isso não está correto?

Nova informação:

Estou vendo esse comportamento mesmo com usuários do SQL Server. Posso simplesmente criar um usuário SQL Server em um banco de dados e depois fazer login para acessar esse banco de dados SEM criar um login de servidor. Esse comportamento é o que esperaríamos de um banco de dados independente. ( https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases?view=sql-server-ver16 ) No entanto, o banco de dados não está contido!

insira a descrição da imagem aqui

Portanto, o banco de dados não está contido, mas as conexões exibem todo o comportamento que esperaríamos da contenção. Há contenção parcial acontecendo aqui? Como eu determinaria se esse é o caso? E se for esse o caso, como eu reconfiguraria o banco de dados para que as conexões seguissem o modelo tradicional de login do servidor -> usuário do banco de dados?

sql-server
  • 2 respostas
  • 75 Views
Martin Hope
questionto42
Asked: 2024-04-16 21:10:31 +0800 CST

A janela do projeto SSIS fica branca logo no início da depuração, status "Em execução", difícil de recuperar o projeto. Como posso evitar esse acidente?

  • 5

Isso ocupa o pacote SSIS com status running is not running - Stack Overflow .

A janela do projeto SSIS fica branca logo no início da depuração, status "Em execução":

insira a descrição da imagem aqui

O fechamento com o botão direito não pode ser feito:

insira a descrição da imagem aqui

E se eu passar o mouse sobre o ícone da barra de tarefas, esperar a visualização aparecer e clicar com o botão direito no X da janela travada, posso ver o projeto novamente na janela antiga para poder fechar a outra janela, já que faço isso não preciso mais disso:

insira a descrição da imagem aqui

E você pode ver que a depuração foi concluída, tudo verde:

insira a descrição da imagem aqui

E toda a corrida durou apenas 3 segundos, embora eu tenha esperado alguns minutos para que a janela branca desaparecesse:

insira a descrição da imagem aqui

E a execução é perfeita, sem avisos ou erros no Progresso/Resultados da Execução.

Isso acontece em cada depuração. Como posso me livrar dessa janela de projeto esbranquiçada do Visual Studio logo no início da execução de um contêiner?

PS: Provavelmente não está vinculado porque me deparo com isso com muita frequência, mas quem sabe: ao mesmo tempo, também não consigo alterar o tamanho de nenhuma caixa no Fluxo de Controle ou no Fluxo de Dados. O cursor do mouse às vezes permanece como uma seta dupla depois de tentar redimensionar algo e, mesmo que seja uma seta dupla estranha, posso clicar duas vezes nas caixas ou clicar para renomear as coisas.

sql-server
  • 1 respostas
  • 20 Views
Martin Hope
J. Mini
Asked: 2024-04-16 04:36:54 +0800 CST

Como a aritmética de quantos bytes são salvos pela compactação de linha de uma data e hora se soma?

  • 5

Tudo o que se segue é citado da datetimelinha aqui . Quebrei a citação para comentar meu entendimento.

Usa a representação de dados inteiros usando dois inteiros de 4 bytes. O valor inteiro representa o número de dias com data base de 1900-01-01.

Em outras palavras, temos oito bytes para trabalhar. Isso é exatamente igual ao que datetimejá está sendo feito.

Os primeiros 2 bytes podem representar até o ano 2079. A compactação sempre pode salvar 2 bytes aqui até esse ponto.

Ou seja, até 2079 estaremos perdendo dois bytes por ano. Depois desse ponto, perderemos mais. Isso significa que para datas anteriores a 2079, temos seis dos nossos oito bytes originais para trabalhar.

Cada valor inteiro representa 3,33 milissegundos. A compactação esgota os primeiros 2 bytes nos primeiros cinco minutos [sic] e precisa do quarto byte após as 16h.

Em outras palavras, depois das 16h, só temos dois dos seis bytes restantes para trabalhar.

Portanto, a compactação pode salvar apenas 1 byte após as 16h.

Esta é claramente a parte que não entendo . Minha aritmética anterior prova que nos restam dois adeus. No entanto, a Microsoft diz que só temos um. Isso é duplamente confuso, porque se já passarmos de 2079, os números da Microsoft nos colocariam como tendo menos um byte restante.

Quando datetime é compactado como qualquer outro número inteiro, a compactação salva 2 bytes na data.

O usuário não tem controle sobre como funciona a compactação, portanto esta linha é totalmente irrelevante.

Pelo exposto, é evidente que tenho um grande mal-entendido. O que eu perdi?

sql-server
  • 1 respostas
  • 57 Views
Martin Hope
J. Mini
Asked: 2024-04-16 03:25:33 +0800 CST

Por que a compactação de dados não afeta os backups?

  • 5

A documentação é muito clara neste ponto

A compactação não afeta o backup e a restauração.

Mas como isso é possível? Certamente, se minha tabela for menor (devido à compactação), isso deverá ter algum impacto nos backups/restaurações? Se minha tabela for menor, ela deverá carregar mais rápido. Se minha tabela precisar de descompactação, isso deverá demorar mais. De qualquer forma, não consigo acreditar que a compactação de dados não faça absolutamente nada nos backups e restaurações.

o que estou perdendo?

sql-server
  • 1 respostas
  • 53 Views
Martin Hope
J. Mini
Asked: 2024-04-16 02:37:23 +0800 CST

As colunas NVARCHAR(max) se beneficiarão da compactação de linhas?

  • 5

Tenho uma tabela que acredito dever a maior parte de seu tamanho a uma NVARCHAR(max)coluna enorme. Não sei como testar de onde vem a maior parte de seu tamanho. Independentemente disso, tal tabela se beneficiaria da compactação de linhas? Ou NVARCHAR(max)já tem comprimento variável de forma que a compactação de linhas não faça nada?

sql-server
  • 1 respostas
  • 35 Views
Martin Hope
user24266786
Asked: 2024-04-15 15:38:45 +0800 CST

Cluster de banco de dados PolarDB

  • 4

Na ausência de um serviço de gerenciamento de banco de dados (DMS) ativado, quais métodos alternativos existem para estabelecer uma conexão com um cluster de banco de dados PolarDB?

clustering
  • 1 respostas
  • 17 Views
Martin Hope
Yossi Geretz
Asked: 2024-04-15 09:13:01 +0800 CST

Como crio logins de usuário em meu banco de dados de réplica de leitura?

  • 5

É possível que diferentes usuários acessem meu banco de dados de réplica de leitura? Este não é de fato um caso de uso popular para uma réplica de leitura? Quero que um determinado conjunto limitado de credenciais tenha acesso ao meu banco de dados primário de leitura e gravação e, em seguida, quero que várias outras pessoas possam ter acesso somente leitura à réplica de leitura para relatórios, consultas ad-hoc, etc. . Não quero necessariamente que os dois bancos de dados tenham exatamente os mesmos acessadores.

Criei um login do Microsoft Entra no servidor que hospeda minha réplica de leitura, mas aqui está o que recebo quando tento criar o usuário para acesso ao banco de dados.

insira a descrição da imagem aqui

Msg 3906, Level 16, State 2, Line 1
Failed to update database "********" because the database is read-only.

Bem, é claro que o banco de dados é somente leitura, é minha réplica de leitura. Mas não estou tentando gravar dados no banco de dados, apenas definir os detalhes de meta-segurança para quem na minha organização tem permissão para acessar a réplica de leitura. Isso não pode ser feito?

sql-server
  • 1 respostas
  • 48 Views
Martin Hope
Borislav Zlatanov
Asked: 2024-04-14 22:20:02 +0800 CST

Consultar postgres db em um contêiner Docker de outro contêiner usando autenticação de ponto

  • 4

Eu tenho dois contêineres Docker com um banco de dados Postgres em cada um. Estou expondo o soquete Postgres de cada contêiner ao outro, usando volumes Docker, assim:

docker run --rm -itd --name=containerone -p 127.0.0.1:3003:3000 -v containeronepgsocket:/var/run/postgresql -v containertwopgsocket:/var/run/postgresql_containertwo registry.gitlab.com/mycont/mycont

O acima faz com que no contêiner eu tenha o soquete regular /var/run/postgresql, bem como o soquete/var/run/postgresql_containertwo

Meu objetivo é poder consultar cada contêiner de dentro do outro, usando o método de autenticação de pares Postgres (ou seja, sem necessidade de senha).

Consegui fazer isso ao consultar por meio de javascript. Aqui está meu código, usando o pacote Sequelize do contêiner um para consultar o contêiner dois:

const sequelize_containertwo = new Sequelize('containertwo', 'myuser', undefined, {
    host: '/var/run/postgresql_containertwo',
    dialect: 'postgres'
});

Como você pode ver, a senha permanece indefinida. Contanto que o soquete esteja no sistema operacional e eu esteja usando o usuário correto do sistema operacional, o método de autenticação de ponto funciona e posso consultar o outro contêiner.

Mas também tenho funções PL/pgSQL e preciso consultar o outro contêiner dentro dessas funções. E é aqui que estou enfrentando um problema. De dentro das funções, estou consultando o mesmo contêiner, mas também preciso consultar dados do outro contêiner.

Para conseguir isso, meu primeiro pensamento foi usar o dblink. Tentei fazer algo assim:

SELECT * 
  FROM dblink('postgresql:///containertwo_db?host=/var/run/postgresql_containertwo',
    SELECT mycol
    FROM mytable
    )
    AS t1(mycol BIGINT);

Isso fornece o host como um parâmetro na cadeia de conexão. Já tive sucesso ao me conectar ao soquete usando exatamente essa string de conexão, mas a partir do arquivo docker_entrypoint. Quando tento no dblink, recebo o erro de que é necessária uma senha.

Como posso consultar o outro contêiner de dentro de uma função PL/pgSQL e usando autenticação de pares? Posso fazer isso através do dblink e, em caso afirmativo, como? Ou existe alguma outra maneira?

postgresql
  • 1 respostas
  • 22 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