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
codingguy3000
Asked: 2012-06-28 11:26:00 +0800 CST

SQL Server como contornar o preenchimento do log de transações ao atualizar uma coluna para um int

  • 18

Tenho uma tabela SQL Server 2005 chamada BRITTNEY_SPEARS_MARRIAGESe ela possui as seguintes colunas:

MarrigeId tinyint, 
HusbandName varchar(500),
MarrigeLength int

Agora eu tenho outra mesaBRITTNEY_SPEARS_MARRIAGE_STORIES

StoryId int, 
MarriageId tinyint, 
StoryText nvarchar(max)

O problema é que queremos atualizar MarrigeIda coluna para um intde um arquivo tinyint. Nós apenas sentimos que Brittney vai ter muitos casamentos antes que tudo seja dito e feito.

Agora a BRITTNEY_SPEARS_MARRIAGE_STORIEStabela tem 18 milhões de linhas (ei, a garota tem alguns problemas), então, quando vamos fazer a atualização, o log de transações é preenchido e nossa caixa do SQL Server morre.

Como podemos contornar isso?

Existe alguma maneira de dizer "Ei, SQL Server, vou atualizar esta coluna e torná-la maior. Confie em mim neste SQL Server. Por favor, não encha o log de transações enquanto tenta validar tudo?"

sql-server sql-server-2005
  • 2 respostas
  • 7334 Views
Martin Hope
mehdi lotfi
Asked: 2012-06-09 20:38:17 +0800 CST

Crie uma nova função por código se ela não existir

  • 18

Eu quero criar uma nova função por script no meu banco de dados. O código do script está abaixo:

IF Exists(Select * From sys.sysobjects A Where A.name =N'fn_myfunc' and xtype=N'FN') return;

CREATE FUNCTION fn_myfunc ()
returns varchar(10)
AS Begin
...
End

Mas quando executo o script acima, o SQL Server retorna um erro:

'CREATE FUNCTION' must be the first statement in a query batch.
sql-server sql-server-2008-r2
  • 3 respostas
  • 40176 Views
Martin Hope
swasheck
Asked: 2012-05-31 09:57:40 +0800 CST

Devo migrar dados usando desanexar/copiar/anexar ou por meio de backup-restauração-repetição?

  • 18

Estou prestes a migrar arquivos de banco de dados para uma nova SAN (de uma SAN antiga) e tenho algumas opções para implementar isso. (1) Foi sugerido que eu analisasse o nível de esforço de restauração de um backup completo para um novo banco de dados no servidor. No entanto, (2) meu plano original era copiar os arquivos da SAN antiga para a nova SAN desconectando e reconectando o banco de dados.

Meu instinto me diz que prefiro desanexar, copiar e anexar, pois parece mais à prova de falhas, mas isso pode ser apenas minha ingenuidade. Não quero perder uma transação ou de alguma forma "quebrar alguma coisa" no processo de renomear bancos de dados.

Acho que minha pergunta é se estou ou não justificado em meu ceticismo em relação à opção BACKUP-RESTORE-Replay e quais são os outros méritos ou riscos dessa opção?

sql-server sql-server-2000
  • 3 respostas
  • 6189 Views
Martin Hope
Dexter
Asked: 2012-03-13 12:14:37 +0800 CST

Teste se alguma coluna é NULL

  • 18

Estou tentando descobrir uma consulta fácil que posso fazer para testar se uma tabela grande possui uma lista de entradas que possui pelo menos UM valor em branco (NULL/vazio) em QUALQUER coluna.

Eu preciso de algo como

SELECT * FROM table AS t WHERE ANY(t.* IS NULL)

eu não quero ter que fazer

SELECT * FROM table AS t WHERE t.c1 = NULL OR t.c2 = NULL OR t.c3 = NULL

Esta seria uma consulta ENORME.

sql-server sql-server-2008
  • 5 respostas
  • 132304 Views
Martin Hope
Lorenzo Polidori
Asked: 2012-03-06 06:41:45 +0800 CST

Tabela Tombstone vs sinalizador excluído em cenários de sincronização de banco de dados e exclusão reversível

  • 18

Preciso acompanhar os itens excluídos para as necessidades de sincronização do cliente.

Em geral, é melhor adicionar uma tabela tombstone e um gatilho que rastreie quando uma linha foi excluída do banco de dados do servidor - basicamente adicionando uma nova linha à tabela tombstone com os dados do item excluído - ou manter os itens no tabela original e sinalizá -los como excluídos, normalmente com uma coluna do tipo bit, para indicar que uma linha foi excluída e outra coluna para rastrear quando ocorreu a exclusão?

delete
  • 2 respostas
  • 8921 Views
Martin Hope
Rachel
Asked: 2012-02-07 08:16:10 +0800 CST

É mais seguro passar por um terceiro banco de dados para conectar dois bancos de dados usando o mesmo login?

  • 18

Temos a seguinte configuração:

  • Banco de dados de produção múltipla contendo dados privados que são usados ​​pelo software de desktop
  • Um banco de dados da web para um site público que precisa de alguns dados dos bancos de dados privados
  • Um banco de dados intermediário que contém algumas visualizações e procedimentos armazenados que extraem dados dos bancos de dados privados

Atualmente, o site faz login no banco de dados da web e o banco de dados da web se conecta ao banco de dados intermediário para extrair dados ou executar procedimentos armazenados nos bancos de dados de produção. Todos os bancos de dados estão na mesma instância SQL e todo o processo usa a mesma conta de usuário.

A conta do usuário tem acesso total ao banco de dados da web e ao banco de dados intermediário, mas só pode acessar exibições específicas e procedimentos armazenados de um banco de dados privado

Isso é realmente mais seguro do que apenas fazer com que o banco de dados público se conecte diretamente aos privados?

Parece que o banco de dados intermediário só existe para complicar as coisas, pois o mesmo login é usado para acessar os dados em todos os bancos de dados e já está limitado apenas às visualizações / SPs que precisa nos bancos de dados privados. Eu estou esperando para removê-lo.

database-design security
  • 2 respostas
  • 454 Views
Martin Hope
onedaywhen
Asked: 2012-01-20 06:34:12 +0800 CST

Significado de 'SET' na mensagem de erro 'Valor nulo é eliminado por um agregado ou outra operação SET'

  • 18

Eu vi a mensagem 'Aviso ANSI' acima hoje ao executar o script de um colega (e não sei qual das muitas declarações causou a exibição do aviso).

No passado, eu ignorei: eu mesmo evito nulos e, portanto, qualquer coisa que os elimine é uma coisa boa em meu livro! No entanto, hoje a palavra 'SET' literalmente gritou para mim e percebi que não sei qual é o significado da palavra neste contexto.

Meu primeiro pensamento, com base no fato de ser maiúscula, é que se refere à palavra- SETchave e significa 'atribuição', como em

UPDATE <table> SET ...

...ON DELETE SET NULL...

SET IDENTITY_INSERT <table> ON

De acordo com a Ajuda do SQL Server, o recurso 'Avisos ANSI' é baseado no ISO/ANSI SQL-92, cuja especificação faz apenas um uso do termo 'Definir operação' no título de uma subseção, portanto, no caso do título, no seção de atribuição de dados. No entanto, após uma rápida pesquisa da mensagem de erro no Google, vejo exemplos que são SELECTconsultas aparentemente sem atribuição envolvida.

Meu segundo pensamento, com base no texto do aviso do SQL Server, foi que o significado matemático de set está implícito. No entanto, não acho que a agregação em SQL seja estritamente falando uma operação de conjunto. Mesmo que a equipe do SQL Server considere uma operação de set, qual o objetivo de colocar a palavra 'set' em maiúsculas?

Ao pesquisar no Google, notei uma mensagem de erro do SQL Server:

Table 'T' does not have the identity property. Cannot perform SET operation.

As mesmas palavras 'operação SET' no mesmo caso aqui só podem se referir à atribuição da IDENTITY_INSERTpropriedade, o que me traz de volta ao meu primeiro pensamento.

Alguém pode lançar alguma luz sobre o assunto?

sql-server
  • 3 respostas
  • 22144 Views
Martin Hope
Mark D
Asked: 2012-01-14 10:49:20 +0800 CST

Chamar um procedimento armazenado de um gatilho

  • 18

Eu criei um procedimento armazenado no mysql usando a seguinte sintaxe.

DROP PROCEDURE IF EXISTS `sp-set_comment_count`;

DELIMITER $$

CREATE PROCEDURE `sp_set-comment_count` (IN _id INT)
BEGIN
   -- AC   - AllCount
   DECLARE AC INT DEFAULT 0;

   SELECT COUNT(*) AS ac
     INTO AC
     FROM usergroups AS ug
LEFT JOIN usergroup_comments AS ugm ON ugm.`gid` = ug.`id`
LEFT JOIN mediagallery AS dm ON ugm.mid = dm.`id`
    WHERE dm.`status` NOT IN (200, 201, 202, 203, 204, 205)
      AND ug.`id` = _id;

   UPDATE usergroups
      SET allCount = AC,
    WHERE usergroups.`id` = _id;

END $$
DELIMITER ;

Para sua informação, simplifiquei bastante o procedimento armazenado, mas sei que funciona sem problemas.

O que eu gostaria de poder fazer é configurar um gatilho de usergroup_comments que funciona assim.

DROP TRIGGER IF EXISTS `usergroups_comments_insert` 

CREATE TRIGGER `usergroups_comments_insert` AFTER INSERT ON `usergroups_comment`
    FOR EACH ROW
    BEGIN
       CALL sp-set-comment_count(NEW.`gid`);
    END;

Mas, por algum motivo, toda vez que eu faço o mysql lança um erro para mim que é menos do que útil, afirmando que há um erro de sintaxe na linha 4.

Eu vasculhei a documentação do mysql e encontrei algumas informações sobre restrições de gatilhos, mas achei bastante complicado.

http://dev.mysql.com/doc/refman/5.1/en/stored-program-restrictions.html

Qualquer idéia será útil.

mysql stored-procedures
  • 4 respostas
  • 101207 Views
Martin Hope
Thomas Stringer
Asked: 2012-01-04 19:10:30 +0800 CST

Maneira mais eficiente de recuperar intervalos de datas

  • 18

Qual é a maneira mais eficiente de recuperar intervalos de datas com uma estrutura de tabela como essa?

create table SomeDateTable
(
    id int identity(1, 1) not null,
    StartDate datetime not null,
    EndDate datetime not null
)
go

Digamos que você queira um intervalo para StartDatee EndDate. Então, em outras palavras, se estiver StartDateentre @StartDateBegine @StartDateEnd, e estiver EndDateentre @EndDateBegine @EndDateEnd, então faça alguma coisa.

Eu sei que existem algumas maneiras de provavelmente fazer isso, mas qual é a mais recomendada?

sql-server performance
  • 2 respostas
  • 29934 Views
Martin Hope
Craig Efrein
Asked: 2011-12-23 02:29:38 +0800 CST

Automatizando o failover no PostgreSQL 9.1

  • 18

Como configurar dois servidores idênticos para failover automático no PostgreSQL 9.1.

SO

Centos 5
PostgreSQL 9.1 compilado a partir do código fonte
A conta de usuário postgres existe em ambas as máquinas e tem uma chave ssh sem senha para conectar a ambas as máquinas.

Minha configuração atual:

Configuração do servidor mestre:

postgresql.conf:

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16    
wal_keep_segments = 8 
archive_mode = on    
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'  

pg_hba.conf:

 host  replication   all   10.0.66.1/32      trust
 host  replication   all   10.0.66.2/32      trust

Servidor em espera

postgresql.conf e pg_hba.conf são idênticos ao que está configurado no servidor mestre.

recovery.conf:

 standby_mode = 'on'
 primary_conninfo = 'host=10.0.66.1'
 trigger_file = '/opt/pgsql91/data/trigger.txt'

Graças ao hzRoot, agora entendo como alternar o servidor do modo de espera para o mestre.

Usando os comandos a seguir, posso sincronizar o novo escravo com o novo mestre e, em seguida, obter o backup e a execução da replicação.

No novo mestre (10.0.66.2)

  1. su - postgres
  2. toque em trigger.txt em /opt/pgsql91/data/
  3. recovery.conf torna-se recovery.done
  4. psql -c ";SELECT pg_start_backup('backup', true)";
  5. rsync -a -v -e ssh /opt/pgsql91/data/ 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
  6. psql -c ";SELECT pg_stop_backup()";

No novo escravo (10.0.66.1)

  1. crie o recovery.conf : cp recovery.done to recovery.conf
  2. vi recovery.conf alterar o endereço IP: primary_conninfo = 'host=10.0.66.2'
  3. iniciar postgresql

Então minhas perguntas agora são:

  1. Essa é a maneira correta de trocar de papéis?
  2. Alguém automatizou esse processo, se sim, o que você fez?
  3. Se a replicação síncrona estiver habilitada, notei que o novo servidor mestre não confirmará nenhuma transação porque está aguardando a resposta do escravo. No entanto, não há escravo porque o outro servidor, o antigo mestre, está inativo. Isso está correto ou preciso desabilitar temporariamente a replicação síncrona enquanto o novo escravo estiver inativo?
postgresql failover
  • 3 respostas
  • 28937 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