SQL SERVER PROFILER – EXECUTANDO TRACE COM FILTRO

Neste post vou mostrar um pouco como utilizar o SQL Server Profiler com filtros.

Muitas vezes precisamos monitorar as execuções de um determinado banco de dados e até mesmo de algum objeto específico. Podemos utilizar o SQL Server Profiler para capturar as informações de um banco de dados específico filtrando por objeto, tempos de execuções, leituras, escritas, cpu, etc.

Para este exemplo iremos trabalhar como seguinte cenário: precisamos monitorar a execução de uma View  chamada vJobCandidateEducation que está em execução no banco de dados AdventureWorks2012.

  • Abrir o SQL Server Profiler;
    1
  • Conectar na instância;
    1
  • Para este exemplo utilizarei o template padrão;
    1
  • Selecionar Event Selection;
    1
  • Desmarcar as opções dos grupos Security Audit, Sessions e TSQL>SQL:BatchStarting;
    1
  • Selecionar Show all columns;
    1
  • Buscar o ID do banco de dados;
    1
  • Selecionar Database ID;
    1
  • Clicar em Columns Filters;
    1
  • Selecionar DatabaseID e informar ID do bando de dados no filtro;
    1
  • Selecionar TextData, informar no nome do objeto entre “%” no filtro e clicar em Ok;
    1
  • Clicar em Run;
    1
  • SQL Server Profiler em execução.
    1

Em uma New Query  vamos ter três execuções de Views, porém só aparecerá no trace a execução da View que colocamos no filtro.

1

SQL Server Profiler após a captura da execução:

1

Até mais!!!

ALTERANDO OWNER DO BANCO DE DADOS

Neste post demonstrarei como alterar o owner do banco de dados.

Podemos realizar esta operação no modo gráfico ou por comando.

Alteração por comando:

  1. Verificar o owner;

    Por código podemos verificar de duas formas:
    Query na sys.databases ou sp_helpdb.
    1

  2. Executar a store procedure sp_changedbowner para alteração;
    1
  3. Verificando após a alteração;
    1

 

Modo gráfico:

  1. Clicar com botão direito sobre o banco de dados e selecionar propriedades;
    1
  2. Acessar as propriedades do banco de dados;
    1
  3. Selecionar Files e alterar o owner;
    1

Até mais!!!

CAPTURANDO PROCESSAMENTO DO SQL SERVER MINUTO A MINUTO COM SYS.DM_OS_RING_BUFFERS

Neste post demonstrarei como capturar o processamento do SQL Server minuto a minuto utilizando a SYS.DM_OS_RING_BUFFERS.

Observação: esta view retorna os últimos 256 minutos.

Scripts: http://sdrv.ms/15jYBU9

Versão para SQL 2008, 2008 R2 e 2012

 

1

Versão para SQL 2005:

1

 

 

Até mais!!!

CONSULTANDO E ALTERANDO OPÇÕES AVANÇADAS NO SQL SERVER

Neste post demonstrarei como visualizar e alterar as opções avançadas do SQL Server.

A partir da versão SQL Server 2008 existe uma view chamada [sys].[configurations] onde podemos visualizar as opções avançadas do SQL Server.

1

Se filtrarmos pela coluna is_advanced igual a 1 irá mostrar todas as opções que são avançadas no SQL Server.

SELECT  [configuration_id],[name],[value],[minimum],[maximum]
               ,[value_in_use],[description],[is_dynamic],[is_advanced]
FROM [master].[sys].[configurations]
where [is_advanced] = 1

Quando executamos a store procedure  sp_configure sem ativar as opções avançadas, as opções de configurações serão limitadas.

1

Para ativar as opções avançadas será necessário executar os passos abaixo:

  1. Ativação;
    1
  2. Reconfiguração.
    1

Após a ativação todas as opções estarão disponíveis para configuração.

1

Podemos observar que o valor que está em uso é igual a zero, o que indica que está desativado.

Segue as formas de visualizar:

1

Quando tentamos executar um recurso avançado desativado que no nosso caso será o uso da store procedure xp_cmdshell  ocorrerá erro.

A procedure xp_cmdshell  é responsavél executar comandos MS-DOS dentro do SQL Server.

Link: http://technet.microsoft.com/pt-br/library/ms175046.aspx

1

Agora realizarei a ativação das store procedure:

1

Após a ativação ou desativação sempre será necessário a execução do comando reconfigure.

1

Caso queira consultar a alteração basta realizar uma das consultas:

1

Executando a store procedure xp_cmdshell após a ativação:

1

Se tentar ativar a uma opção avançada com “show advanced options” desativado uma exceção será gerada.

Ex:

1

Para construção deste post utilizei o SQL Server 2012 Developer.

Até mais!!!

REPARANDO BANCO DE DADOS COM TABELA CORROMPIDA

Neste post vou demonstrar como reparar um banco de dados com tabela corrompida.

1 – Primeiramente executaremos o comando DBCC CHECKDB (‘BizTalkDTADb’) WITH ALL_ERRORMSGS.

DBCC results for ‘BizTalkDTADb’.
Service Broker Msg 9675, State 1: Message Types analyzed: 14.
Service Broker Msg 9676, State 1: Service Contracts analyzed: 6.
Service Broker Msg 9667, State 1: Services analyzed: 3.
Service Broker Msg 9668, State 1: Service Queues analyzed: 3.
Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0.
Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0.
Service Broker Msg 9670, State 1: Remote Service Bindings analyzed: 0.
Service Broker Msg 9605, State 1: Conversation Priorities analyzed: 0.
DBCC results for ‘sys.sysrscols’.
There are 1573 rows in 19 pages for object “sys.sysrscols”.
DBCC results for ‘sys.sysrowsets’.
There are 261 rows in 4 pages for object “sys.sysrowsets”.

There are 3 rows in 1 pages for object “dta_ServiceState”.
Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:735693) is missing a reference from previous page (1:780581). Possible chain linkage problem.
Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:735987) is missing a reference from previous page (1:797797). Possible chain linkage problem.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data), page (1:737741). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -6.
Msg 8928, Level 16, State 1, Line 1
Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data): Page (1:737741) could not be processed. See other errors for details.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data), page (1:738831). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -6.
Msg 8928, Level 16, State 1, Line 1
Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data): Page (1:738831) could not be processed. See other errors for details.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data), page (1:740654). Test (IS_OFF (BUF_IOERR, pBUF->bstat)) failed. Values are 133129 and -4.
Msg 8928, Level 16, State 1, Line 1
Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data): Page (1:740654) could not be processed. See other errors for details.
Msg 8976, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:738831) was not seen in the scan although its parent (1:779016) and previous (1:847346) refer to it. Check any previous errors.
Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:739486) is missing a reference from previous page (1:865528). Possible chain linkage problem.
Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:745241) is missing a reference from previous page (1:830415). Possible chain linkage problem.
Msg 8976, Level 16, State 1, Line 1
Table error: Object ID 469576711, index ID 1, partition ID 72057595638775808, alloc unit ID 72057595657977856 (type In-row data). Page (1:745626) was not seen in the scan although its parent (1:734204) and previous (1:745625) refer to it. Check any previous errors.
Msg 8976, Level 16, State 1, Line 1


CHECKDB found 0 allocation errors and 2370 consistency errors in table ‘Tracking_Parts1’ (object ID 2117582582).
DBCC results for ‘Tracking_Spool2’.
There are 0 rows in 0 pages for object “Tracking_Spool2”.
CHECKDB found 0 allocation errors and 2917 consistency errors in database ‘BizTalkDTADb’.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (BizTalkDTADb).
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

2 – Após a execução vamos alterar o banco de dados SINGLE_USER executando o comando ALTER DATABASE BizTalkDTADb SET SINGLE_USER WITH ROLLBACK IMMEDIATE.

1

3 – Executaremos o comando DBCC CheckDB (‘BizTalkDTADb’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS para reparação do banco de dados.

1

4 – Executaremos o comando ALTER DATABASE BizTalkDTADb SET MULTI_USER para voltar a base de dados para multiusuário.

5 – Após a reparação vamos fazer uma checagem para ver se o banco de dados voltou a sua integridade.

Executar novamente o comando: DBCC CHECKDB (‘BizTalkDTADb’) WITH ALL_ERRORMSGS

1

Podemos observar que após os procediementos o banco de dados voltou a sua integridade.

Até mais!!!!

LINKED SERVER – EXECUTANDO CONSULTA COM A FUNÇÃO OPENQUERY()

Neste post irei configurar um Linked Server entre duas instâncias SQL Server 2012 e utilizarei a função OPENQUERY() para realizar consultas entre as instâncias.

Instâncias utilizadas:

  • LOCALHOST\SQL2012
  • LOCALHOST\TSQL2012

Configuração do Linked Server:

  • Abra o SQL Server Management Studio;
  • Conectar na instância que fará o acesso remoto para criarmos o Linked Server;
    Instância: LOCALHOST\TSQL2012
    Selecionar New Linked Server…
    1
  • Informar a instância remota;
    1
  • Selecionar Security e marcar Be made using the login’s current security context e clicar em Ok;
    1

    *** Neste caso estou usando tudo local, você deve avaliar sua configuração de rede para usar o contexto correto de segurança. para mais informações acessar documentação referente ao Linked Server (http://technet.microsoft.com/PT-BR/library/ms188279.aspx).

  • Após finalizar a configuração será possivel acessar o catalogo da outra instância conforme mostrado abaixo;
    1

Execução de consulta utilizando OPENQUERY():

  • Abrir um New query  na instância onde esta configurado o Linked Server;
  • Executar a consulta para acessar os dados da outra instância;
    *** Neste exemplo está configurado na instância TSQL2012. E o Linked Server está configurado para acessar a instância SQL2012.
    *** 
    Acessaremos o banco de dados TSQL2012.1

Até mais!!!