Criar exibições indexadasCreate Indexed Views

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Este tópico descreve como criar índices em uma exibição.This topic describes how to create indexes on a view. O primeiro índice criado em uma exibição deve ser um índice clusterizado exclusivo.The first index created on a view must be a unique clustered index. Depois que o índice clusterizado exclusivo for criado, você poderá criar mais índices não clusterizados.After the unique clustered index has been created, you can create more nonclustered indexes. Criar um índice clusterizado exclusivo em uma exibição melhora o desempenho da consulta porque a exibição é armazenada no banco de dados da mesma forma que uma tabela com um índice clusterizado é armazenada.Creating a unique clustered index on a view improves query performance because the view is stored in the database in the same way a table with a clustered index is stored. O otimizador de consulta pode usar exibições indexadas para acelerar a execução da consulta.The query optimizer may use indexed views to speed up the query execution. A exibição não precisa estar referenciada na consulta para o otimizador considerá-la para uma substituição.The view does not have to be referenced in the query for the optimizer to consider that view for a substitution.

Antes de começarBefore You Begin

As seguintes etapas são necessárias para criar uma exibição indexada e são essenciais para o êxito da implementação da exibição indexada:The following steps are required to create an indexed view and are critical to the successful implementation of the indexed view:

  1. Verifique se as opções SET estão corretas para todas as tabelas existentes que serão referenciadas na exibição.Verify the SET options are correct for all existing tables that will be referenced in the view.
  2. Verifique se as opções SET da sessão estão definidas corretamente antes de criar qualquer tabela nova e a exibição.Verify that the SET options for the session are set correctly before you create any tables and the view.
  3. Verifique se a definição de exibição é determinística.Verify that the view definition is deterministic.
  4. Crie a exibição usando a opção WITH SCHEMABINDING.Create the view by using the WITH SCHEMABINDING option.
  5. Crie o índice clusterizado exclusivo na exibição.Create the unique clustered index on the view.

Importante

Ao executar DML1 em uma tabela referenciada por um grande número de exibições indexadas ou com menos exibições indexadas, mas muito complexas, essas exibições indexadas referenciadas também terão que ser atualizadas.When executing DML1 on a table referenced by a large number of indexed views, or fewer but very complex indexed views, those referenced indexed views will have to be updated as well. Como resultado, o desempenho da consulta DML poderá diminuir significativamente ou, em alguns casos, um plano de consulta poderá nem mesmo ser produzido.As a result, DML query performance can degrade significantly, or in some cases, a query plan cannot even be produced.
Nesses cenários, teste suas consultas DML antes do uso em produção, analise o plano de consulta e ajuste/simplifique a instrução DML.In such scenarios, test your DML queries before production use, analyze the query plan and tune/simplify the DML statement.

1 Como as operações UPDATE, DELETE ou INSERT.1 Such as UPDATE, DELETE or INSERT operations.

Opções SET necessárias para exibições indexadasRequired SET Options for Indexed Views

A avaliação da mesma expressão poderá produzir resultados diferentes no Mecanismo de Banco de DadosDatabase Engine quando houver diferentes opções SET ativas durante a execução da consulta.Evaluating the same expression can produce different results in the Mecanismo de Banco de DadosDatabase Engine when different SET options are active when the query is executed. Por exemplo, depois que a opção SET CONCAT_NULL_YIELDS_NULL for definida como ON, a expressão 'abc' + NULL retornará o valor NULL.For example, after the SET option CONCAT_NULL_YIELDS_NULL is set to ON, the expression 'abc' + NULL returns the value NULL. Entretanto, depois que CONCAT_NULL_YIELDS_NULL for definida como OFF, a mesma expressão produzirá 'abc'.However, after CONCAT_NULL_YIELDS_NULL is set to OFF, the same expression produces 'abc'.

Para verificar se as exibições podem ser mantidas corretamente e retornar resultados consistentes, as exibições indexadas requerem valores fixos para várias opções SET.To make sure that the views can be maintained correctly and return consistent results, indexed views require fixed values for several SET options. As opções SET da seguinte tabela devem ser definidas com os valores mostrados na coluna Valor Obrigatório sempre que ocorrerem as seguintes condições:The SET options in the following table must be set to the values shown in the Required Value column whenever the following conditions occur:

  • A exibição e os índices subsequentes são criados na exibição.The view and subsequent indexes on the view are created.

  • As tabelas base referenciadas na exibição quando a tabela é criada.The base tables referenced in the view at the time the table is created.

  • Houver qualquer operação de inserção, atualização ou exclusão executada em qualquer tabela que participe da exibição indexada.There is any insert, update, or delete operation performed on any table that participates in the indexed view. Esse requisito inclui operações como cópia em massa, replicação e consultas distribuídas.This requirement includes operations such as bulk copy, replication, and distributed queries.

  • A exibição indexada for usada pelo otimizador de consulta para produzir o plano de consulta.The indexed view is used by the query optimizer to produce the query plan.

opções SETSET options Valor ObrigatórioRequired value Valor do servidor padrãoDefault server value PadrãoDefault

Valor OLE DB e ODBCOLE DB and ODBC value
PadrãoDefault

Valor da DB-LibraryDB-Library value
ANSI_NULLSANSI_NULLS ONON ONON ONON OFFOFF
ANSI_PADDINGANSI_PADDING ONON ONON ONON OFFOFF
ANSI_WARNINGS1ANSI_WARNINGS1 ONON ONON ONON OFFOFF
ARITHABORTARITHABORT ONON ONON OFFOFF OFFOFF
CONCAT_NULL_YIELDS_NULLCONCAT_NULL_YIELDS_NULL ONON ONON ONON OFFOFF
NUMERIC_ROUNDABORTNUMERIC_ROUNDABORT OFFOFF OFFOFF OFFOFF OFFOFF
QUOTED_IDENTIFIERQUOTED_IDENTIFIER ONON ONON ONON OFFOFF
         

1 Configurar ANSI_WARNINGS como ON define implicitamente ARITHABORT como ON.1 Setting ANSI_WARNINGS to ON implicitly sets ARITHABORT to ON.

Se você estiver usando uma conexão de servidor OLE DB ou ODBC, o único valor que deverá ser modificado será a configuração ARITHABORT.If you are using an OLE DB or ODBC server connection, the only value that must be modified is the ARITHABORT setting. Todos os valores DB-Library devem ser definidos corretamente no nível do servidor usando sp_configure ou no aplicativo usando o comando SET.All DB-Library values must be set correctly either at the server level by using sp_configure or from the application by using the SET command.

Importante

É altamente recomendável que você defina a opção de usuário ARITHABORT como ON no nível do servidor assim que a primeira exibição indexada ou o índice em uma coluna computada for criado em qualquer banco de dados no servidor.We strongly recommend that you set the ARITHABORT user option to ON server-wide as soon as the first indexed view or index on a computed column is created in any database on the server.

Exibições determinísticasDeterministic Views

A definição de uma exibição indexada deve ser determinística.The definition of an indexed view must be deterministic. Uma exibição será determinística se todas as expressões na lista selecionada, bem como as cláusulas WHERE e GROUP BY, forem determinísticas.A view is deterministic if all expressions in the select list, as well as the WHERE and GROUP BY clauses, are deterministic. As expressões determinísticas sempre retornam o mesmo resultado sempre que são avaliadas com um conjunto específico de valores de entrada.Deterministic expressions always return the same result any time they are evaluated with a specific set of input values. Somente as funções determinísticas podem participar de expressões determinísticas.Only deterministic functions can participate in deterministic expressions. Por exemplo, a função DATEADD é determinística porque sempre retorna o mesmo resultado para qualquer conjunto específico de valores de argumento para seus três parâmetros.For example, the DATEADD function is deterministic because it always returns the same result for any given set of argument values for its three parameters. GETDATE não é determinística porque sempre é invocada com o mesmo argumento, mas o valor que ela retorna é alterado a cada execução.GETDATE is not deterministic because it is always invoked with the same argument, but the value it returns changes each time it is executed.

Para determinar se uma coluna de exibição é determinística, use a propriedade IsDeterministic da função COLUMNPROPERTY .To determine whether a view column is deterministic, use the IsDeterministic property of the COLUMNPROPERTY function. Para determinar se uma coluna determinística em uma exibição com associação de esquema é precisa, use a propriedade IsPrecise da função COLUMNPROPERTY.To determine if a deterministic column in a view with schema binding is precise, use the IsPrecise property of the COLUMNPROPERTY function. COLUMNPROPERTY retornará 1 se for TRUE, 0 se for FALSE e NULL para entrada inválida.COLUMNPROPERTY returns 1 if TRUE, 0 if FALSE, and NULL for input that is not valid. Isso significa que a coluna não é determinística ou não é precisa.This means the column is not deterministic or not precise.

Mesmo que uma expressão seja determinística, se ela contiver expressões flutuantes, o resultado exato poderá depender da arquitetura do processador ou da versão de microcódigo.Even if an expression is deterministic, if it contains float expressions, the exact result may depend on the processor architecture or version of microcode. Para assegurar a integridade dos dados, tais expressões podem participar somente como colunas não chave de exibições indexadas.To ensure data integrity, such expressions can participate only as non-key columns of indexed views. As expressões determinísticas que não contêm expressões flutuantes são chamadas de precisas.Deterministic expressions that do not contain float expressions are called precise. Somente as expressões determinísticas precisas podem participar de colunas de chave e de cláusulas WHERE ou GROUP BY de exibições indexadas.Only precise deterministic expressions can participate in key columns and in WHERE or GROUP BY clauses of indexed views.

Requisitos adicionaisAdditional Requirements

Além das opções SET e dos requisitos de função determinística, os seguintes requisitos devem ser atendidos:In addition to the SET options and deterministic function requirements, the following requirements must be met:

  • O usuário que executa CREATE INDEX deve ser o proprietário da exibição.The user that executes CREATE INDEX must be the owner of the view.

  • Quando você cria o índice, a opção IGNORE_DUP_KEY deve ser definida como OFF (a configuração padrão).When you create the index, the IGNORE_DUP_KEY option must be set to OFF (the default setting).

  • As tabelas devem ser referenciadas por meio de nomes de duas partes, schema.tablename na definição da exibição.Tables must be referenced by two-part names, schema.tablename in the view definition.

  • Funções definidas pelo usuário referenciadas na exibição devem ser criadas usando a opção WITH SCHEMABINDING.User-defined functions referenced in the view must be created by using the WITH SCHEMABINDING option.

  • Qualquer função definida pelo usuário referenciada na exibição deve ser referenciada por nomes de duas partes, <schema>.<function>.Any user-defined functions referenced in the view must be referenced by two-part names, <schema>.<function>.

  • A propriedade de acesso a dados de uma função definida pelo usuário deve ser NO SQL e a propriedade de acesso externa deve ser NO.The data access property of a user-defined function must be NO SQL, and external access property must be NO.

  • Funções CLR (Common Language Runtime) podem aparecer na lista de seleção da exibição, mas não podem ser parte da definição de uma chave de índice clusterizado.Common language runtime (CLR) functions can appear in the select list of the view, but cannot be part of the definition of the clustered index key. Funções CLR não podem aparecer na cláusula WHERE da exibição ou na cláusula ON de uma operação JOIN na exibição.CLR functions cannot appear in the WHERE clause of the view or the ON clause of a JOIN operation in the view.

  • Funções CLR e métodos de tipos CLR definidos pelo usuário usados na definição da exibição devem ter as propriedades definidas como mostradas na tabela a seguir.CLR functions and methods of CLR user-defined types used in the view definition must have the properties set as shown in the following table.

    PropriedadeProperty ObservaçãoNote
    DETERMINISTIC = TRUEDETERMINISTIC = TRUE Deve ser declarado explicitamente como um atributo do método do Microsoft .NET Framework.Must be declared explicitly as an attribute of the Microsoft .NET Framework method.
    PRECISE = TRUEPRECISE = TRUE Deve ser declarado explicitamente como um atributo do método do .NET Framework.Must be declared explicitly as an attribute of the .NET Framework method.
    DATA ACCESS = NO SQLDATA ACCESS = NO SQL Determinado pela definição do atributo DataAccess para DataAccessKind.None e do atributo SystemDataAccess para SystemDataAccessKind.None.Determined by setting DataAccess attribute to DataAccessKind.None and SystemDataAccess attribute to SystemDataAccessKind.None.
    EXTERNAL ACCESS = NOEXTERNAL ACCESS = NO Essa propriedade padroniza como NO rotinas CLR.This property defaults to NO for CLR routines.
       
  • A exibição deve ser criada usando a opção WITH SCHEMABINDING.The view must be created by using the WITH SCHEMABINDING option.

  • A exibição deve referenciar apenas as tabelas base que estão no mesmo banco de dados que a exibição.The view must reference only base tables that are in the same database as the view. A exibição não pode fazer referência a outras exibições.The view cannot reference other views.

  • A instrução SELECT na definição da exibição não deve conter os seguintes elementos do Transact-SQL:The SELECT statement in the view definition must not contain the following Transact-SQL elements:

    COUNT Funções ROWSET (OPENDATASOURCE, OPENQUERY, OPENROWSET E OPENXML)ROWSET functions (OPENDATASOURCE, OPENQUERY, OPENROWSET, AND OPENXML) Junções OUTER (LEFT, RIGHT ou FULL)OUTER joins (LEFT, RIGHT, or FULL)
    Tabela derivada (definida pela especificação de uma instrução SELECT na cláusula FROM)Derived table (defined by specifying a SELECT statement in the FROM clause) AutojunçõesSelf-joins Especificação de colunas usando SELECT * ou SELECT <table_name>.*Specifying columns by using SELECT * or SELECT <table_name>.*
    DISTINCT STDEV, STDEVP, VAR, VARP ou AVGSTDEV, STDEVP, VAR, VARP, or AVG CTE (expressão de tabela comum)Common table expression (CTE)
    float1, text, ntext, image, XML ou colunas filestreamfloat1, text, ntext, image, XML, or filestream columns SubconsultaSubquery Cláusula OVER, que inclui funções de classificação ou de janela de agregaçãoOVER clause, which includes ranking or aggregate window functions
    Predicados de texto completo (CONTAINS, FREETEXT)Full-text predicates (CONTAINS, FREETEXT) Função SUM que referencia uma expressão que permite valor nuloSUM function that references a nullable expression ORDER BY
    Função de agregação CLR definida pelo usuárioCLR user-defined aggregate function TOP Operadores CUBE, ROLLUP ou GROUPING SETSCUBE, ROLLUP, or GROUPING SETS operators
    MIN, MAXMIN, MAX Operadores UNION, EXCEPT ou INTERSECTUNION, EXCEPT, or INTERSECT operators TABLESAMPLE
    Variáveis de tabelaTable variables OUTER APPLY ou CROSS APPLYOUTER APPLY or CROSS APPLY PIVOT, UNPIVOTPIVOT, UNPIVOT
    Conjuntos de colunas esparsasSparse column sets Funções com valor de tabela (TVF) embutidas ou de várias instruções (MSTVF)Inline (TVF) or multi-statement table-valued functions (MSTVF) OFFSET
    CHECKSUM_AGG
         

    1 A exibição indexada pode conter colunas float; porém, essas colunas não podem ser incluídas na chave de índice clusterizado.1 The indexed view can contain float columns; however, such columns cannot be included in the clustered index key.

  • Se GROUP BY estiver presente, a definição VIEW deverá conter COUNT_BIG(*) e não deverá conter HAVING.If GROUP BY is present, the VIEW definition must contain COUNT_BIG(*) and must not contain HAVING. Essas restrições GROUP BY são aplicáveis apenas à definição de exibição indexada.These GROUP BY restrictions are applicable only to the indexed view definition. Uma consulta pode usar uma exibição indexada em seu plano de execução mesmo que não satisfaça a essas restrições GROUP BY.A query can use an indexed view in its execution plan even if it does not satisfy these GROUP BY restrictions.

  • Se a definição de exibição contiver uma cláusula GROUP BY, a chave do índice clusterizado exclusivo poderá referenciar somente as colunas especificadas na cláusula GROUP BY.If the view definition contains a GROUP BY clause, the key of the unique clustered index can reference only the columns specified in the GROUP BY clause.

Importante

As exibições indexadas não são compatíveis sobre consultas temporais (consultas que usam a cláusula FOR SYSTEM_TIME).Indexed views are not supported on top of temporal queries (queries that use FOR SYSTEM_TIME clause).

RecomendaçõesRecommendations

Quando você referencia os literais de cadeia de caracteres datetime e smalldatetime em exibições indexadas, é recomendável converter explicitamente o literal para o tipo de data desejado, usando um estilo de formato de data determinístico.When you refer to datetime and smalldatetime string literals in indexed views, we recommend that you explicitly convert the literal to the date type you want by using a deterministic date format style. Para obter uma lista de estilos de formato de data determinísticos, veja CAST e CONVERT (Transact-SQL).For a list of the date format styles that are deterministic, see CAST and CONVERT (Transact-SQL). Para obter mais informações sobre expressões determinísticas e não determinísticas, consulte a seção Considerações nesta página.For more information about deterministic and nondeterministic expressions, see the Considerations section in this page.

Quando você executa DML (como UPDATE, DELETE ou INSERT) em uma tabela referenciada por um grande número de exibições indexadas ou menos exibições indexadas, mas muito complexas, essas exibições indexadas também terão que ser atualizadas durante a execução da DML.When you execute DML (such as UPDATE, DELETE or INSERT) on a table referenced by a large number of indexed views, or fewer but very complex indexed views, those indexed views will have to be updated as well during DML execution. Como resultado, o desempenho da consulta DML poderá diminuir significativamente ou, em alguns casos, um plano de consulta nem mesmo poderá ser produzido.As a result, DML query performance may degrade significantly, or in some cases, a query plan cannot even be produced. Nesses cenários, teste suas consultas DML antes do uso em produção, analise o plano de consulta e ajuste/simplifique a instrução DML.In such scenarios, test your DML queries before production use, analyze the query plan and tune/simplify the DML statement.

ConsideraçõesConsiderations

A configuração da opção large_value_types_out_of_row de colunas em uma exibição indexada é herdada da configuração da coluna correspondente na tabela base.The setting of the large_value_types_out_of_row option of columns in an indexed view is inherited from the setting of the corresponding column in the base table. Esse valor é definido usando sp_tableoption.This value is set by using sp_tableoption. A configuração padrão para colunas formadas de expressões é 0.The default setting for columns formed from expressions is 0. Isso significa que tipos de valor grandes são armazenados na linha.This means that large value types are stored in-row.

As exibições indexadas podem ser criadas em uma tabela particionada e elas próprias podem ser particionadas.Indexed views can be created on a partitioned table, and can themselves be partitioned.

Para impedir que o Mecanismo de Banco de DadosDatabase Engine use exibições indexadas, inclua a dica OPTION (EXPAND VIEWS) na consulta.To prevent the Mecanismo de Banco de DadosDatabase Engine from using indexed views, include the OPTION (EXPAND VIEWS) hint on the query. Além disso, se qualquer uma das opções listadas for definida incorretamente, isso evitará que o otimizador use os índices nas exibições.Also, if any of the listed options are incorrectly set, this will prevent the optimizer from using the indexes on the views. Para obter mais informações sobre a dica OPTION (EXPAND VIEWS), consulte SELECT (Transact-SQL).For more information about the OPTION (EXPAND VIEWS) hint, see SELECT (Transact-SQL).

Todos os índices em uma exibição são descartados quando a exibição é descartada.All indexes on a view are dropped when the view is dropped. Todos os índices não clusterizados e estatísticas criadas automaticamente na exibição são descartados quando o índice clusterizado é descartado.All nonclustered indexes and auto-created statistics on the view are dropped when the clustered index is dropped. As estatísticas criadas pelo usuário na exibição são mantidas.User-created statistics on the view are maintained. Os índices não clusterizados podem ser descartados individualmente.Nonclustered indexes can be individually dropped. Descartar o índice clusterizado na exibição remove o conjunto de resultados armazenado e o otimizador retorna para processar a exibição como se fosse uma exibição padrão.Dropping the clustered index on the view removes the stored result set, and the optimizer returns to processing the view like a standard view.

Índices em tabelas e exibições podem ser desabilitados.Indexes on tables and views can be disabled. Quando um índice clusterizado em uma tabela for desabilitado, os índices em exibições associadas à tabela também serão desabilitados.When a clustered index on a table is disabled, indexes on views associated with the table are also disabled.

Expressões que envolvem a conversão implícita de cadeias de caracteres em datetime ou smalldatetime são consideradas não determinísticas.Expressions that involve implicit conversion of character strings to datetime or smalldatetime are considered nondeterministic. Para obter mais informações, confira Conversão não determinística de cadeias de caracteres de data literal em valores de DATA.For more information, see Nondeterministic conversion of literal date strings into DATE values.

SegurançaSecurity

PermissõesPermissions

Requer a permissão CREATE VIEW no banco de dados e a permissão ALTER no esquema no qual a exibição está sendo criada.Requires CREATE VIEW permission in the database and ALTER permission on the schema in which the view is being created.

Usando o Transact-SQLUsing Transact-SQL

Para criar uma exibição indexadaTo create an indexed view

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de DadosDatabase Engine.In Object Explorer, connect to an instance of Mecanismo de Banco de DadosDatabase Engine.

  2. Na barra Padrão, clique em Nova Consulta.On the Standard bar, click New Query.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.Copy and paste the following example into the query window and click Execute. O exemplo cria uma exibição e um índice nessa exibição.The example creates a view and an index on that view. Duas consultas que usam a exibição indexada são incluídas.Two queries are included that use the indexed view.

    USE AdventureWorks2012;  
    GO  
    --Set the options to support indexed views.  
    SET NUMERIC_ROUNDABORT OFF;  
    SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT,  
        QUOTED_IDENTIFIER, ANSI_NULLS ON;  
    GO  
    --Create view with schemabinding.  
    IF OBJECT_ID ('Sales.vOrders', 'view') IS NOT NULL  
    DROP VIEW Sales.vOrders ;  
    GO  
    CREATE VIEW Sales.vOrders  
    WITH SCHEMABINDING  
    AS  
        SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,  
            OrderDate, ProductID, COUNT_BIG(*) AS COUNT  
        FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o  
        WHERE od.SalesOrderID = o.SalesOrderID  
        GROUP BY OrderDate, ProductID;  
    GO  
    --Create an index on the view.  
    CREATE UNIQUE CLUSTERED INDEX IDX_V1   
        ON Sales.vOrders (OrderDate, ProductID);  
    GO  
    --This query can use the indexed view even though the view is   
    --not specified in the FROM clause.  
    SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev,   
        OrderDate, ProductID  
    FROM Sales.SalesOrderDetail AS od  
        JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID  
            AND ProductID BETWEEN 700 and 800  
            AND OrderDate >= CONVERT(datetime,'05/01/2002',101)  
    GROUP BY OrderDate, ProductID  
    ORDER BY Rev DESC;  
    GO  
    --This query can use the above indexed view.  
    SELECT  OrderDate, SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev  
    FROM Sales.SalesOrderDetail AS od  
        JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID  
            AND DATEPART(mm,OrderDate)= 3  
            AND DATEPART(yy,OrderDate) = 2002  
    GROUP BY OrderDate  
    ORDER BY OrderDate ASC;  
    GO  
    

Para obter mais informações, veja CREATE VIEW (Transact-SQL).For more information, see CREATE VIEW (Transact-SQL).

Consulte TambémSee Also

CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
SET ANSI_NULLS (Transact-SQL) SET ANSI_NULLS (Transact-SQL)
SET ANSI_PADDING (Transact-SQL) SET ANSI_PADDING (Transact-SQL)
SET ANSI_WARNINGS (Transact-SQL) SET ANSI_WARNINGS (Transact-SQL)
SET ARITHABORT (Transact-SQL) SET ARITHABORT (Transact-SQL)
SET CONCAT_NULL_YIELDS_NULL (Transact-SQL) SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)
SET NUMERIC_ROUNDABORT (Transact-SQL) SET NUMERIC_ROUNDABORT (Transact-SQL)
SET QUOTED_IDENTIFIER (Transact-SQL)SET QUOTED_IDENTIFIER (Transact-SQL)