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 / user-25146

Kris Gruttemeyer's questions

Martin Hope
Kris Gruttemeyer
Asked: 2018-05-09 10:22:01 +0800 CST

Dados de pré-preparação fazem com que o custo do plano de execução dispare

  • 5

Eu tenho uma consulta problemática que estamos tentando ajustar. Um dos nossos primeiros pensamentos foi pegar uma parte de um plano de execução maior e armazenar esses resultados em uma tabela temporária intermediária e, em seguida, realizar as outras operações.

O que estou observando é que, quando inserimos os dados em uma tabela temporária, o custo do plano de execução aumenta (22 -> 1,1k). Agora, isso tem o benefício de permitir que o plano seja paralelo, o que reduziu o tempo de execução em 20%, mas não vale o uso muito maior de CPU por execução em nosso caso.

Estamos usando o SQL Server 2016 SP2 com o CE legado ativado.

Plano original (custo ~ 20):

Plano de baixo custo

https://www.brentozar.com/pastetheplan/?id=ry-QGnkCM

SQL original:

WITH Object1(Column1, Column2, Column3, Column4, Column5, Column6)
AS
(
    SELECT  Object2.Column1, 
            Object2.Column2, 
            Object3.Column3, 
            Object3.Column4, 
            Object3.Column5, 
            Object3.Column6
    FROM Object4 AS Object5
    INNER JOIN Object6 AS Object2 ON Object2.Column2 = Object5.Column2 AND Object2.Column7 = 0
    INNER JOIN Object7 AS Object8 ON Object8.Column8 = Object2.Column9 AND Object8.Column7 = 0
    INNER JOIN Object9 AS Object3 ON Object3.Column10 = Object8.Column11 AND Object3.Column7 = 0
    INNER JOIN Object10 AS Object11 ON Object2.Column1 = Object11.Column1
    WHERE   Object8.Column12 IS NULL AND
            Object8.Column13 = Object5.Column13 AND 
            Object3.Column3 = Object5.Column3 AND 
            Object11.Column14 = Variable1
)
insert Object12
SELECT  Object13.Column2,
        Object13.Column3,
        MIN(Object13.Column4) AS Column15,
        MAX(Object13.Column4) AS Column16,
        COUNT(DISTINCT (CASE WHEN Object13.Column5 = 1 THEN Object13.Column1 END)) AS Column17,
        COUNT(DISTINCT (CASE WHEN Object13.Column6 = 0 THEN Object13.Column1 END)) AS Column18,
        COUNT(DISTINCT Object13.Column1) AS Column19
FROM Object1 AS Object13
GROUP BY Object13.Column2, Object13.Column3 OPTION (RECOMPILE) 

Novo plano (com a área destacada em azul acima é pré-preparado em uma tabela temporária - Custo ~ 1,1k):

insira a descrição da imagem aqui

https://www.brentozar.com/pastetheplan/?id=rycqG3JRf

Novo SQL:

SELECT  Object1.Column1,
        Object1.Column2,
        MIN(Object2.Column3) AS Column4,
        MAX(Object2.Column3) AS Column5,
        COUNT(DISTINCT (CASE WHEN Object2.Column6 = 1 THEN Object1.Column7 END)) AS Column8,
        COUNT(DISTINCT (CASE WHEN Object2.Column9 = 0 THEN Object1.Column7 END)) AS Column10,
        COUNT(DISTINCT Object1.Column7) AS Column11
from Object3 Object1
join Object4 Object2 on Object2.Column12 = Object1.Column13 and Object2.Column2 = Object1.Column2
where Object2.Column14 = 0
GROUP BY Object1.Column1, Object1.Column2 OPTION (RECOMPILE) 

Alguém pode nos ajudar a entender porque o novo plano teria um custo tão maior? Ficarei feliz em fornecer informações adicionais sobre tabelas/índices abaixo, se necessário.

No caso do plano original, percebemos que ele está fazendo uma inserção em vez de uma seleção. Mesmo assim, o select não deveria (na nossa cabeça) ser muito mais caro.

Este é o plano de execução real. É uma preocupação porque, devido ao custo do plano imensamente mais alto, ele é paralelo. Portanto, usando CPU mais alta. Além disso, estamos curiosos para saber por que o custo do plano aumenta tanto para algo como pré-encenar os dados, o que geralmente o aproxima, se não melhor, do custo original.

A tabela temporária é indexada na segunda consulta como um PK clusterizado composto em Object1.Column13 e Object1.Column2. Isso corresponde às colunas (e ordem) do Object4. Adicionar uma MAXDOPdica é uma opção, mas isso também é um exercício acadêmico de 'por que no mundo o custo sobe tanto'?

Adicionar OPTION (ORDER GROUP)à segunda consulta resulta em nenhuma alteração, mesmos operadores/custos.

NOTAS:

  • Object9 na primeira consulta é o mesmo objeto que Object4 na segunda.
sql-server performance
  • 1 respostas
  • 404 Views
Martin Hope
Kris Gruttemeyer
Asked: 2017-02-28 09:32:47 +0800 CST

Falha no trabalho de captura do CDC/alterações na coluna da tabela CT após a aplicação de 2014 SP2+CU4

  • 7

Tivemos um problema com o CDC em que o trabalho de captura falhou e não foi reiniciado. Foi em um ambiente DEV, então não há mal nenhum, mas alguém viu esses erros ou sabe exatamente o que deu errado com o CDC?

SQL 2014 EE 12.0.5540 - AG de 2 nós com SSISDB

insira a descrição da imagem aqui

O procedimento ou função sp_batchinsert_1663605265 tem muitos argumentos especificados. Para obter mais informações, consulte a exibição de gerenciamento dinâmico sys.dm_cdc_errors

O processo de verificação de log falhou ao construir um comando replicado do número de sequência de log (LSN) {00002d0d:0000f11f:0002}. Faça backup do banco de dados de publicação e entre em contato com os Serviços de Atendimento ao Cliente. Para maiores informações

O processo de Varredura de Log falhou ao processar registros de log. Consulte os erros anteriores na sessão atual para identificar a causa e corrigir quaisquer problemas associados. Para obter mais informações, consulte a exibição de gerenciamento dinâmico sys.dm_cdc_errors

Tentamos descartar e recriar o trabalho de captura usando sp_cdc_drop_jobabd sp_cdc_add_job. Também tentamos fazer failover para o outro nó, bem como reinicializações do servidor/serviço. Nada parecia deixar o CDC reiniciar-se.

Aplicamos o CU4 na sexta-feira por meio do patch contínuo de AG, para que estejamos no melhor e mais recente. Esse problema surgiu logo após o patch e o failover.

Adicionado resultado da consulta de log

insira a descrição da imagem aqui

sql-server sql-server-2014
  • 1 respostas
  • 4494 Views
Martin Hope
Kris Gruttemeyer
Asked: 2016-07-26 11:10:28 +0800 CST

Falha de inicialização do serviço SQL Server 2014 (12.0.4439.1) para SP2 (12.5000)

  • 2

No que parece ser estranhamente familiar ao tão famoso fiasco do SSISDB SP1, encontrei um obstáculo ao atualizar nosso servidor DEV para o SQL 2014 SP2.

A versão base era SP1+CU5 (12.0.4439.1). Temos o SSISDB instalado e está em um AG. Executei o pacote de atualização no secundário e recebi um erro informando que o SQL Agent não pôde iniciar.

Eu fui e verifiquei os serviços via gerenciador de configuração e vi que nenhum dos serviços voltou. Aqui está o que o arquivo de log me deu:

2016-07-25 15:02:44.76 spid5s      Database 'master' is upgrading script 'SSIS_hotfix_install.sql' from level 201331031 to level 201331592.
2016-07-25 15:02:45.89 spid5s      Error: 945, Severity: 14, State: 2.
2016-07-25 15:02:45.89 spid5s      Database 'SSISDB' cannot be opened due to inaccessible files or insufficient memory or disk space.  See the SQL Server errorlog for details.
2016-07-25 15:02:45.95 spid5s      Error: 912, Severity: 21, State: 2.
2016-07-25 15:02:45.95 spid5s      Script level upgrade for database 'master' failed because upgrade step 'SSIS_hotfix_install.sql' encountered error 945, state 2, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
2016-07-25 15:02:45.95 spid5s      Error: 3417, Severity: 21, State: 3.
2016-07-25 15:02:45.95 spid5s      Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.
2016-07-25 15:02:45.95 spid5s      SQL Server shutdown has been initiated
2016-07-25 15:02:45.95 spid5s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.

Alguém mais experimentou isso? Como faço para trazer essa coisa de volta? Eu realmente preciso restaurar o banco de dados mestre?

Se precisar de alguma informação adicional, é só me avisar. Este é um secundário de não produção com o qual isso aconteceu, então não estamos lidando com tempo de inatividade ou quebra de SLAs. Se este é o mesmo problema que encontramos com o SP1, eu definitivamente gostaria de divulgar.

sql-server ssis
  • 1 respostas
  • 823 Views
Martin Hope
Kris Gruttemeyer
Asked: 2015-07-22 09:20:43 +0800 CST

Log shipping grandes bancos de dados - e o log?

  • 8

No momento, estou configurando o envio de log de um banco de dados grande (aproximadamente 1,5 TB) e estou me perguntando o que posso fazer sobre o arquivo de log.

Do jeito que está, quero seguir os seguintes passos:

  1. Altere o banco de dados para recuperação COMPLETA
  2. Faça backup COMPLETO (5-6 horas) no primário
  3. Restaurar backup COMPLETO para secundário (deixando em NORECOVERY)
  4. Faça backup do DIFF no primário
  5. Restaurar backup DIFF para secundário (ainda em NORECOVERY)
  6. Inicialize o envio de log usando 'O banco de dados já está inicializado'

O problema é que, enquanto estou fazendo o backup completo, o arquivo de log será preenchido mais rapidamente do que o (s) backup (s) pode (m) ser concluído (s).

Quais opções eu tenho para evitar que o arquivo de log fique cheio? Posso apenas fazer backups de log normalmente durante os backups COMPLETOS, pois a restauração DIFF cobrirá todas as transações que ocorrerem durante esse período? Alguém já fez isso antes com um banco de dados desse tamanho, alguma dica/truque para facilitar?

sql-server log-shipping
  • 1 respostas
  • 1314 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-12-18 13:48:04 +0800 CST

Desempenho do MIRROR TO do backup nativo do SQL

  • 5

Estamos mudando para o SQL Server 2014 Expensive Edition Q1 no próximo ano. No momento, estamos no SQL Server 2005 Standard Edition, portanto não temos acesso à MIRROR TOopção tão maravilhosa para nossos backups (usamos os scripts de Ola Hallengren).

No momento, estamos usando o robocopy para copiar arquivos para um compartilhamento de rede, caso nossos backups armazenados localmente sejam corrompidos, perdidos ou decidam tirar férias longas e agradáveis. Minha pergunta é, quando usamos a MIRROR TOopção, é mais/menos intensivo em recursos do que apenas usar robocopy, xcopy ou uma solução Powershell? O que exatamente acontece quando usamos MIRROR TOno SQL Server? Procurando um pouco de uma resposta 'porcas e parafusos', se possível.

sql-server sql-server-2005
  • 1 respostas
  • 557 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-10-31 08:38:32 +0800 CST

saída sp_testlinkedserver detalhada

  • 3

Criei um trabalho de script/agente que pesquisa nossos servidores vinculados a cada 10 minutos para garantir que estejam online. Agora, quando alguém fica offline, gera um e-mail e me notifica. Veja abaixo: insira a descrição da imagem aqui

Agora, agora ele usa apenas um passa/falha. O que eu quero fazer é, quando a comunicação entre os servidores ficar offline, gerar não apenas que está offline, mas também o motivo. Semelhante à leitura que você obtém do SSMS quando testa um servidor vinculado e está offline:

insira a descrição da imagem aqui

Isso é possível? Procurei parâmetros detalhados adicionais que possam me ajudar a fazer isso, mas não consegui encontrar nenhum. As informações são geradas no SSMS, o que me leva a acreditar que existe alguma maneira de obtê-las, só não sei como.

Obrigado como sempre pessoal!

ATUALIZADO Tive que adicionar algumas funcionalidades específicas do sistema a isso, bem como meu próprio SQL que eu já havia construído, mas o relatório de erros está online. Funciona com nossos servidores SQL e nossos ambientes iSeries/400. Aqui está o que ele cospe agora:

insira a descrição da imagem aqui

Obrigado novamente por toda a ajuda neste. Pode ser necessário postar isso no SSC para que outros possam usá-lo.

sql-server linked-server
  • 2 respostas
  • 4197 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-10-15 12:38:52 +0800 CST

TempDB não selecionável para plano de manutenção DBCC

  • 2

Estou tentando limpar alguns de nossos planos de manutenção e notei que nosso TempDB não está recebendo sua dose semanal de DBCC CHECKDB. Tentei acessar o plano de manutenção e verificar se ele está lá, mas não está aparecendo na área da caixa de seleção. Alguma ideia de por que isso aconteceria ou tem alguma indicação para tornar o tempDB selecionável novamente? Sei que sempre posso adicionar uma tarefa Executar SQL, mas gostaria que tudo isso fosse resolvido em uma etapa pelo plano de manutenção. Eu também tentei criar um novo plano e tentei selecioná-lo dessa forma, ainda sem alegria.

É um ambiente DW, 2008R2, 256 GB de RAM, 64 núcleos (HT habilitado). Nossos arquivos/logs TempDB estão em um cartão FusionIO sozinhos, então não há contenção.

Obrigado novamente!

sql-server tempdb
  • 1 respostas
  • 1410 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-09-16 12:21:28 +0800 CST

SSMS 2008/2014 mostrando valores diferentes para tamanhos de arquivo TempDB

  • 0

Aqui está uma divertida. Na semana passada, reconfigurei os tamanhos de arquivo iniciais em nosso banco de dados tempdb para 1 GB cada. Tivemos um evento algumas semanas atrás que trancou nosso servidor devido a uma tabela sem índices sendo totalmente martelada. Isso fez com que nossos três arquivos tempdb aumentassem. Eu os redimensionei usando o SSMS 2014 e eles deveriam ter redefinido para o tamanho configurado no domingo passado, quando reiniciamos o servidor. Eles não o fizeram e agora estou vendo uma diferença nas informações que o SSMS está retornando para esses arquivos.

Nosso servidor é 2008 R2, aqui estão as diferentes visualizações do SSMS:

2008:

insira a descrição da imagem aqui

2014:

insira a descrição da imagem aqui

Aqui estão os arquivos como eles estão atualmente no próprio servidor:

insira a descrição da imagem aqui

Parece que o SSMS 2014 está retornando as informações corretas, mas o SSMS 2008 não. Este é um problema conhecido que alguém já viu antes? Em caso afirmativo, o que está causando isso? O 2014 tenta armazenar essas informações de forma diferente do 2008 R2 e nega os valores configurados do 2008?

Agora, não houve eventos de crescimento automático que aconteceram depois que o servidor foi reiniciado (verifiquei o rastreamento padrão e não houve eventos) Dadas essas informações, o que você acha que meu melhor curso de ação é redimensionar esses arquivos adequadamente. Estou totalmente bem em aumentar todos os arquivos para 2 GB, mas esses arquivos tempdb dificilmente estão sendo usados ​​(<5% de uso em todos eles).

Os servidores não estão pegando fogo nem nada e a produção está funcionando bem, mas definitivamente queremos todos os arquivos tempdb configurados com o mesmo tamanho.

EDIT: Resultado da consulta solicitada

insira a descrição da imagem aqui

sql-server sql-server-2008-r2
  • 1 respostas
  • 236 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-09-11 06:11:05 +0800 CST

Puxar as consultas principais retorna NULL no plano de consulta e no texto sql

  • 4

Estou usando o seguinte código para extrair nossas 20 principais consultas (ordenadas por CPU):

SELECT TOP 20 qs.sql_handle
    ,qs.execution_count
    ,qs.total_worker_time AS [Total CPU]
    ,qs.total_worker_time / 1000000 AS [Total CPU in Seconds]
    ,(qs.total_worker_time / 1000000) / qs.execution_count AS [Average CPU in Seconds]
    ,qs.total_elapsed_time
    ,qs.total_elapsed_time / 1000000 AS [Total Elapsed Time in Seconds]
    ,st.TEXT
    ,qp.query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC

No entanto, estou vendo isso: insira a descrição da imagem aqui

Alguém pode esclarecer por que o plano de consulta e o texto SQL estão aparecendo NULL? Eles são algum tipo de processo do sistema ou aplicativo externo? Estamos executando o SQL 2008 R2.

Obrigado, como sempre, a todos!

sql-server dmv
  • 2 respostas
  • 2692 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-08-26 07:51:17 +0800 CST

Número de arquivos TempDB se não pudermos usar paralelismo

  • 0

Atualmente, temos 4 núcleos e 4 arquivos tempdb. Acabei de entrar como DBA há cerca de 2 meses e, por algum motivo, 3 dos arquivos tempDB têm 2 GB e 1 tem 1 GB. Obviamente, essa não é a melhor prática.

Sendo o TOC e a pessoa proativa que sou, quero redimensionar esse arquivo para combiná-lo com os outros 3.

Mas espere, há mais. Ele é usado em um sistema que possui uma aplicação que ganha performance por NÃO usar nenhum paralelismo, então nós o desabilitamos. MAXDOP = 1, limite de custo = 0. É o único aplicativo no sistema e a instância SQL é basicamente projetada para esse aplicativo.

Quais são os pensamentos de todos sobre isso? Isso ajudará com as desacelerações que estamos vendo, dado que nosso MAXDOP = 1? Além disso, quais implicações/problemas devo estar atento ao alterar o tamanho do arquivo? Farei isso à noite, fora do horário de produção.

Obrigado pela ajuda pessoal.

sql-server tempdb
  • 1 respostas
  • 411 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-08-16 05:14:09 +0800 CST

Otimize para cargas de trabalho ad hoc

  • 6

Eu sei o que esta opção faz e como habilitá-la. Minha pergunta é o que aconteceria se eu permitisse isso.

Sem dar muitas informações, nosso sistema de contabilidade é um produto Microsoft Dynamics e usa uma VM, 32 GB de RAM (28 GB disponíveis para SQL Server [2008 R2]). Eles pediram que o fornecedor viesse e desse uma olhada em nossa configuração para resolver certos problemas de desempenho que a equipe de contabilidade tem observado. Eles até pediram a outro DBA para dar uma olhada em nossa configuração. Uma de suas recomendações foi "olhar para os índices ausentes". Poderíamos dizer que quase todas as instâncias do servidor SQL existentes, cada tabela tem um índice não clusterizado exclusivo, não é minha escolha, mas me disseram que fazer qualquer alteração nos índices nas tabelas que o software acessa pode causar problemas de acordo com o fornecedor. A segunda foi habilitar a 'otimização para cargas de trabalho ad hoc'. EU'

Com a otimização para cargas de trabalho ad hoc, sei que os planos de uso único são armazenados como um stub e todo o plano não é realmente mantido em cache até que o plano seja executado duas vezes. Com um sistema como esse, REALMENTE veremos algum tipo de ganho de desempenho? De acordo com o artigo de Kimberly Tripp, executei esta consulta:

SELECT objtype AS [CacheType]
    ,count_big(*) AS [Total Plans]
    ,sum(cast(size_in_bytes AS DECIMAL(18, 2))) / 1024 / 1024 AS [Total MBs]
    ,avg(usecounts) AS [Avg Use Count]
    ,sum(cast((
                CASE 
                    WHEN usecounts = 1
                        THEN size_in_bytes
                    ELSE 0
                    END
                ) AS DECIMAL(18, 2))) / 1024 / 1024 AS [Total MBs - USE Count 1]
    ,sum(CASE 
            WHEN usecounts = 1
                THEN 1
            ELSE 0
            END) AS [Total Plans - USE Count 1]
FROM sys.dm_exec_cached_plans
GROUP BY objtype
ORDER BY [Total MBs - USE Count 1] DESC

e aqui está o resultado que obtenho:

insira a descrição da imagem aqui

Agora, como podemos ver, temos aproximadamente 1,7 GB de planos de uso único. Provavelmente vale a pena ativar essa opção, pois a caixa tem 28 GB disponíveis para o servidor SQL, certo? Bem, estamos falando de liberar talvez 1-1,25 GB, pois os stubs ainda ocupam espaço, mas não tanto. Fiz uma consulta para extrair todos os planos de uso único e obter seu tamanho, nossos maiores planos têm cerca de 1-1,5 MB.

Então, aqui estão minhas perguntas (desculpe, demorou um pouco para chegar a elas):

  • Realmente achamos que veremos um ganho de desempenho mensurável aqui? Em caso afirmativo, como podemos quantificá-lo além de olhar para o espaço usado na consulta acima?
  • Compreensivelmente, hesito em lançar interruptores como este em sistemas de produção. De quais implicações devo ser cauteloso? O cache do procedimento será limpo e reconstruído? Há algum problema sobre o qual devo estar ciente ao ativar isso?
sql-server execution-plan
  • 1 respostas
  • 2079 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-26 10:30:39 +0800 CST

Pergunta diferencial/T-Log LSN

  • 5

Então, esta é agora a minha terceira pergunta sobre este tema. Continuo descobrindo mais e mais do que gostaria de saber e entender sobre como funciona a recuperação COMPLETA.

Fizemos a transição de um banco de dados para COMPLETO ontem, fazendo um backup completo às 7h. Desde então, fazemos backups T-Log a cada hora e diferenciais todas as noites às 00h01. Estou gerando alguns relatórios que podem ser enviados automaticamente por e-mail para mim (automação viva!) e notei algo engraçado com os números LSN. Talvez eu não esteja entendendo como eles funcionam, mas aqui vai.

Imagem do resultado da consulta exibindo arquivos, datas, tamanhos, LSNs, etc desde que iniciamos a recuperação completa ontem:

insira a descrição da imagem aqui

Eu destaquei os LSNs que são confusos para mim e espero que facilite a leitura para todos vocês. Aqui estão minhas perguntas:

  1. O LSN alto para o backup completo é '308000000583700001', os backups diferenciais [Linha 13 na imagem] LSN baixo também não deveriam ser para que o log seja encadeado corretamente? Estou entendendo mal como os arquivos de log completos e diferenciais são sincronizados entre si?

  2. Você notará que o diferencial, obtido às 12h01, tem um LSN alto de '311000000469900001', mas o backup T-Log feito à 1h tem exatamente o mesmo LSN alto. Isso é simplesmente porque não houve atividade e o T-Log simplesmente 'alcançou' para corresponder ao LSN do diferencial?

Estou quebrando a cabeça tentando ter certeza não apenas de como implementar uma estratégia de recuperação como essa, mas também de entender exatamente como todos os LSNs são sincronizados quando gerados.

Obrigado novamente por toda a sua ajuda, como sempre, neste!

Aqui está o SQL usado para extrair este resultado, caso você queira investigar usando seu sistema:

    SELECT TOP 48 CAST(s.database_name as char(10)) AS DB
    ,CAST(' ' as char(1)) + CAST(SUBSTRING(m.physical_device_name, 46, 40) as char(25)) AS FileName
    ,CAST(CAST(s.backup_size / 1000000 AS INT) AS CHAR(4)) AS MBSize
    ,CAST(DATEDIFF(second, s.backup_start_date, s.backup_finish_date) AS CHAR(4)) AS SecsTaken
    ,s.backup_start_date
    ,CAST(s.first_lsn AS CHAR(20)) AS first_lsn
    ,CAST(s.last_lsn AS CHAR(20)) AS last_lsn
    ,CASE s.[type]
        WHEN 'D'
            THEN 'Full'
        WHEN 'I'
            THEN 'Diff'
        WHEN 'L'
            THEN 'TLog'
        END AS BackupType
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    AND backup_start_date > '2014-07-24 07:00:00'
ORDER BY backup_start_date DESC

Da resposta do @Shankys, aqui está a aparência do conjunto de resultados com database_backup_lsn e chockpoint_lsn adicionados à consulta. Como você pode ver, o backup_lsn é o mesmo para todos, referenciando que eles estão vinculados ao backup completo criado ontem. Espero que esta informação ajude qualquer pessoa que esteja tentando entender como os LSNs funcionam!

insira a descrição da imagem aqui

sql-server backup
  • 1 respostas
  • 1094 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-22 08:02:12 +0800 CST

Recuperação COMPLETA e backups diferenciais

  • 4

Vou começar a fazer a transição de vários de nossos bancos de dados para recuperação COMPLETA de SIMPLES. Fiz uma pergunta na semana passada sobre estratégias de implantação e tenho uma pergunta adicional.

Considere isto:

  • Domingo (meia-noite) - Executar backup COMPLETO
  • Segunda a sábado (meia-noite) - Diferenciais de execução
  • Por hora - backup do log de transações

Os backups diferenciais estão basicamente eliminando a necessidade dos logs de transação para aquele dia?

Portanto, se tivéssemos uma falha catastrófica às 22h de terça-feira, faríamos:

  1. Executar backup de log final no(s) banco(s) de dados afetado(s)
  2. Restaurar backup COMPLETO de domingo à noite
  3. Restaurar backup DIFF da noite de segunda-feira
  4. Restaure usando a cadeia de log desde o dia na terça-feira até a hora do desastre.

Se for esse o caso, poderíamos simplesmente remover os backups do log de transações da segunda-feira como parte do plano de manutenção, já que temos um diferencial da noite de segunda-feira? Seria mais inteligente mantê-los para redundância caso o backup DIFF falhe?

sql-server backup
  • 1 respostas
  • 530 Views
Martin Hope
Kris Gruttemeyer
Asked: 2014-07-15 09:41:47 +0800 CST

Mudar de SIMPLES para implicações do modo de recuperação COMPLETO

  • 4

Tenho vários bancos de dados que gostaria de mover para o modo de recuperação TOTAL para que possamos ter o recurso de restauração pontual. Não precisamos dele em todos os nossos bancos de dados, apenas naqueles que são pesados ​​em transações e contêm dados que estão sendo constantemente atualizados.

Eu fiz muitas pesquisas e entendo perfeitamente o que acontece quando você muda para a recuperação COMPLETA, especialmente no que diz respeito ao arquivo de log.

O que estou procurando são algumas sugestões ou 'pegadinhas' que podem surgir da mudança de alguns para o modelo de recuperação COMPLETO.

No momento, planejo fazer um banco de dados por vez, para poder monitorar o crescimento do arquivo de log e determinar a melhor frequência para backups de arquivo de log para garantir que não entremos em uma situação de arquivo de log descontrolado. Também estou ciente de que, assim que mudarmos para a recuperação COMPLETA, precisarei executar um backup completo nesse banco de dados. (Entendo que o modo COMPLETO não será realmente ativado até que façamos isso).

Meu plano também é executar semanalmente um backup completo, limpar os arquivos de log da semana anterior e, basicamente, 'recomeçar'.

Existem outras considerações ou conselhos que seriam úteis. Algo que eu deveria observar? Também executamos reconstruções completas de índices, DBCC CHECKDB e reconstruções de estatísticas uma vez por semana. Há algum problema potencial com essas operações (talvez mude para BULK_LOGGED para esse período de tempo para não explodir o arquivo de log?)

Obrigado por toda sua ajuda!

sql-server-2008-r2 backup
  • 2 respostas
  • 7666 Views
Martin Hope
Kris Gruttemeyer
Asked: 2013-06-21 10:21:25 +0800 CST

Padrões de importação/exportação do SQL para fluxo de bytes na exportação

  • 1

Então, eu fiz algumas pesquisas e não consigo descobrir isso. Não tenho certeza se é alguma configuração que estou perdendo ou o quê.

Para obter informações básicas, executando o SQL2012, 64 bits, todas essas coisas boas. Percebi que, por algum motivo, quando exporto de uma tabela para um arquivo simples usando uma consulta, o tipo de dados é padronizado como bytestream. No passado, o padrão era sempre DT_STR e funcionava sem problemas.

Aqui está a consulta:

SELECT pin from IncrementalDM_Emails
where email in (select email from [7755_forsql])
order by pin

Aqui está o erro que estou recebendo:

caixa de diálogo de erro

Aqui está o que a exportação está mostrando quando seleciono "Editar mapeamentos..."

Diálogo de mapeamento

Agora, isso pode ser facilmente corrigido simplesmente selecionando "DT_STR" na caixa de diálogo Mapeamentos, mas eu frequentemente exporto usando esse método, então gostaria de descobrir por que está fazendo isso e corrigi-lo para que nem sempre tenha que ir para o Caixa de diálogo Editar mapeamentos.

Tem algo a ver com a consulta e o uso da INfunção? Qualquer ajuda seria muito apreciada!

EDIT: Os dados em ambas as tabelas são armazenados como varchar(50)

sql-server sql-server-2012
  • 1 respostas
  • 1246 Views

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