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 / 260466
Accepted
Ali
Ali
Asked: 2020-02-25 11:46:31 +0800 CST2020-02-25 11:46:31 +0800 CST 2020-02-25 11:46:31 +0800 CST

Monitoramento de banco de dados SQL Server 2000

  • 772

Eu nunca trabalhei no SQL Server 2000 e recebi um requisito para verificar a captura das seguintes informações em um banco de dados específico.

DBName CurrentDate SPID BatchDuration ApplicationName HostName LoginName SQLQuery

Tentei a consulta abaixo, mas em primeiro lugar ela não retornou nenhuma informação ou não atende ao requisito, pois não captura o ApplicationName e o SQL Text.

SELECT
    DB_NAME(dbid) as dbName
,   CURRENT_TIMESTAMP as CurrentDate
,   P.spid
,   right(convert(varchar, 
        dateadd(ms, datediff(ms, P.last_batch, getdate()), '2000-01-01'), 
        121), 12) as 'batch_duration'
,   P.program_name
,   P.hostname
,   P.loginame
,   P.cmd
from master.dbo.sysprocesses P
where P.spid > 50
and      P.status not in ('background', 'sleeping')
and      P.cmd not in ('AWAITING COMMAND'
                ,'MIRROR HANDLER'
                ,'LAZY WRITER'
                ,'CHECKPOINT SLEEP'
                ,'RA MANAGER')
and DB_NAME(dbid) ='master'
order by batch_duration desc

Além disso, quando tento configurar este script via SQL Agent, ele só permite executá-lo a cada intervalo de um minuto. Existe alguma outra maneira melhor de executá-lo a cada 5 segundos? ou talvez eu deva usar outro método, por exemplo, capturando os logins com as informações necessárias via gatilho?

Qualquer entrada será apreciada.

sql-server-2000 t-sql
  • 1 1 respostas
  • 77 Views

1 respostas

  • Voted
  1. Best Answer
    Ali
    2020-02-25T14:00:48+08:002020-02-25T14:00:48+08:00

    Encontrei uma solução online: http://strictlysql.blogspot.com/2010/07/lock-monitoring-sql-server-2000.html . Modificou o script para atender ao meu requisito.

    1. Criamos uma tabela em nosso banco de dados de monitoramento:

      CREATE TABLE MyDBMonitoring ( DatabaseName varchar(35), Time datetime, SPID INT, Query varchar(1000), QueryStatus VARCHAR(35), LoginName VARCHAR(50), HostName VARCHAR(50), LastBatch datetime, Command VARCHAR(50), ProgramName VARCHAR(100), OpenTransactions INT
      )

    2. Modifiquei o script do link e selecionei apenas os campos que preciso e inseri o resultado na tabela de monitoramento configurando um SQL Agent Job no Servidor. Fornecerá o resultado ao cliente em dois dias.

      CREATE TABLE #sp_lock_details ( spid INT, dbid INT, objid INT, indid INT, TYPE VARCHAR(100), resource VARCHAR(1000), mode VARCHAR(10), status VARCHAR(50) )

      INSERT INTO #sp_lock_details EXEC Sp_lock

      DECLARE @id INT DECLARE @max INT DECLARE @spid INT DECLARE @exec_qry VARCHAR(500) DECLARE @monitored_dt DATETIME

      SET @monitored_dt = Getdate()

      CREATE TABLE [#sysproc] ( id INT IDENTITY(1, 1), [spid] [SMALLINT] NOT NULL, [dbname] NVARCHAR COLLATE sql_latin1_general_cp1_cs_as NULL, [cpu] [INT] NOT NULL, [memusage] [INT] NOT NULL , [status] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, [loginame] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, [hostname] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, [lastwaittype] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, [last_batch] [DATETIME] NOT NULL, [cmd] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, [program_name] NCHAR COLLATE sql_latin1_general_cp1_cs_as NOT NULL, QUERY VARCHAR(500), open_tran INT ) ON [PRIMARY]

      CREATE TABLE #dbccinfo (eventype VARCHAR(255), param INT, eventinfo VARCHAR(255) )

      INSERT INTO #sysproc (spid, dbname, cpu, memusage, status, loginname, hostname, lastwaittype, last_batch, cmd, program_name, open_tran) SELECT spid, Db_name(MASTER.dbo.sysprocesses.dbid) AS dbname, cpu, memusage, status , loginname, hostname, lastwaittype, last_batch, cmd, program_name, open_tran FROM MASTER.dbo.sysprocesses WHERE spid > 50

      SET @max = @@IDENTITY SET @id = 1

      WHILE ( @id <= @max ) BEGIN SELECT @spid = spid FROM #sysproc WHERE id = @id

        SET @exec_qry = 'DBCC INPUTBUFFER(' + CONVERT(VARCHAR(3), @spid) + ')'
      
        INSERT INTO #dbccinfo
        EXEC (@exec_qry)
      
        UPDATE sys
        SET    QUERY = eventinfo
        FROM   #sysproc sys,
               #dbccinfo
        WHERE  @id = id
      
        TRUNCATE TABLE #dbccinfo
      
        SET @id = @id + 1
      

      FIM

      INSERT INTO dba.dbo.MyDBAMonitoring ( DatabaseName, Time, SPID, Query, QueryStatus, LoginName, HostName, LastBatch, Command, ProgramName, OpenTransactions ) SELECT dbname AS DatabaseName, CURRENT_TIMESTAMP AS 'TIME', #sysproc.spid AS SPID, QUERY, #sysproc.status AS query_status, loginname, hostname, last_batch, cmd, program_name, open_tran FROM #sysproc, #sp_lock_details WHERE #sp_lock_details.spid = #sysproc.spid e dbname = 'ODS;

      DROP TABLE #dbccinfo DROP TABLE #sysproc DROP TABLE #sp_lock_details

    • 0

relate perguntas

  • MS SQL: Use o valor calculado para calcular outros valores

  • Como posso saber se um banco de dados SQL Server ainda está sendo usado?

  • Erro ao mover SQL Server 2000 para SQL Server 2005 Erro NOLOCK

  • Implementando uma consulta PIVOT

  • SQL Server 2000: listar e desativar todos os gatilhos

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