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 / Perguntas / 669
Accepted
brett rogers
brett rogers
Asked: 2011-01-18 13:35:35 +0800 CST2011-01-18 13:35:35 +0800 CST 2011-01-18 13:35:35 +0800 CST

A propriedade IsShutdown do SQL Server é útil para determinar se um banco de dados está em bom estado? [duplicado]

  • 772
Esta pergunta já tem respostas aqui :
Qual é a melhor consulta a ser usada para monitorar o status de um banco de dados do SQL Server? (5 respostas)
Fechado há 5 anos .

Minha empresa tem uma ferramenta que monitora o status de servidores, serviços, bancos de dados etc. Monitoramos vários servidores locais para nossos clientes. Uma verificação simples específica realizada é determinar se um banco de dados do SQL Server está em um estado 'bom' consultando o valor de determinadas propriedades do banco de dados. As quatro propriedades do banco de dados que monitoramos são:

  • é suspeito
  • Está offline
  • IsEmergencyMode
  • está desligado

Esta é a consulta que usamos:

SELECT name AS [SuspectDB],
  DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect],
  DATABASEPROPERTY(name, N'IsOffline') AS [Offline],
  ISNULL(DATABASEPROPERTY(name, N'IsShutdown'), 1) AS [Shutdown],
  DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency]
FROM sysdatabases
WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1)
   OR (DATABASEPROPERTY(name, N'IsOffline') = 1)
   OR (ISNULL(DATABASEPROPERTY(name, N'IsShutdown'), 1) = 1)
   OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1)

Ao testar uma atualização para o SQL Server 2008, parece que alguns de nossos bancos de dados estão retornando um valor 1 (verdadeiro) para a propriedade IsShutdown . Isso nunca foi o caso anteriormente com o SQL Server 2005. A documentação do MSDN para a propriedade simplesmente declara "O banco de dados encontrou um problema na inicialização".

Tanto quanto eu posso dizer, os bancos de dados estão perfeitamente bem. Eles estão ativos, podem ser consultados, etc. Sem problemas.

A propriedade IsShutdown realmente importa para meus propósitos de monitoramento, ou seja, indica que o banco de dados está em um estado ruim? Ou devo apenas removê-lo da minha consulta?

NOTA: Conversando com um de nossos DBAs residentes, eles descobriram que em alguns de nossos novos bancos de dados SQL Server 2008, o fato de a propriedade IsAutoClose estar habilitada pode ter algo a ver com o motivo desses bancos de dados terem um IsShutdown igual a true. Desativar o IsAutoClose parece "consertar" o IsShutdown sendo verdadeiro.

sql-server
  • 3 3 respostas
  • 424 Views

3 respostas

  • Voted
  1. mrdenny
    2011-01-18T23:55:03+08:002011-01-18T23:55:03+08:00

    Uma prática melhor pode ser examinar o status do banco de dados em sys.databases ou sysdatabases. Se o status não for 0, provavelmente há um problema (a menos que você esteja usando espelhamento, envio de log, etc. onde o status do banco de dados não deveria ser 0).

    • 4
  2. Best Answer
    brett rogers
    2011-01-20T09:59:03+08:002011-01-20T09:59:03+08:00

    Ok, depois de muita investigação sobre isso, esta é a minha conclusão:

    Breve história: a propriedade IsShutdown não é importante para monitorar o status dos meus bancos de dados. Mesmo quando definido como True, o banco de dados ainda está em bom estado.

    Longa história: a definição do MSDN para a propriedade IsShutdown está incorreta. Lê-se:

    • O banco de dados encontrou um problema na inicialização

    Essa definição não faz muito sentido dado o nome da propriedade. Na prática, a propriedade IsShutdown parece estar diretamente relacionada à propriedade IsAutoClose. Se o fechamento automático tiver encerrado corretamente o banco de dados depois que nenhuma conexão estiver mais ativa, IsShutdown será definido como True. Uma vez que o banco de dados gira de volta (por assim dizer), IsShutdown é definido de volta para False.

    Essa teoria é apoiada pelo fato de que existe uma coluna is_cleanly_shutdown em sys.databases. O valor dessa coluna é sempre igual ao valor de IsShutdown, ou seja, são iguais.

    A definição incorreta da propriedade é provavelmente o que fez com que o desenvolvedor do qual herdei essa consulta a incluísse em sua verificação de status do banco de dados. Agora removi a verificação dessa propriedade da consulta.

    • 2
  3. AndrewSQL
    2011-01-18T18:47:27+08:002011-01-18T18:47:27+08:00

    Acho que você pode ter respondido sua própria pergunta com a nota sobre AutoClose. Uma coisa que acho estranho é que você está verificando essas propriedades por meio da exibição de compatibilidade (sysdatabases) em vez de obter o status por meio da exibição do sistema (sys.databases). Existe uma razão específica para isso? Meu palpite é que você ainda oferece suporte a instâncias SQL 2000, mas, caso contrário, talvez queira atualizar seu código de monitoramento para aproveitar todos os dados disponíveis nas exibições do sistema SQL 2005+.

    Para um desempenho um pouco melhor, considere desativar o fechamento automático, a menos que você tenha um grande número de bancos de dados no sistema e realmente precise recuperar os recursos.

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

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

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 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
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +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