Instruções SET (Transact-SQL)SET Statements (Transact-SQL)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

A linguagem de programação Transact-SQLTransact-SQL fornece várias instruções SET que alteram a sessão atual que controla informações específicas.The Transact-SQLTransact-SQL programming language provides several SET statements that change the current session handling of specific information. As instruções SET são agrupadas nas categorias mostradas na tabela a seguir.The SET statements are grouped into the categories shown in the following table.

Para obter informações sobre como configurar variáveis locais usando uma instrução SET @local_variable (Transact-SQL).For information about setting local variables with the SET statement, see SET @local_variable (Transact-SQL).

CategoriaCategory InstruçõesStatements
Instruções de data e horaDate and time statements SET DATEFIRSTSET DATEFIRST

SET DATEFORMATSET DATEFORMAT
Instruções de bloqueioLocking statements SET DEADLOCK_PRIORITYSET DEADLOCK_PRIORITY

SET LOCK_TIMEOUTSET LOCK_TIMEOUT
Instruções diversasMiscellaneous statements SET CONCAT_NULL_YIELDS_NULLSET CONCAT_NULL_YIELDS_NULL

SET CURSOR_CLOSE_ON_COMMITSET CURSOR_CLOSE_ON_COMMIT

SET FIPS_FLAGGERSET FIPS_FLAGGER

SET IDENTITY_INSERTSET IDENTITY_INSERT

SET LANGUAGESET LANGUAGE

SET OFFSETSSET OFFSETS

SET QUOTED_IDENTIFIERSET QUOTED_IDENTIFIER
Instruções de execução de consultaQuery Execution Statements SET ARITHABORTSET ARITHABORT

SET ARITHIGNORESET ARITHIGNORE

SET FMTONLYSET FMTONLY
Observação: Este recurso está em modo de manutenção e talvez seja removido em uma versão futura do Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Note: Este recurso está em modo de manutenção e talvez seja removido em uma versão futura do Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SET NOCOUNTSET NOCOUNT

SET NOEXECSET NOEXEC

SET NUMERIC_ROUNDABORTSET NUMERIC_ROUNDABORT

SET PARSEONLYSET PARSEONLY

SET QUERY_GOVERNOR_COST_LIMITSET QUERY_GOVERNOR_COST_LIMIT

SET RESULT SET CACHING (versão prévia)SET RESULT SET CACHING (Preview)
Observação: esse recurso se aplica somente ao SQL Data Warehouse do Azure.Note: This feature applies to Azure SQL Data Warehouse only.

SET ROWCOUNTSET ROWCOUNT

SET TEXTSIZESET TEXTSIZE
Instruções de configurações ISOISO Settings statements SET ANSI_DEFAULTSSET ANSI_DEFAULTS

SET ANSI_NULL_DFLT_OFFSET ANSI_NULL_DFLT_OFF

SET ANSI_NULL_DFLT_ONSET ANSI_NULL_DFLT_ON

SET ANSI_NULLSSET ANSI_NULLS

SET ANSI_PADDINGSET ANSI_PADDING

SET ANSI_WARNINGSSET ANSI_WARNINGS
Instruções estatísticasStatistics statements SET FORCEPLANSET FORCEPLAN

SET SHOWPLAN_ALLSET SHOWPLAN_ALL

SET SHOWPLAN_TEXTSET SHOWPLAN_TEXT

SET SHOWPLAN_XMLSET SHOWPLAN_XML

SET STATISTICS IOSET STATISTICS IO

SET STATISTICS XMLSET STATISTICS XML

SET STATISTICS PROFILESET STATISTICS PROFILE

SET STATISTICS TIMESET STATISTICS TIME
Instruções de transaçõesTransactions statements SET IMPLICIT_TRANSACTIONSSET IMPLICIT_TRANSACTIONS

SET REMOTE_PROC_TRANSACTIONSSET REMOTE_PROC_TRANSACTIONS

SET TRANSACTION ISOLATION LEVELSET TRANSACTION ISOLATION LEVEL

SET XACT_ABORTSET XACT_ABORT

Considerações sobre quando usar instruções SETConsiderations When You Use the SET Statements

  • Todas as instruções SET executadas no tempo de execução, exceto essas instruções, que são executadas no momento da análise:All SET statements run at execute or run time, except these statements, which run at parse time:

    • SET FIPS_FLAGGERSET FIPS_FLAGGER
    • SET OFFSETSSET OFFSETS
    • SET PARSEONLYSET PARSEONLY
    • e SET QUOTED_IDENTIFIERand SET QUOTED_IDENTIFIER
  • Se uma instrução SET for executada em um procedimento armazenado ou gatilho, o valor da opção SET será restaurado depois que o procedimento armazenado ou o gatilho retornar o controle.If a SET statement runs in a stored procedure or trigger, the value of the SET option gets restored after the stored procedure or trigger returns control. Além disso, se uma instrução SET for especificada em uma cadeia de caracteres SQL dinâmica que seja executada usando sp_executesql ou EXECUTE, o valor da opção SET será restaurado depois que o controle for retornado do lote especificado na cadeia de caracteres SQL dinâmica.Also, if you specify a SET statement in a dynamic SQL string that runs by using either sp_executesql or EXECUTE, the value of the SET option gets restored after control returns from the batch that you specified in the dynamic SQL string.

  • Os procedimentos armazenados são executados com as configurações SET especificadas no momento da execução, com exceção de SET ANSI_NULLS e SET QUOTED_IDENTIFIER.Stored procedures execute with the SET settings specified at execute time except for SET ANSI_NULLS and SET QUOTED_IDENTIFIER. Os procedimentos armazenados que especificam que SET ANSI_NULLS ou SET QUOTED_IDENTIFIER usam a configuração especificada no momento da criação do procedimento armazenado.Stored procedures specifying SET ANSI_NULLS or SET QUOTED_IDENTIFIER use the setting specified at stored procedure creation time. Se usada em um procedimento armazenado, qualquer configuração SET será ignorada.If used inside a stored procedure, any SET setting is ignored.

  • A configuração user options de sp_configure permite configurações em todo o servidor e funciona em vários bancos de dados.The user options setting of sp_configure allows for server-wide settings and works across multiple databases. Essa configuração também se comporta como uma instrução SET explícita, a não ser que ocorra no momento de logon.This setting also behaves like an explicit SET statement, except that it occurs at login time.

  • As configurações de banco de dados definidas usando ALTER DATABASE só são válidas em nível do banco de dados e entram em vigor apenas quando definidas explicitamente.Database settings set by using ALTER DATABASE are valid only at the database level and take effect only if explicitly set. As configurações de banco de dados substituem as configurações de opção de instância que são definidas usando sp_configure.Database settings override instance option settings that are set by using sp_configure.

  • Se uma instrução SET usa ON e OFF, você pode especificar qualquer um para várias opções SET.If a SET statement uses ON and OFF, you can specify either one for multiple SET options.

    Observação

    Isso não se aplica às estatísticas relacionadas às opções SET.This doesn't apply to the statistics related SET options.

    Por exemplo, SET QUOTED_IDENTIFIER, ANSI_NULLS ON define QUOTED_IDENTIFIER e ANSI_NULLS como ON.For example, SET QUOTED_IDENTIFIER, ANSI_NULLS ON sets both QUOTED_IDENTIFIER and ANSI_NULLS to ON.

  • As configurações da instrução SET substituem as configurações de opção de banco de dados idênticas que são definidas usando ALTER DATABASE.SET statement settings override identical database option settings that are set by using ALTER DATABASE. Por exemplo, o valor especificado em uma instrução SET ANSI_NULLS substituirá a configuração de banco de dados por ANSI_NULLs.For example, the value specified in a SET ANSI_NULLS statement will override the database setting for ANSI_NULLs. Além disso, algumas configurações de conexão são definidas automaticamente como ON quando um usuário se conecta a um banco de dados com base nos valores especificados pelo uso anterior da configuração de sp_configure user options ou dos valores que se aplicam a todas as conexões ODBC e OLE/DB.Additionally, some connection settings get automatically set ON when a user connects to a database based on the values that go into effect by the previous use of the sp_configure user options setting, or the values that apply to all ODBC and OLE/DB connections.

  • As instruções ALTER, CREATE e DROP DATABASE não aceitam a configuração SET LOCK_TIMEOUT.ALTER, CREATE and DROP DATABASE statements don't honor the SET LOCK_TIMEOUT setting.

  • Quando uma instrução SET global ou de atalho define várias configurações, emitindo o atalho, a instrução SET redefine as configurações anteriores por todas as opções afetadas pela instrução SET de atalho.When a global or shortcut SET statement sets several settings, issuing the shortcut SET statement resets the previous settings for all those options that the shortcut SET statement affects. Se uma opção SET que é afetada por uma instrução SET de atalho for definida depois que a instrução SET de atalho for emitida, a instrução SET individual substituirá as configurações de atalho comparáveis.If a SET option that gets affected by a shortcut SET statement gets set after the shortcut SET statement gets issued, the individual SET statement overrides the comparable shortcut settings. Um exemplo de uma instrução SET de atalho seria SET ANSI_DEFAULTS.An example of a shortcut SET statement would be SET ANSI_DEFAULTS.

  • Quando lotes são usados, o contexto de banco de dados é determinado pelo lote estabelecido usando a instrução USE.When batches are used, the database context is determined by the batch that is established by using the USE statement. Consultas não planejadas e todas as outras instruções que são executadas fora do procedimento armazenado e que estão em lotes herdam as configurações de opção do banco de dados e a conexão estabelecida pela instrução USE.Unplanned queries and all other statements that run outside the stored procedure and that are in batches inherit the option settings of the database and connection established by the USE statement.

  • Solicitações MARS (Vários Conjuntos de Resultados Ativos) compartilham um estado global que contém as configurações de opção SET da sessão mais recente.Multiple Active Result Set (MARS) requests share a global state that contains the most recent session SET option settings. Quando uma solicitação é executada, ela pode modificar as opções SET.When each request executes, it can modify the SET options. As alterações são específicas do contexto de solicitação no qual elas foram definidas e não afetam outras solicitações MARS simultâneas.The changes are specific to the request context in which they're set, and don't affect other concurrent MARS requests. Entretanto, depois que a execução da solicitação é concluída, as novas opções SET são copiadas para o estado de sessão global.However, after the request execution is completed, the new SET options are copied to the global session state. As novas solicitações executadas na mesma sessão depois dessa alteração usarão essas novas configurações de opção SET.New requests that execute under the same session after this change will use these new SET option settings.

  • Quando um procedimento armazenado é executado, seja de um lote ou de outro procedimento armazenado, ele é executado nos valores de opção definidos no banco de dados que contém o procedimento armazenado.When a stored procedure runs from a batch or from another stored procedure, it's run under the option values set up in the database that has the stored procedure. Por exemplo, quando o procedimento armazenado db1.dbo.sp1 chama o procedimento armazenado db2.dbo.sp2, o procedimento armazenado sp1 é executado na configuração de nível de compatibilidade atual do banco de dados db1 e o procedimento armazenado sp2 é executado na configuração de nível de compatibilidade atual do banco de dados db2.For example, when stored procedure db1.dbo.sp1 calls stored procedure db2.dbo.sp2, stored procedure sp1 executes under the current compatibility level setting of database db1, and stored procedure sp2 executes under the current compatibility level setting of database db2.

  • Quando uma instrução Transact-SQLTransact-SQL se refere a objetos que residem em vários bancos de dados, o contexto de banco de dados atual e o contexto de conexão atual se aplicam a essa instrução.When a Transact-SQLTransact-SQL statement concerns objects that are in multiple databases, the current database context and the current connection context applies to that statement. Nesse caso, se a instrução Transact-SQLTransact-SQL estiver em um lote, o contexto de conexão atual será o banco de dados definido pela instrução USE; se a instrução Transact-SQLTransact-SQL estiver em um procedimento armazenado, o contexto de conexão será o banco de dados que contém o procedimento armazenado.In this case, if Transact-SQLTransact-SQL statement is in a batch, the current connection context is the database defined by the USE statement; if the Transact-SQLTransact-SQL statement is in a stored procedure, the connection context is the database that contains the stored procedure.

  • Ao criar e manipular índices em colunas computadas ou exibições indexadas, você deve definir essas opções SET como ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING e ANSI_WARNINGS.When you're creating and manipulating indexes on computed columns or indexed views, you must set these SET options to ON: ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, and ANSI_WARNINGS. Defina a opção NUMERIC_ROUNDABORT como OFF.Set the option NUMERIC_ROUNDABORT to OFF.

    Se não definir uma dessas opções com os valores solicitados, haverá falha nas ações INSERT, UPDATE, DELETE, DBCC CHECKDB e DBCC CHECKTABLE em exibições ou tabelas indexadas com índices em colunas computadas.If you don't set any one of these options to the required values, INSERT, UPDATE, DELETE, DBCC CHECKDB, and DBCC CHECKTABLE actions on indexed views or tables with indexes on computed columns will fail. O SQL ServerSQL Server gerará um erro que lista todas as opções definidas incorretamente.SQL ServerSQL Server will raise an error listing all the options that are incorrectly set. Além disso, o SQL ServerSQL Server processará as instruções SELECT nessas tabelas ou exibições indexadas como se os índices nas colunas computadas ou nas exibições não existissem.Also, SQL ServerSQL Server will process SELECT statements on these tables or indexed views as if the indexes on computed columns or on the views don't exist.

  • Quando SET RESULT_SET_CACHING for ON, o recurso de armazenamento em cache de resultados estará ativado para a sessão atual do cliente.When SET RESULT_SET_CACHING is ON, it enables the result caching feature for the current client session. O Result_set_caching não pode ser ATIVADO para uma sessão se estiver DESATIVADO no nível do banco de dados.Result_set_caching cannot be turned ON for a session if it is turned OFF at the database level. Quando SET RESULT_SET_CACHING for OFF, o recurso de armazenamento em cache de resultados estará desativado para a sessão atual do cliente.When SET RESULT_SET_CACHING is OFF, the result set caching feature is disabled for the current client session. A alteração dessa configuração requer associação na função pública.Changing this setting requires membership in the public role. Aplica-se a: SQL Data Warehouse do Azure Gen2Applies to: Azure SQL Data Warehouse Gen2