Utilitário SQLdiagSQLdiag Utility

O utilitário SQLdiag é um utilitário de coleta de diagnósticos para fins gerais que pode ser executado como um aplicativo do console ou um serviço.The SQLdiag utility is a general purpose diagnostics collection utility that can be run as a console application or as a service. É possível usar o SQLdiag para coletar logs e arquivos de dados do SQL ServerSQL Server e de outros tipos de servidores, e usá-lo para monitorar os servidores ao longo do tempo ou para solucionar problemas específicos com seus servidores.You can use SQLdiag to collect logs and data files from SQL ServerSQL Server and other types of servers, and use it to monitor your servers over time or troubleshoot specific problems with your servers. OSQLdiag foi criado para agilizar e simplificar a coleta de informações de diagnóstico para os Serviços de Atendimento ao Cliente da MicrosoftMicrosoft .SQLdiag is intended to expedite and simplify diagnostic information gathering for MicrosoftMicrosoft Customer Support Services.

Observação

Esse utilitário pode ser alterado e os aplicativos ou scripts que dependem dos seus argumentos de linha de comando ou comportamento podem não funcionar corretamente em versões futuras.This utility may be changed, and applications or scripts that rely on its command line arguments or behavior may not work correctly in future releases.

OSQLdiag pode coletar os seguintes tipos de informações de diagnóstico:SQLdiag can collect the following types of diagnostic information:

  • Logs de desempenho do WindowsWindows performance logs

  • Logs de evento do WindowsWindows event logs

  • SQL Server ProfilerSQL Server Profilerrastreamentos traces

  • SQL ServerSQL Serverinformações de bloqueio blocking information

  • SQL ServerSQL Serverinformações de configuração configuration information

    É possível especificar quais tipos de informações você deseja que o SQLdiag colete editando o arquivo de configuração SQLDiag.xml, descrito em uma seção a seguir.You can specify what types of information you want SQLdiag to collect by editing the configuration file SQLDiag.xml, which is described in a following section.

SintaxeSyntax


sqldiag   
     { [/?] }  
     |  
     { [/I configuration_file]  
       [/O output_folder_path]  
       [/P support_folder_path]  
       [/N output_folder_management_option]  
       [/M machine1 [ machine2 machineN]| @machinelistfile]  
       [/C file_compression_type]  
       [/B [+]start_time]  
       [/E [+]stop_time]  
       [/A SQLdiag_application_name]  
       [/T { tcp [ ,port ] | np | lpc } ]  
       [/Q] [/G] [/R] [/U] [/L] [/X] }  
     |  
     { [START | STOP | STOP_ABORT] }  
     |  
     { [START | STOP | STOP_ABORT] /A SQLdiag_application_name }  

ArgumentosArguments

/?/?
Exibe informações de uso.Displays usage information.

/I configuration_file/I configuration_file
Define o arquivo de configuração para o SQLdiag usar.Sets the configuration file for SQLdiag to use. Por padrão, /I é definido como SQLDiag.Xml.By default, /I is set to SQLDiag.Xml.

/O output_folder_path/O output_folder_path
Redireciona a saída do SQLdiag para a pasta especificada.Redirects SQLdiag output to the specified folder. Se a opção /O não for especificada, a saída do SQLdiag será gravada em uma subpasta chamada SQLDIAG na pasta de inicialização do SQLdiag .If the /O option is not specified, SQLdiag output is written to a subfolder named SQLDIAG under the SQLdiag startup folder. Se a pasta SQLDIAG não existir, o SQLdiag tentará criá-la.If the SQLDIAG folder does not exist, SQLdiag attempts to create it.

Observação

O local da pasta de saída é relativo ao local da pasta de suporte que pode ser especificado com /P.The output folder location is relative to the support folder location that can be specified with /P. Para definir um local completamente diferente para a pasta de saída, especifique o caminho completo do diretório para /O.To set an entirely different location for the output folder, specify the full directory path for /O.

/P support_folder_path/P support_folder_path
Define o caminho da pasta de suporte.Sets the support folder path. Por padrão, /P é definido como a pasta na qual o executável SQLdiag reside.By default, /P is set to the folder where the SQLdiag executable resides. A pasta de suporte contém os arquivos de suporte do SQLdiag , como o arquivo de configuração XML, scripts Transact-SQL e outros arquivos que o utilitário usa durante a coleta de diagnósticos.The support folder contains SQLdiag support files, such as the XML configuration file, Transact-SQL scripts, and other files that the utility uses during diagnostics collection. Se você usar essa opção para especificar um caminho alternativo dos arquivos de suporte, o SQLdiag copiará automaticamente os arquivos de suporte necessários na pasta especificada, se ainda não existirem.If you use this option to specify an alternate support files path, SQLdiag will automatically copy the support files it requires to the specified folder if they do not already exist.

Observação

Para definir sua pasta atual como o caminho de suporte, especifique o %cd% na linha de comando como segue:To set your current folder as the support path, specify %cd% on the command line as follows:

SQLDIAG /P %cd%SQLDIAG /P %cd%

/N output_folder_management_option/N output_folder_management_option
Define se o SQLdiag substitui ou renomeia a pasta de saída na inicialização.Sets whether SQLdiag overwrites or renames the output folder when it starts up. Opções disponíveis:Available options:

1 = Substitui a pasta de saída (padrão)1 = Overwrites the output folder (default)

2 = Quando o SQLdiag é iniciado, ele renomeia a pasta de saída a como SQLDIAG_00001, SQLDIAG_00002 e assim por diante.2 = When SQLdiag starts up, it renames the output folder to SQLDIAG_00001, SQLDIAG_00002, and so on. Depois de renomear a pasta de saída atual, o SQLdiag grava a saída na pasta de saída padrão SQLDIAG.After renaming the current output folder, SQLdiag writes output to the default output folder SQLDIAG.

Observação

OSQLdiag não anexa a saída à pasta de saída atual quando é iniciado.SQLdiag does not append output to the current output folder when it starts up. Ele pode apenas substituir a pasta de saída padrão (opção 1) ou renomear a pasta (opção 2) e, em seguida, gravar a saída na nova pasta de saída padrão SQLDIAG.It can only overwrite the default output folder (option 1) or rename the folder (option 2), and then it writes output to the new default output folder named SQLDIAG.

/M machine1 [ machine2machineN] | @machinelistfile/M machine1 [ machine2machineN] | @machinelistfile
Substitui as máquinas especificadas no arquivo de configuração.Overrides the machines specified in the configuration file. Por padrão, o arquivo de configuração é SQLDiag.Xml ou é definido com o parâmetro /I .By default the configuration file is SQLDiag.Xml, or is set with the /I parameter. Ao especificar mais de uma máquina, separe cada nome de máquina com um espaço.When specifying more than one machine, separate each machine name with a space.

Usar o @machinelistfile especifica um nome de arquivo de lista de máquina a ser armazenado no arquivo de configuração.Using @machinelistfile specifies a machine list filename to be stored in the configuration file.

/C file_compression_type/C file_compression_type
Define o tipo de compactação de arquivo usado nos arquivos da pasta de saída do SQLdiag .Sets the type of file compression used on the SQLdiag output folder files. Opções disponíveis:Available options:

0 = nenhum (padrão)0 = none (default)

1 = usa compactação NTFS1 = uses NTFS compression

/B [+]start_time/B [+]start_time
Especifica a data e a hora para começar a coletar dados de diagnóstico no seguinte formato:Specifies the date and time to start collecting diagnostic data in the following format:

AAAAMMDD_HH:MM:SSYYYYMMDD_HH:MM:SS

A hora é especificada usando a notação de 24 horas.The time is specified using 24-hour notation. Por exemplo, 2:00 P.M.For example, 2:00 P.M. deveria ser especificado como 14:00:00.should be specified as 14:00:00.

Use + sem a data (apenas HH:MM:SS) para especificar uma hora relativa à data e à hora atuais.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Por exemplo, se você especificar /B +02:00:00: 00:00, o SQLdiag aguardará duas horas antes de começar a coletar informações.For example, if you specify /B +02:00:00, SQLdiag will wait 2 hours before it starts collecting information.

Não insira espaço entre + e o start_timeespecificado.Do not insert a space between + and the specified start_time.

Se você especificar uma hora de início no passado, o SQLdiag forçará a alteração da data de modo que a data e a hora de início estejam no futuro.If you specify a start time that is in the past, SQLdiag forcibly changes the start date so the start date and time are in the future. Por exemplo, se você especificar /B 01:00:00 e a hora atual for 08:00:00, o SQLdiag forçará a alteração da data de início de modo que a data de início seja no dia seguinte.For example, if you specify /B 01:00:00 and the current time is 08:00:00, SQLdiag forcibly changes the start date so that the start date is the next day.

Observe que o SQLdiag usa a hora local no computador no qual o utilitário está sendo executado.Note that SQLdiag uses the local time on the computer where the utility is running.

/E [+]stop_time/E [+]stop_time
Especifica a data e a hora para interromper a coleta de dados de diagnóstico no seguinte formato:Specifies the date and time to stop collecting diagnostic data in the following format:

AAAAMMDD_HH:MM:SSYYYYMMDD_HH:MM:SS

A hora é especificada usando a notação de 24 horas.The time is specified using 24-hour notation. Por exemplo, 2:00 P.M.For example, 2:00 P.M. deveria ser especificado como 14:00:00.should be specified as 14:00:00.

Use + sem a data (apenas HH:MM:SS) para especificar uma hora relativa à data e à hora atuais.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Por exemplo, se você especificar uma hora de início e uma hora de término usando /B +02:00:00 /E +03:00:00, o SQLdiag aguardará duas horas antes de começar a coletar informações, e coletará informações durante três horas antes de parar e fechar.For example, if you specify a start time and end time by using /B +02:00:00 /E +03:00:00, SQLdiag waits 2 hours before it starts collecting information, then collects information for 3 hours before it stops and exits. Se /B não for especificado, o SQLdiag começará a coletar o diagnóstico imediatamente e terminará na data e hora especificadas por /E.If /B is not specified, SQLdiag starts collecting diagnostics immediately and ends at the date and time specified by /E.

Não insira espaço entre + e o start_time ou end_timeespecificado.Do not insert a space between + and the specified start_time or end_time.

Observe que o SQLdiag usa a hora local no computador no qual o utilitário está sendo executado.Note that SQLdiag uses the local time on the computer where the utility is running.

/A SQLdiag_application_name/A SQLdiag_application_name
Habilita a execução de várias instâncias do utilitário SQLdiag na mesma instância do SQL ServerSQL Server .Enables running multiple instances of the SQLdiag utility against the same SQL ServerSQL Server instance.

Cada SQLdiag_application_name identifica uma instância diferente do SQLdiag.Each SQLdiag_application_name identifies a different instance of SQLdiag. Não existe relação entre uma instância do SQLdiag_application_name e um nome de instância do SQL ServerSQL Server .No relationship exists between a SQLdiag_application_name instance and a SQL ServerSQL Server instance name.

SQLdiag_application_name pode ser usado para iniciar ou interromper uma instância específica de serviço do SQLdiag .SQLdiag_application_name can be used to start or stop a specific instance of the SQLdiag service.

Por exemplo:For example:

SQLDIAG START /A SQLdiag_application_nameSQLDIAG START /A SQLdiag_application_name

Também pode ser usado com a opção /R para registrar uma instância específica do SQLdiag como um serviço.It can also be used with the /R option to register a specific instance of SQLdiag as a service. Por exemplo:For example:

SQLDIAG /R /A SQLdiag_application_nameSQLDIAG /R /A SQLdiag_application_name

Observação

OSQLdiag adiciona automaticamente o prefixo DIAG$ ao nome de instância especificado para SQLdiag_application_name.SQLdiag automatically prefixes DIAG$ to the instance name specified for SQLdiag_application_name. Isso fornecerá um nome de serviço sensato se você registrar o SQLdiag como um serviço.This provides a sensible service name if you register SQLdiag as a service.

/T { tcp [ ,porta ] | np | lpc }/T { tcp [ ,port ] | np | lpc }
Conecta a uma instância do SQL ServerSQL Server usando o protocolo especificado.Connects to an instance of SQL ServerSQL Server using the specified protocol.

tcp [,porta]tcp [,port]
Protocolo TCP/IP.Transmission Control Protocol/Internet Protocol (TCP/IP). Opcionalmente, é possível especificar um número de porta para a conexão.You can optionally specify a port number for the connection.

npnp
Pipes nomeados.Named pipes. Por padrão, a instância padrão do SQL ServerSQL Server escuta nos pipes nomeados \\.\pipe\sql\query e \\.\pipe\MSSQL$<instancename>\sql\query em busca de uma instância nomeada.By default, the default instance of SQL ServerSQL Server listens on named pipe \\.\pipe\sql\query and \\.\pipe\MSSQL$<instancename>\sql\query for a named instance. Não é possível conectar a uma instância do SQL ServerSQL Server usando um nome de pipe alternado.You cannot connect to an instance of SQL ServerSQL Server by using an alternate pipe name.

lpclpc
Chamada de procedimento local.Local procedure call. Esse protocolo de memória compartilhada também estará disponível se o cliente estiver se conectando a uma instância do SQL ServerSQL Server no mesmo computador.This shared memory protocol is available if the client is connecting to an instance of SQL ServerSQL Server on the same computer.

/Q/Q
Executa o SQLdiag no modo silencioso.Runs SQLdiag in quiet mode. /Q suprime todos os prompts, como prompts de senha./Q suppresses all prompts, such as password prompts.

/G/G
Executa o SQLdiag no modo genérico.Runs SQLdiag in generic mode. Quando /G é especificado, ao ser inicializado, o SQLdiag não impõe a verificação de conectividade do SQL ServerSQL Server ou verifica se o usuário é membro da função de servidor fixa sysadmin .When /G is specified, on startup SQLdiag does not enforce SQL ServerSQL Server connectivity checks or verify that the user is a member of the sysadmin fixed server role. Em vez disso, o SQLdiag transfere ao Windows a responsabilidade por determinar se um usuário tem os direitos apropriados para coletar cada diagnóstico solicitado.Instead, SQLdiag defers to Windows to determine whether a user has the appropriate rights to gather each requested diagnostic.

Se /G não for especificado, o SQLdiag verificará se o usuário é membro do grupo Administradores do Windows e não coletará diagnósticos do SQL ServerSQL Server se o usuário não for membro do grupo Administradores .If /G is not specified, SQLdiag checks to determine whether the user is a member of the Windows Administrators group, and will not collect SQL ServerSQL Server diagnostics if the user is not an Administrators group member.

/R/R
Registra o SQLdiag como um serviço.Registers SQLdiag as a service. Quaisquer argumentos de linha de comando especificados ao registrar o SQLdiag como um serviço são preservados para execuções futuras do serviço.Any command line arguments that are specified when you register SQLdiag as a service are preserved for future runs of the service.

Quando o SQLdiag é registrado como um serviço, o nome de serviço padrão fica SQLDIAG.When SQLdiag is registered as a service, the default service name is SQLDIAG. Você pode alterar o nome de serviço usando o argumento /A .You can change the service name by using the /A argument.

Use o argumento de linha de comando START para iniciar o serviço:Use the START command line argument to start the service:

SQLDIAG STARTSQLDIAG START

Você também pode usar o comando net start para iniciar o serviço:You can also use the net start command to start the service:

net start SQLDIAGnet start SQLDIAG

/U/U
Cancela o registro do SQLdiag como um serviço.Unregisters SQLdiag as a service.

Use o argumento /A se também for cancelar o registro de uma instância nomeada do SQLdiag .Use the /A argument also if unregistering a named SQLdiag instance.

/L/L
Executa o SQLdiag no modo contínuo quando uma hora de início ou de término também é especificada com os argumentos /B ou /E , respectivamente.Runs SQLdiag in continuous mode when a start time or end time is also specified with the /B or /E arguments, respectively. OSQLdiag reinicia automaticamente depois que a coleta de diagnósticos é interrompida devido a um desligamento agendado.SQLdiag automatically restarts after diagnostics collection stops due to a scheduled shutdown. Por exemplo, usando o argumento /E ou /X .For example, by using the /E or the /X arguments.

Observação

OSQLdiag ignorar o argumento /L se uma hora de início ou de término não for especificada useo os argumentos de linha de comeo /B e /E comme line arguments.SQLdiag ignores the /L argument if a start time or end time is not specified by using the /B and /E command line arguments.

Usar /L não implica o modo de serviço.Using /L does not imply the service mode. Para usar /L ao executar o SQLdiag como um serviço, especifique-o na linha de comando quando você registrar o serviço.To use /L when running SQLdiag as a service, specify it on the command line when you register the service.

/X/X
Executa o SQLdiag no modo de instantâneo.Runs SQLdiag in snapshot mode. OSQLdiag tira um instantâneo de todo o diagnóstico configurado e desliga automaticamente.SQLdiag takes a snapshot of all configured diagnostics and then shuts down automatically.

START | STOP | STOP_ABORTSTART | STOP | STOP_ABORT
Inicia ou interrompe o serviço do SQLdiag .Starts or stops the SQLdiag service. STOP_ABORT força o serviço a desligar o mais rápido possível sem terminar a coleção de diagnóstico atual.STOP_ABORT forces the service to shut down as quickly as possible without finishing collection of diagnostics it is currently collecting.

Quando esses argumentos de controle de serviço forem usados, eles deverão ser o primeiro argumento usado na linha de comando.When these service control arguments are used, they must be the first argument used on the command line. Por exemplo:For example:

SQLDIAG STARTSQLDIAG START

Somente o argumento /A , que especifica uma instância nomeada do SQLdiag, pode ser usado com START, STOPou STOP_ABORT para controlar uma instância específica do serviço SQLdiag .Only the /A argument, which specifies a named instance of SQLdiag, can be used with START, STOP, or STOP_ABORT to control a specific instance of the SQLdiag service. Por exemplo:For example:

SQLDIAG START /A SQLdiag_application_nameSQLDIAG START /A SQLdiag_application_name

Requisitos de segurançaSecurity Requirements

A não ser que o SQLdiag seja executado no modo genérico (especificando o argumento de linha de comando /G ), o usuário que está executando o SQLdiag deverá ser membro do grupo Administradores do Windows e membro da função de servidor fixa SQL ServerSQL Server sysadmin .Unless SQLdiag is run in generic mode (by specifying the /G command line argument), the user who runs SQLdiag must be a member of the Windows Administrators group and a member of the SQL ServerSQL Server sysadmin fixed server role. Por padrão, o SQLdiag conecta-se ao SQL ServerSQL Server usando a Autenticação do Windows, mas também tem suporte para a Autenticação do SQL ServerSQL Server .By default, SQLdiag connects to SQL ServerSQL Server by using Windows Authentication, but it also supports SQL ServerSQL Server Authentication.

Considerações sobre desempenhoPerformance Considerations

Os efeitos no desempenho da execução do SQLdiag dependem do tipo de dados de diagnóstico que você configurou para coletar.The performance effects of running SQLdiag depend on the type of diagnostic data you have configured it to collect. Por exemplo, se você configurou o SQLdiag para coletar informações de rastreamento do SQL Server ProfilerSQL Server Profiler , quanto maior o número de classes de evento que você escolher para rastreamento, mais o desempenho do servidor será afetado.For example, if you have configured SQLdiag to collect SQL Server ProfilerSQL Server Profiler tracing information, the more event classes you choose to trace, the more your server performance is affected.

O impacto no desempenho ao executar o SQLdiag é aproximadamente equivalente à soma dos custos de coleta do diagnóstico configurado separadamente.The performance impact of running SQLdiag is approximately equivalent to the sum of the costs of collecting the configured diagnostics separately. Por exemplo, coletar um rastreamento com o SQLdiag gera o mesmo custo de desempenho que coletá-lo com o SQL Server ProfilerSQL Server Profiler.For example, collecting a trace with SQLdiag incurs the same performance cost as collecting it with SQL Server ProfilerSQL Server Profiler. O impacto no desempenho ao usar o SQLdiag é desprezível.The performance impact of using SQLdiag is negligible.

Espaço em disco exigidoRequired Disk Space

Como o SQLdiag pode coletar diferentes tipos de informações de diagnóstico, o espaço em disco livre exigido para executar o SQLdiag varia.Because SQLdiag can collect different types of diagnostic information, the free disk space that is required to run SQLdiag varies. A quantidade de informações de diagnóstico coletada depende da natureza e do volume da carga de trabalho que o servidor está processando e pode variar de alguns megabytes a vários gigabytes.The amount of diagnostic information collected depends on the nature and volume of the workload that the server is processing and may range from a few megabytes to several gigabytes.

Arquivos de configuraçãoConfiguration Files

Ao inicializar, o SQLdiag lê o arquivo de configuração e os argumentos de linha de comando que foram especificados.On startup, SQLdiag reads the configuration file and the command line arguments that have been specified. Você especifica os tipos de informações de diagnóstico que o SQLdiag coleta no arquivo de configuração.You specify the types of diagnostic information that SQLdiag collects in the configuration file. Por padrão, o SQLdiag utiliza o arquivo de configuração SQLDiag.Xml, extraído sempre que a ferramenta é executada e localizado na pasta de inicialização do utilitário SQLdiag .By default, SQLdiag uses the SQLDiag.Xml configuration file, which is extracted each time the tool runs and is located in the SQLdiag utility startup folder. O arquivo de configuração utiliza o esquema XML, SQLDiag_schema.xsd, que também é extraído no diretório de inicialização do utilitário por meio do arquivo executável sempre que o SQLdiag é executado.The configuration file uses the XML schema, SQLDiag_schema.xsd, which is also extracted into the utility startup directory from the executable file each time SQLdiag runs.

Editando os arquivos de configuraçãoEditing the Configuration Files

Você pode copiar e editar o SQLDiag.Xml para alterar os tipos de dados de diagnóstico que o SQLdiag coleta.You can copy and edit SQLDiag.Xml to change the types of diagnostic data that SQLdiag collects. Ao editar o arquivo de configuração, sempre use um editor de XML que pode validar o arquivo de configuração em seu esquema XML como o Management StudioManagement Studio.When editing the configuration file always use an XML editor that can validate the configuration file against its XML schema, such as Management StudioManagement Studio. Você não deve editar SQLDiag.Xml diretamente.You should not edit SQLDiag.Xml directly. Em vez disso, faça uma cópia do SQLDiag.Xml e renomeie-a com um novo nome de arquivo na mesma pasta.Instead, make a copy of SQLDiag.Xml and rename it to a new file name in the same folder. Em seguida, edite o novo arquivo e use o argumento /I para passá-lo para o SQLdiag.Then edit the new file, and use the /I argument to pass it to SQLdiag.

Editando o arquivo de configuração quando o SQLdiag é executado como um serviçoEditing the Configuration File When SQLdiag Runs as a Service

Se você já executou o SQLdiag como um serviço e precisa editar o arquivo de configuração, cancele o registro do serviço SQLDIAG especificando o argumento de linha de comando /U e registre o serviço novamente usando o argumento de linha de comando /R .If you have already run SQLdiag as a service and need to edit the configuration file, unregister the SQLDIAG service by specifying the /U command line argument and then re-register the service by using the /R command line argument. Cancelar o registro e registrar novamente o serviço remove informações de configuração antigas que foram armazenadas no registro do Windows.Unregistering and re-registering the service removes old configuration information that was cached in the Windows registry.

Pasta de saídaOutput Folder

Se você não especificar uma pasta de saída com o argumento /O , o SQLdiag criará uma subpasta chamada SQLDIAG na pasta de inicialização do SQLdiag .If you do not specify an output folder with the /O argument, SQLdiag creates a subfolder named SQLDIAG under the SQLdiag startup folder. Para coleção de informações de diagnóstico que envolva rastreamentos de grande volume, como o SQL Server ProfilerSQL Server Profiler , verifique se a pasta de saída está em uma unidade local com espaço suficiente para armazenar a saída de diagnóstico solicitada.For diagnostic information collection that involves high volume tracing, such as SQL Server ProfilerSQL Server Profiler , make sure that the output folder is on a local drive with enough space to store the requested diagnostic output.

Quando o SQLdiag é reiniciado, ele substitui o conteúdo da pasta de saída.When SQLdiag is restarted, it overwrites the contents of the output folder. Para evitar isso, especifique a linha de comando /N 2 .To avoid this, specify /N 2 on the command line.

Processo de coleção de dadosData Collection Process

Quando o SQLdiag é inicializado, ele desempenha as verificações de inicialização necessárias para coletar os dados de diagnóstico que foram especificados no SQLDiag.Xml.When SQLdiag starts, it performs the initialization checks necessary to collect the diagnostic data that have been specified in SQLDiag.Xml. Esse processo pode demorar vários segundos.This process may take several seconds. Depois que o SQLdiag começar a coletar os dados de diagnóstico ao ser executado como um aplicativo do console, uma mensagem é exibida informando que a coleta do SQLdiag começou e que você pode pressionar CTRL+C para interrompê-la.After SQLdiag has started collecting diagnostic data when it is run as a console application, a message displays informing you that SQLdiag collection has started and that you can press CTRL+C to stop it. Quando o SQLdiag é executado como um serviço, uma mensagem semelhante é gravada no log de eventos do Windows.When SQLdiag is run as a service, a similar message is written to the Windows event log.

Se você estiver usando o SQLdiag para diagnosticar um problema que você pode reproduzir, espere até receber essa mensagem antes de reproduzir o problema em seu servidor.If you are using SQLdiag to diagnose a problem that you can reproduce, wait until you receive this message before you reproduce the problem on your server.

OSQLdiag coleta a maioria dos dados de diagnóstico em paralelo.SQLdiag collects most diagnostic data in parallel. Todas as informações de diagnóstico são coletadas por meio da conexão com as ferramentas, tais como o utilitário SQL ServerSQL Server sqlcmd ou o processador de comandos do Windows, exceto quando as informações são coletadas dos logs de desempenho e logs de evento do Windows.All diagnostic information is collected by connecting to tools, such as the SQL ServerSQL Server sqlcmd utility or the Windows command processor, except when information is collected from Windows performance logs and event logs. OSQLdiag utiliza um thread de trabalho por computador para monitorar a coleção de dados de diagnóstico dessas outras ferramentas, frequentemente aguardando a conclusão de várias ferramentas simultaneamente.SQLdiag uses one worker thread per computer to monitor the diagnostic data collection of these other tools, often simultaneously waiting for several tools to complete. Durante o processo de coleta, o SQLdiag roteia a saída de cada diagnóstico para a pasta de saída.During the collection process, SQLdiag routes the output from each diagnostic to the output folder.

Interrompendo a coleção de dadosStopping Data Collection

Depois que o SQLdiag começar a coletar dados de diagnóstico, ele continuará a fazê-lo, a não ser que você o interrompa ou ele esteja configurado para ser interrompido em um determinado horário.After SQLdiag starts collecting diagnostic data, it continues to do so unless you stop it or it is configured to stop at a specified time. Você pode configurar o SQLdiag para ser interrompido em uma hora especificada usando o argumento /E , que permite que você especifique uma hora de parada ou usando o argumento /X , que executa o SQLdiag no modo de instantâneo.You can configure SQLdiag to stop at a specified time by using the /E argument, which allows you to specify a stop time, or by using the /X argument, which causes SQLdiag to run in snapshot mode.

Quando o SQLdiag é interrompido, ele interrompe todos os diagnósticos iniciados.When SQLdiag stops, it stops all diagnostics it has started. Por exemplo, ele interrompe os rastreamentos que o SQL Server ProfilerSQL Server Profiler estava coletando, a execução de scripts Transact-SQLTransact-SQL e qualquer subprocesso gerado durante a coleção de dados.For example, it stops SQL Server ProfilerSQL Server Profiler traces it was collecting, it stops executing Transact-SQLTransact-SQL scripts it was running, and it stops any sub processes it has spawned during data collection. Após a conclusão da coleção de dados de diagnóstico, o SQLdiag é encerrado.After diagnostic data collection has completed, SQLdiag exits.

Observação

Não há suporte para pausar o serviço SQLdiag .Pausing the SQLdiag service is not supported. Se você tentar pausar o serviço SQLdiag , ele será interrompido depois de concluir a coleta de diagnósticos que estava executando quando você o pausou.If you attempt to pause the SQLdiag service, it stops after it finishes collecting the diagnostics that it was collecting when you paused it. Se você reiniciar o SQLdiag depois de interrompê-lo, o aplicativo reiniciará e substituirá a pasta de saída.If you restart SQLdiag after stopping it, the application restarts and overwrites the output folder. Para evitar a substituição da pasta de saída, especifique /N 2 na linha de comando.To avoid overwriting the output folder, specify /N 2 on the command line.

Para interromper o SQLdiag quando estiver sendo executado como um aplicativo do consoleTo stop SQLdiag when running as a console application

Se você estiver executando o SQLdiag como um aplicativo do console, pressione CTRL+C na janela do console em que o SQLdiag está sendo executado para interrompê-lo.If you are running SQLdiag as a console application, press CTRL+C in the console window where SQLdiag is running to stop it. Depois de pressionar CTRL+C, uma mensagem é exibida na janela do console informando que a coleção de dados do SQLdiag está terminando e que você deve esperar a conclusão do processo, o que pode demorar vários minutos.After you press CTRL+C, a message displays in the console window informing you that SQLDiag data collection is ending, and that you should wait until the process shuts down, which may take several minutes.

Pressione Ctrl+C duas vezes para finalizar todos os processos de diagnóstico filho e encerrar imediatamente o aplicativo.Press Ctrl+C twice to terminate all child diagnostic processes and immediately terminate the application.

Para interromper o SQLdiag quando estiver sendo executado como um serviçoTo stop SQLdiag when running as a service

Se você estiver executando o SQLdiag como um serviço, execute SQLDiag STOP na pasta de inicialização do SQLdiag para interrompê-lo.If you are running SQLdiag as a service, run SQLDiag STOP in the SQLdiag startup folder to stop it.

Se você estiver executando várias instâncias do SQLdiag no mesmo computador, será possível transferir o nome de instância do SQLdiag para a linha de comando quando você interromper o serviço.If you are running multiple instances of SQLdiag on the same computer, you can also pass the SQLdiag instance name to on the command line when you stop the service. Por exemplo, para interromper uma instância do SQLdiag chamada Instância 1, use a seguinte sintaxe:For example, to stop a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG STOP /A Instance1  
Observação

/A é o único argumento de linha de comando que pode ser usado START, STOPou STOP_ABORT./A is the only command-line argument that can be used with START, STOP, or STOP_ABORT. Se você precisar especificar uma instância nomeada do SQLdiag com um dos verbos de controle de serviço, especifique /A após o verbo de controle na linha de comando como mostrado no exemplo de sintaxe anterior.If you need to specify a named instance of SQLdiag with one of the service control verbs, specify /A after the control verb on the command line as shown in the previous syntax example. Quando verbos de controle são usados, eles devem ser o primeiro argumento na linha de comando.When control verbs are used, they must be the first argument on the command line.

Para interromper o serviço o mais rapidamente possível, execute SQLDIAG STOP_ABORT na pasta de inicialização do utilitário.To stop the service as quickly as possible, run SQLDIAG STOP_ABORT in the utility startup folder. Esse comando aborta qualquer coleta de diagnóstico que está sendo executada atualmente sem esperar a sua conclusão.This command aborts any diagnostics collecting currently being performed without waiting for them to finish.

Observação

Use SQLDiag STOP ou SQLDIAG STOP_ABORT para interromper o serviço SQLdiag .Use SQLDiag STOP or SQLDIAG STOP_ABORT to stop the SQLdiag service. Não use o Console de Serviços do Windows para interromper o SQLdiag ou outros serviços do SQL ServerSQL Server .Do not use the Windows Services Console to stop SQLdiag or other SQL ServerSQL Server services.

Iniciando e interrompendo automaticamente o SQLdiagAutomatically Starting and Stopping SQLdiag

Para iniciar e interromper automaticamente a coleção de dados em uma hora especificada, use os argumentos /Bstart_time e /Estop_time na notação de 24 horas.To automatically start and stop diagnostic data collection at a specified time, use the /Bstart_time and /Estop_time arguments, using 24-hour notation. Por exemplo, se você estiver solucionando um problema que aparece consistentemente em aproximadamente 02:00:00, poderá configurar o SQLdiag para iniciar automaticamente a coleta de dados de diagnóstico à 01:00 e interrompê-la automaticamente às 03:00:00.For example, if you are troubleshooting a problem that consistently appears at approximately 02:00:00, you can configure SQLdiag to automatically start collecting diagnostic data at 01:00 and automatically stop at 03:00:00. Use os argumentos /B e /E para especificar o horário de início e de parada.Use the /B and /E arguments to specify the start and stop time. Use a notação de 24 horas para especificar as data de início e de parada exatas com o formato AAAAMMDD_HH:MM:SS.Use 24-hour notation to specify an exact start and stop date and time with the format YYYYMMDD_HH:MM:SS. Para especificar uma hora de início ou de parada relativa, anteponha às horas de início e de parada o + e omita a parte da data (AAAAMMDD_) conforme é mostrado no exemplo a seguir, que faz o SQLdiag esperar 1 hora antes de começar a coletar informações e, em seguida, coleta informações por 3 horas antes de ser interrompido e fechar:To specify a relative start or stop time, prefix the start and stop time with + and omit the date portion (YYYYMMDD_) as shown in the following example, which causes SQLdiag to wait 1 hour before it starts collecting information, then it collects information for 3 hours before it stops and exits:

sqldiag /B +01:00:00 /E +03:00:00  

Quando uma start_time relativa é especificada, o SQLdiag inicia em uma hora relativa à data e à hora atuais.When a relative start_time is specified, SQLdiag starts at a time that is relative to the current date and time. Quando uma end_time relativa é especificada, o SQLdiag encerra em uma hora relativa à start_timeespecificada.When a relative end_time is specified, SQLdiag ends at a time that is relative to the specified start_time. Se a data e a hora de início e de parada especificadas estiverem no passado, o SQLdiag forçará a alteração da data de início de modo que a data e a hora de início estejam no futuro.If the start or end date and time that you have specified is in the past, SQLdiag forcibly changes the start date so that the start date and time are in the future.

Isto tem implicações importantes nas datas de início e de término que você escolhe.This has important implications on the start and end dates you choose. Considere o seguinte exemplo:Consider the following example:

sqldiag /B +01:00:00 /E 08:30:00  

Se a hora atual for 08:00, a hora de término passará antes da coleta de diagnóstico começar de fato.If the current time is 08:00, the end time passes before diagnostic collection actually begins. Como o SQLdiag ajusta automaticamente as datas de início e de término para o próximo dia quando ocorrem no passado, nesse exemplo, a coleta de diagnóstico começará às 09:00 de hoje (uma hora de início relativa foi especificada com +) e continuará até às 08:30 da manhã seguinte.Because SQLDiag automatically adjusts start and end dates to the next day when they occur in the past, in this example diagnostic collection starts at 09:00 today (a relative start time has been specified with +) and continues collecting until 08:30 the following morning.

Interrompendo e reiniciando o SQLdiag para coletar diagnósticos diáriosStopping and Restarting SQLdiag to Collect Daily Diagnostics

Para coletar um conjunto de diagnósticos especificado diariamente sem ter que iniciar e interromper manualmente o SQLdiag, use o argumento /L .To collect a specified set of diagnostics on a daily basis without having to manually start and stop SQLdiag, use the /L argument. O argumento /L faz com que o SQLdiag seja executado continuamente reiniciando-se automaticamente após um desligamento agendado.The /L argument causes SQLdiag to run continuously by automatically restarting itself after a scheduled shutdown. Quando /L é especificado e o SQLdiag é interrompido porque atingiu a hora de término com o argumento /E ou porque está sendo executado no modo de instantâneo usando o argumento /X , o SQLdiag reiniciará em vez de fechar.When /L is specified, and SQLdiag stops because it has reached the end time specified with the /E argument, or it stops because it is being run in snapshot mode by using the /X argument, SQLdiag restarts instead of exiting.

O exemplo a seguir especifica que o SQLdiag seja executado no modo contínuo para reiniciar automaticamente depois que a coleta de dados de diagnóstico ocorrer entre 03:00:00 e 05:00:00.The following example specifies that SQLdiag run in continuous mode to automatically restart after diagnostic data collecting occurs between 03:00:00 and 05:00:00.

sqldiag /B 03:00:00 /E 05:00:00 /L  

O exemplo a seguir especifica que o SQLdiag seja executado no modo contínuo para reiniciar automaticamente depois de tirar um instantâneo dos dados de diagnóstico às 03:00:00.The following example specifies that SQLdiag run in continuous mode to automatically restart after taking a diagnostic data snapshot at 03:00:00.

sqldiag /B 03:00:00 /X /L  

Executando o SQLdiag como um serviçoRunning SQLdiag as a Service

Quando você quiser usar o SQLdiag para coletar dados de diagnóstico por longos períodos de tempo durante os quais você precisará fazer logoff do computador no qual o SQLdiag está sendo executado, será possível executá-lo como um serviço.When you want to use SQLdiag to collect diagnostic data for long periods of time during which you might need to log out of the computer on which SQLdiag is running, you can run it as a service.

Para registrar o SQLdiag para ser executado como um serviçoTo register SQLDiag to run as a service

Você pode registrar o SQLdiag para ser executado como um serviço especificando o argumento /R na linha de comando.You can register SQLdiag to run as a service by specifying the /R argument at the command line. Isso registra o SQLdiag para ser executado como um serviçoThis registers SQLdiag to run as a service. O nome do serviço SQLdiag é SQLDIAG.The SQLdiag service name is SQLDIAG. Quaisquer outros argumentos especificados na linha de comando ao registrar o SQLdiag como um serviço são preservados e reutilizados quando o serviço é iniciado.Any other arguments you specify on the command line when you register SQLDiag as a service are preserved and reused when the service is started.

Para alterar o nome de serviço padrão SQLDIAG, use o argumento de linha de comando /A para especificar outro nome.To change the default SQLDIAG service name, use the /A command-line argument to specify another name. OSQLdiag automaticamente adiciona o prefixo DIAG$ a qualquer nome de instância do SQLdiag especificada com /A para criar nomes de serviço sensatos.SQLdiag automatically prefixes DIAG$ to any SQLdiag instance name specified with /A to create sensible service names.

Para cancelar o registro do serviço SQLDIAGTo unregister the SQLDIAG service

Para cancelar o registro do serviço, especifique o argumento /U .To unregister the service, specify the /U argument. Cancelar o registro do SQLdiag como um serviço também exclui as chaves do Registro do Windows do serviço.Unregistering SQLdiag as a service also deletes the Windows registry keys of the service.

Para iniciar ou reiniciar o serviço SQLDIAGTo start or restart the SQLDIAG service

Para iniciar ou reiniciar o serviço SQLDIAG, execute SQLDiag START da linha de comando.To start or restart the SQLDIAG service, run SQLDiag START from the command line.

Se você estiver executando várias instâncias do SQLdiag usando o argumento /A , será possível passar o nome de instância do SQLdiag na linha de comando quando você iniciar o serviço.If you are running multiple instances of SQLdiag by using the /A argument, you can also pass the SQLdiag instance name on the command line when you start the service. Por exemplo, para iniciar uma instância do SQLdiag chamada Instância 1, use a seguinte sintaxe:For example, to start a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG START /A Instance1  

Você também pode usar o comando net start para iniciar o serviço SQLDIAG.You can also use the net start command to start the SQLDIAG service.

Ao reiniciar o SQLdiag, ele substitui o conteúdo na pasta de saída atual.When you restart SQLdiag, it overwrites the contents in the current output folder. Para evitar isso, especifique /N 2 na linha de comando para renomear a pasta de saída quando o utilitário iniciar.To avoid this, specify /N 2 on the command line to rename the output folder when the utility starts.

Não há suporte para pausar o serviço SQLdiag .Pausing the SQLdiag service is not supported.

Executando várias instâncias do SQLdiagRunning Multiple Instances of SQLdiag

Execute várias instâncias do SQLdiag no mesmo computador especificando /ASQLdiag_application_name na linha de comando.Run multiple instances of SQLdiag on the same computer by specifying /ASQLdiag_application_name on the command line. Isso é útil para coletar conjuntos diferentes de diagnósticos simultaneamente da mesma instância do SQL ServerSQL Server .This is useful for collecting different sets of diagnostics simultaneously from the same SQL ServerSQL Server instance. Por exemplo, você pode configurar uma instância nomeada do SQLdiag para executar continuamente coletas de dados leves.For example, you can configure a named instance of SQLdiag to continuously perform lightweight data collection. Então, se algum problema ocorrer no SQL ServerSQL Server, você poderá executar a instância padrão do SQLdiag para coletar o diagnóstico desse problema ou para reunir um conjunto de diagnósticos que os Serviços de Atendimento ao Cliente da MicrosoftMicrosoft solicitaram a você a fim de diagnosticar um problema.Then, if a specific problem occurs on SQL ServerSQL Server, you can run the default SQLdiag instance to collect diagnostics for that problem, or to gather a set of diagnostics that MicrosoftMicrosoft Customer Support Services has asked you to gather to diagnose a problem.

Coletando dados de diagnóstico de instâncias do SQL Server clusterizadoCollecting Diagnostic Data from Clustered SQL Server Instances

OSQLdiag oferece suporte à coleta de dados de diagnóstico de instâncias do SQL ServerSQL Server clusterizadas.SQLdiag supports collecting diagnostic data from clustered SQL ServerSQL Server instances. Para reunir diagnósticos de cluster SQL ServerSQL Server instâncias, certifique-se de que "." é especificado para o nome atributo do <máquina > elemento na configuração do arquivo de SQLDiag e não especificar o /G argumento na linha de comando.To gather diagnostics from clustered SQL ServerSQL Server instances, make sure that "." is specified for the name attribute of the <Machine> element in the configuration file SQLDiag.Xml and do not specify the /G argument on the command line. Por padrão, "." é especificado para o atributo name no arquivo de configuração e o argumento /G é desativado.By default, "." is specified for the name attribute in the configuration file and the /G argument is turned off. Normalmente, você não precisa editar o arquivo de configuração ou alterar a linha de comando ao coletar a partir de uma instância do SQL ServerSQL Server clusterizada.Typically, you do not need to edit the configuration file or change the command line arguments when collecting from a clustered SQL ServerSQL Server instance.

Quando "." está especificado como o nome da máquina, o SQLdiag detecta que está sendo executado em um cluster e recupera simultaneamente informações de diagnóstico de todas as instâncias virtuais do SQL ServerSQL Server instaladas no cluster.When "." is specified as the machine name, SQLdiag detects that it is running on a cluster, and simultaneously retrieves diagnostic information from all virtual instances of SQL ServerSQL Server that are installed on the cluster. Se você deseja coletar informações de diagnóstico de apenas uma instância virtual do SQL ServerSQL Server que está executando em um computador, especifique aquele virtual SQL ServerSQL Server para o nome atributo do <máquina > elemento no SQLDiag.If you want to collect diagnostic information from only one virtual instance of SQL ServerSQL Server that is running on a computer, specify that virtual SQL ServerSQL Server for the name attribute of the <Machine> element in SQLDiag.Xml.

Observação

Para coletar informações de rastreamento do SQL Server ProfilerSQL Server Profiler de instâncias do SQL ServerSQL Server clusterizadas, os compartilhamentos administrativos (ADMIN$) devem estar habilitados no cluster.To collect SQL Server ProfilerSQL Server Profiler trace information from clustered SQL ServerSQL Server instances, administrative shares (ADMIN$) must be enabled on the cluster.

Consulte tambémSee Also

Referência de utilitários de prompt de comando (Mecanismo de Banco de Dados)Command Prompt Utility Reference (Database Engine)