CREATE VIEW (Transact-SQL)CREATE VIEW (Transact-SQL)

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data WarehouseS’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

Crée une table virtuelle dont le contenu (colonnes et lignes) est défini par une requête.Creates a virtual table whose contents (columns and rows) are defined by a query. Utilisez cette instruction pour créer une vue des données dans une ou plusieurs tables de la base de données.Use this statement to create a view of the data in one or more tables in the database. Par exemple, une vue peut être utilisée aux fins suivantes :For example, a view can be used for the following purposes:

  • pour affiner, simplifier et personnaliser la perception de la base de données par chaque utilisateur ;To focus, simplify, and customize the perception each user has of the database.

  • comme mécanisme de sécurité en permettant aux utilisateurs d'accéder aux données par le biais de la vue, sans leur accorder d'autorisations qui leur permettraient d'accéder directement aux tables de base sous-jacentes de la vue ;As a security mechanism by allowing users to access data through the view, without granting the users permissions to directly access the underlying base tables.

  • pour fournir une interface à compatibilité descendante pour émuler une table dont le schéma a été modifié.To provide a backward compatible interface to emulate a table whose schema has changed.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- Syntax for SQL Server and Azure SQL Database  
  
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]  
  
<view_attribute> ::=
{  
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]
}
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  
  
CREATE VIEW [ schema_name . ] view_name [  ( column_name [ ,...n ] ) ]   
AS <select_statement>   
[;]  
  
<select_statement> ::=  
    [ WITH <common_table_expression> [ ,...n ] ]  
    SELECT <select_criteria>  

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentsArguments

OR ALTEROR ALTER
S’applique à : Azure SQL DatabaseAzure SQL Database et SQL ServerSQL Server (depuis SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1).Applies to: Azure SQL DatabaseAzure SQL Database and SQL ServerSQL Server (starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1).

Modifie, de manière conditionnelle, la vue uniquement si elle existe déjà.Conditionally alters the view only if it already exists.

schema_nameschema_name
Nom du schéma auquel appartient la vue.Is the name of the schema to which the view belongs.

view_nameview_name
Nom de la vue.Is the name of the view. Les noms des vues doivent se conformer aux règles applicables aux identificateurs.View names must follow the rules for identifiers. Vous n'êtes pas tenu de spécifier le nom du propriétaire de la vue.Specifying the view owner name is optional.

columncolumn
Nom à utiliser pour une colonne dans une vue.Is the name to be used for a column in a view. L'attribution d'un nom à une colonne n'est obligatoire que lorsqu'une colonne est dérivée d'une expression arithmétique, d'une fonction ou d'une constante, lorsque plusieurs colonnes risquent de porter le même nom (généralement à cause d'une jointure), ou encore lorsqu'une colonne d'une vue reçoit un nom différent de la colonne de laquelle elle est dérivée.A column name is required only when a column is derived from an arithmetic expression, a function, or a constant; when two or more columns may otherwise have the same name, typically because of a join; or when a column in a view is specified a name different from that of the column from which it is derived. Les noms des colonnes peuvent également être attribués dans l'instruction SELECT.Column names can also be assigned in the SELECT statement.

Si vous ne spécifiez pas le paramètre column, les colonnes de la vue prennent les mêmes noms que les colonnes de l’instruction SELECT.If column is not specified, the view columns acquire the same names as the columns in the SELECT statement.

Notes

Dans les colonnes de la vue, les autorisations pour un nom de colonne s'appliquent d'un bout à l'autre d'une instruction CREATE VIEW ou ALTER VIEW, quelle que soit la source des données sous-jacentes.In the columns for the view, the permissions for a column name apply across a CREATE VIEW or ALTER VIEW statement, regardless of the source of the underlying data. Par exemple, si des autorisations sont octroyées sur la colonne SalesOrderID dans une instruction CREATE VIEW, une instruction ALTER VIEW peut donner à la colonne SalesOrderID un autre nom, comme OrderRef, et disposer néanmoins des autorisations associées à la vue qui utilise SalesOrderID.For example, if permissions are granted on the SalesOrderID column in a CREATE VIEW statement, an ALTER VIEW statement can name the SalesOrderID column with a different column name, such as OrderRef, and still have the permissions associated with the view using SalesOrderID.

ASAS
Actions que la vue doit réaliser.Specifies the actions the view is to perform.

select_statementselect_statement
Instruction SELECT qui définit la vue.Is the SELECT statement that defines the view. Elle peut utiliser plusieurs tables et d'autres vues.The statement can use more than one table and other views. Les autorisations nécessaires à la sélection à partir d'objets référencés dans la clause SELECT de la vue créée doivent être définies.Appropriate permissions are required to select from the objects referenced in the SELECT clause of the view that is created.

Une vue ne doit pas être un simple sous-ensemble de lignes et de colonnes d'une table particulière.A view does not have to be a simple subset of the rows and columns of one particular table. Une vue peut être créée à l'aide de plusieurs tables ou d'autres vues avec une clause SELECT complexe.A view can be created that uses more than one table or other views with a SELECT clause of any complexity.

Dans la définition d'une vue indexée, l'instruction SELECT doit être une instruction de table unique ou une jointure multitable avec une clause d'agrégation.In an indexed view definition, the SELECT statement must be a single table statement or a multitable JOIN with optional aggregation.

Les clauses SELECT faisant partie d'une définition de vue ne peuvent inclure les paramètres suivants :The SELECT clauses in a view definition cannot include the following:

  • une clause ORDER BY, sauf si une clause TOP figure également dans la liste de sélection de l'instruction SELECT ;An ORDER BY clause, unless there is also a TOP clause in the select list of the SELECT statement

    Important

    La clause ORDER BY est utilisée uniquement pour déterminer les lignes retournées par la clause TOP ou OFFSET dans la définition de la vue.The ORDER BY clause is used only to determine the rows that are returned by the TOP or OFFSET clause in the view definition. La clause ORDER BY ne garantit pas des résultats classés lorsque la vue est interrogée, sauf si ORDER BY est également spécifiée dans la requête proprement dite.The ORDER BY clause does not guarantee ordered results when the view is queried, unless ORDER BY is also specified in the query itself.

  • le mot clé INTO ;The INTO keyword

  • la clause OPTION ;The OPTION clause

  • une référence à une table temporaire ou à une variable de type table.A reference to a temporary table or a table variable.

Étant donné que select_statement utilise l’instruction SELECT, vous pouvez utiliser les indicateurs <join_hint> et <table_hint> comme spécifiés dans la clause FROM.Because select_statement uses the SELECT statement, it is valid to use <join_hint> and <table_hint> hints as specified in the FROM clause. Pour plus d’informations, consultez FROM (Transact-SQL) et SELECT (Transact-SQL).For more information, see FROM (Transact-SQL) and SELECT (Transact-SQL).

Il est possible d’utiliser des fonctions et plusieurs instructions SELECT séparées par UNION ou UNION ALL dans select_statement.Functions and multiple SELECT statements separated by UNION or UNION ALL can be used in select_statement.

WITH CHECK OPTION.CHECK OPTION
Oblige toutes les instructions de modification de données exécutées sur la vue à respecter les critères définis dans select_statement.Forces all data modification statements executed against the view to follow the criteria set within select_statement. Lorsqu'une ligne est modifiée par l'intermédiaire d'une vue, WITH CHECK OPTION vérifie que les données resteront visibles dans la vue après validation de la modification.When a row is modified through a view, the WITH CHECK OPTION makes sure the data remains visible through the view after the modification is committed.

Notes

CHECK OPTION s’applique uniquement aux mises à jour effectuées par l’intermédiaire de la vue.The CHECK OPTION only applies to updates made through the view. Elle ne s’applique pas aux mises à jour effectuées directement dans les tables sous-jacentes d’une vue.It has no applicability to any updates performed directly to a view's underlying tables.

ENCRYPTIONENCRYPTION
S’applique à : SQL Server 2008SQL Server 2008 et versions ultérieures et Azure SQL DatabaseAzure SQL Database.Applies to: SQL Server 2008SQL Server 2008 and later and Azure SQL DatabaseAzure SQL Database.

Chiffre les entrées de sys.syscomments qui contiennent le texte de l’instruction CREATE VIEW.Encrypts the entries in sys.syscomments that contain the text of the CREATE VIEW statement. L'utilisation de l'argument WITH ENCRYPTION évite la publication de la vue dans le cadre de la réplication SQL Server.Using WITH ENCRYPTION prevents the view from being published as part of SQL Server replication.

SCHEMABINDINGSCHEMABINDING
Lie la vue au schéma des tables sous-jacentes ou des autres tables.Binds the view to the schema of the underlying table or tables. Si SCHEMABINDING est précisé, la table de base ou les tables ne peuvent alors pas être modifiées de façon à ne pas en affecter la définition de la vue.When SCHEMABINDING is specified, the base table or tables cannot be modified in a way that would affect the view definition. Cette dernière doit d'ailleurs être modifiée ou supprimée au préalable pour supprimer les dépendances par rapport à la table qui doit être modifiée.The view definition itself must first be modified or dropped to remove dependencies on the table that is to be modified. Quand vous utilisez l’argument SCHEMABINDING, select_statement doit comprendre les noms en deux parties (schema . object) des tables, des vues ou des fonctions définies par l’utilisateur référencées.When you use SCHEMABINDING, the select_statement must include the two-part names (schema.object) of tables, views, or user-defined functions that are referenced. Tous ces objets référencés doivent se trouver dans la même base de données.All referenced objects must be in the same database.

Les vues ou les tables impliquées dans une vue créée avec la clause SCHEMABINDING ne peuvent pas être supprimées, sauf si cette vue perd, à la suite de sa suppression ou de sa modification, la liaison au schéma.Views or tables that participate in a view created with the SCHEMABINDING clause cannot be dropped unless that view is dropped or changed so that it no longer has schema binding. Dans le cas contraire, le Moteur de base de donnéesDatabase Engine génère une erreur.Otherwise, the Moteur de base de donnéesDatabase Engine raises an error. De plus, l’exécution d’instructions ALTER TABLE sur des tables impliquées dans des vues qui sont liées au schéma échoue quand ces instructions affectent la définition des vues.Also, executing ALTER TABLE statements on tables that participate in views that have schema binding fail when these statements affect the view definition.

VIEW_METADATAVIEW_METADATA
Indique que l'instance de SQL ServerSQL Server retourne aux interfaces de programmation d'applications (API) DB-Library, ODBC et OLE DB les informations de métadonnées sur la vue, plutôt que sur la ou les tables de base, lorsque des métadonnées en mode lecture sont sollicitées pour une requête qui fait référence à la vue.Specifies that the instance of SQL ServerSQL Server will return to the DB-Library, ODBC, and OLE DB APIs the metadata information about the view, instead of the base table or tables, when browse-mode metadata is being requested for a query that references the view. Les métadonnées en mode Parcourir correspondent à des métadonnées supplémentaires que l'instance de SQL ServerSQL Server retourne à ces API clientes.Browse-mode metadata is additional metadata that the instance of SQL ServerSQL Server returns to these client-side APIs. Ces métadonnées permettent aux API clientes d'implémenter des curseurs clients pouvant être mis à jour.This metadata enables the client-side APIs to implement updatable client-side cursors. Les métadonnées en mode Parcourir comprennent des informations sur la table de base à laquelle appartiennent les colonnes du jeu de résultats.Browse-mode metadata includes information about the base table that the columns in the result set belong to.

Dans le cas d'une vue créée par le biais de VIEW_METADATA, les métadonnées en mode Parcourir retournent le nom de la vue, et non celui de la table de base, lors de la description des colonnes de la vue comprise dans le jeu de résultats.For views created with VIEW_METADATA, the browse-mode metadata returns the view name and not the base table names when it describes columns from the view in the result set.

Quand une vue est créée à l’aide de WITH VIEW_METADATA, toutes ses colonnes, à l’exception d’une colonne timestamp, peuvent être mises à jour si la vue contient des déclencheurs INSTEAD OF INSERT ou INSTEAD OF UPDATE.When a view is created by using WITH VIEW_METADATA, all its columns, except a timestamp column, are updatable if the view has INSTEAD OF INSERT or INSTEAD OF UPDATE triggers. Pour plus d'informations sur les vues pouvant être mises à jour, consultez les Notes ci-dessous.For more information about updatable views, see Remarks.

NotesRemarks

Vous ne pouvez créer des vues que dans la base de données actuelle.A view can be created only in the current database. CREATE VIEW doit être la première instruction d'un traitement de requêtes.The CREATE VIEW must be the first statement in a query batch. Une vue ne peut faire référence qu'à un maximum de 1 024 colonnes.A view can have a maximum of 1,024 columns.

Lorsque vous effectuez une requête par l'intermédiaire d'une vue, le Moteur de base de donnéesDatabase Engine vérifie que tous les objets de base de données référencés dans l'instruction existent, qu'ils sont bien valides dans le contexte de l'instruction et que les instructions de modification de données ne violent pas les règles d'intégrité des données.When querying through a view, the Moteur de base de donnéesDatabase Engine checks to make sure that all the database objects referenced anywhere in the statement exist and that they are valid in the context of the statement, and that data modification statements do not violate any data integrity rules. Si une vérification échoue, le système retourne un message d'erreur.A check that fails returns an error message. Si la vérification réussit, l'action est transformée en une action applicable dans la ou les tables sous-jacentes.A successful check translates the action into an action against the underlying table or tables.

Si une vue dépend d'une table ou d'une vue qui a été supprimée, le Moteur de base de donnéesDatabase Engine envoie un message d'erreur lors de toute tentative d'utilisation de la vue.If a view depends on a table or view that was dropped, the Moteur de base de donnéesDatabase Engine produces an error message when anyone tries to use the view. Si une table ou une vue est créée pour remplacer celle qui a été supprimée et que la structure de la table n'est pas modifiée par rapport à la table de base précédente, la vue est de nouveau utilisable.If a new table or view is created and the table structure does not change from the previous base table to replace the one dropped, the view again becomes usable. Si la structure de la nouvelle table ou vue change, la vue doit être supprimée puis recréée.If the new table or view structure changes, the view must be dropped and re-created.

Si aucune vue n’est créée avec la clause SCHEMABINDING, exécutez sp_refreshview quand des modifications sont apportées aux objets sous-jacents de la vue qui affectent sa définition.If a view is not created with the SCHEMABINDING clause, run sp_refreshview when changes are made to the objects underlying the view that affect the definition of the view. Autrement, la vue risque de produire des résultats imprévisibles en cas d'interrogation.Otherwise, the view might produce unexpected results when it is queried.

Quand une vue est créée, les informations la concernant sont stockées dans les vues de catalogue suivantes : sys.views, sys.columns et sys.sql_expression_dependencies.When a view is created, information about the view is stored in the following catalog views: sys.views, sys.columns, and sys.sql_expression_dependencies. Le texte de l’instruction CREATE VIEW est stocké dans la vue de catalogue sys.sql_modules.The text of the CREATE VIEW statement is stored in the sys.sql_modules catalog view.

Le résultat d’une requête utilisant un index sur une vue définie à partir d’expressions numeric ou float peut être différent de celui d’une requête similaire n’utilisant pas l’index sur la vue.A query that uses an index on a view defined with numeric or float expressions may have a result that is different from a similar query that does not use the index on the view. Cette différence peut être le résultat d'erreurs d'arrondi survenues au cours d'opérations INSERT, DELETE ou UPDATE sur des tables sous-jacentes.This difference may be caused by rounding errors during INSERT, DELETE, or UPDATE actions on underlying tables.

Le Moteur de base de donnéesDatabase Engine enregistre les paramètres de SET QUOTED_IDENTIFIER et SET ANSI_NULLS lors de la création d'une vue.The Moteur de base de donnéesDatabase Engine saves the settings of SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a view is created. Ces paramètres d'origine servent à analyser la vue lorsque celle-ci est utilisée.These original settings are used to parse the view when the view is used. Par conséquent, tout paramétrage d'une session client pour SET QUOTED_IDENTIFIER et SET ANSI_NULLS n'influe pas sur la définition de la vue lors de l'accès à la vue.Therefore, any client-session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS do not affect the view definition when the view is accessed.

Vues pouvant être mises à jourUpdatable Views

Pour modifier les données d'une table sous-jacente, vous pouvez utiliser une vue sous réserve que les conditions suivantes soient vraies :You can modify the data of an underlying base table through a view, as long as the following conditions are true:

  • Toute modification, y compris celles via les instructions UPDATE, INSERT et DELETE, doivent faire référence aux colonnes d'une seule et même table de base.Any modifications, including UPDATE, INSERT, and DELETE statements, must reference columns from only one base table.

  • Les colonnes étant modifiées dans la vue doivent faire référence directement aux données sous-jacentes se trouvant dans les colonnes des tables.The columns being modified in the view must directly reference the underlying data in the table columns. Les colonnes ne peuvent être dérivées de quelque autre façon, telle que par :The columns cannot be derived in any other way, such as through the following:

    • Une fonction d’agrégation : AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR et VARP.An aggregate function: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR, and VARP.

    • un calcul, carA computation. la colonne ne peut être calculée à partir d'une expression utilisant d'autres colonnes ;The column cannot be computed from an expression that uses other columns. de même, les colonnes formées par le biais des opérateurs UNION, UNION ALL, CROSSJOIN, EXCEPT et INTERSECT équivalent à une somme de calculs et ne peuvent donc pas être mises à jour.Columns that are formed by using the set operators UNION, UNION ALL, CROSSJOIN, EXCEPT, and INTERSECT amount to a computation and are also not updatable.

  • Les colonnes en cours de modification ne sont pas affectées par l'utilisation des clauses GROUP BY, HAVING ou DISTINCT.The columns being modified are not affected by GROUP BY, HAVING, or DISTINCT clauses.

  • La clause TOP n’est utilisée nulle part dans le paramètre select_statement de la vue avec la clause WITH CHECK OPTION.TOP is not used anywhere in the select_statement of the view together with the WITH CHECK OPTION clause.

Les restrictions précédentes s'appliquent à toutes les sous-requêtes de la clause FROM participant à créer la vue, tout comme elles s'appliquent aussi à la vue même.The previous restrictions apply to any subqueries in the FROM clause of the view, just as they apply to the view itself. De façon générale, le Moteur de base de donnéesDatabase Engine doit pouvoir suivre les modifications de façon claire, à partir de la définition de la vue vers une table de base.Generally, the Moteur de base de donnéesDatabase Engine must be able to unambiguously trace modifications from the view definition to one base table. Pour plus d’informations, consultez Modifier les données par l’intermédiaire d’une vue.For more information, see Modify Data Through a View.

Si les restrictions précédentes vous empêchent de modifier des données directement à travers une vue, voici quelques options à considérer pour vous aider :If the previous restrictions prevent you from modifying data directly through a view, consider the following options:

  • Déclencheurs INSTEAD OFINSTEAD OF Triggers

    Les déclencheurs INSTEAD OF peuvent être créés sur une vue pour que celle-ci puisse être mise à jour.INSTEAD OF triggers can be created on a view to make a view updatable. Le déclencheur INSTEAD OF est exécuté à la place de l'instruction de modification de données sur laquelle il est défini.The INSTEAD OF trigger is executed instead of the data modification statement on which the trigger is defined. Ce déclencheur permet à l'utilisateur de spécifier l'ensemble d'actions à exécuter pour traiter l'instruction de modification de données.This trigger lets the user specify the set of actions that must happen to process the data modification statement. Par conséquent, si une instruction précise de modification de données (INSERT, UPDATE ou DELETE) détient un déclencheur INSTEAD OF associé à une vue, celle-ci peut être mise à jour par le biais de cette instruction.Therefore, if an INSTEAD OF trigger exists for a view on a specific data modification statement (INSERT, UPDATE, or DELETE), the corresponding view is updatable through that statement. Pour plus d’informations sur les déclencheurs INSTEAD OF, consultez Déclencheurs DML.For more information about INSTEAD OF triggers, see DML Triggers.

  • Vues partitionnéesPartitioned Views

    Si la vue est dite « partitionnée », elle peut être mise à jour sous certaines conditions.If the view is a partitioned view, the view is updatable, subject to certain restrictions. Au besoin, le Moteur de base de donnéesDatabase Engine fait la distinction entre une vue partitionnée locale d'une part, car cette vue ainsi que toutes les tables impliquées à sa création figurent sur le même serveur SQL ServerSQL Server, et une vue partitionnée distribuée d'autre part, car au moins l'une des tables de la vue se trouve sur un serveur différent, voire distant.When it is needed, the Moteur de base de donnéesDatabase Engine distinguishes local partitioned views as the views in which all participating tables and the view are on the same instance of SQL ServerSQL Server, and distributed partitioned views as the views in which at least one of the tables in the view resides on a different or remote server.

Vues partitionnéesPartitioned Views

Une vue partitionnée est définie par une opération UNION ALL portant sur des tables membres structurées de façon identique, mais elle est stockée sous forme de plusieurs tables séparées que ce soit sur une seule instance de SQL ServerSQL Server ou dans un groupe d'instances autonomes SQL ServerSQL Server, appelé « serveurs de bases de données fédérés ».A partitioned view is a view defined by a UNION ALL of member tables structured in the same way, but stored separately as multiple tables in either the same instance of SQL ServerSQL Server or in a group of autonomous instances of SQL ServerSQL Server servers, called federated database servers.

Notes

Le partitionnement des données en local s'effectue de préférence par le biais de tables partitionnées.The preferred method for partitioning data local to one server is through partitioned tables. Pour plus d’informations, consultez Tables et index partitionnés.For more information, see Partitioned Tables and Indexes.

Lorsque vous concevez un schéma de partitionnement, il est indispensable d'identifier clairement les données appartenant à chaque partition.In designing a partitioning scheme, it must be clear what data belongs to each partition. Par exemple, les données de la table Customers sont réparties entre trois tables membres, chacune sur un emplacement serveur distinct : Customers_33 sur Server1, Customers_66 sur Server2 et Customers_99 sur Server3.For example, the data for the Customers table is distributed in three member tables in three server locations: Customers_33 on Server1, Customers_66 on Server2, and Customers_99 on Server3.

Une vue partitionnée sur Server1 est définie de la façon suivante :A partitioned view on Server1 is defined in the following way:

--Partitioned view as defined on Server1  
CREATE VIEW Customers  
AS  
--Select from local member table.  
SELECT *  
FROM CompanyData.dbo.Customers_33  
UNION ALL  
--Select from member table on Server2.  
SELECT *  
FROM Server2.CompanyData.dbo.Customers_66  
UNION ALL  
--Select from member table on Server3.  
SELECT *  
FROM Server3.CompanyData.dbo.Customers_99;  

En général, une vue est dite partitionnée si elle se présente sous la forme suivante :Generally, a view is said to be a partitioned view if it is of the following form:

SELECT <select_list1>  
FROM T1  
UNION ALL  
SELECT <select_list2>  
FROM T2  
UNION ALL  
...  
SELECT <select_listn>  
FROM Tn;  

Conditions de création des vues partitionnéesConditions for Creating Partitioned Views

  1. La list de sélectionThe select list

    • Dans la liste des colonnes de la définition de la vue, sélectionnez toutes les colonnes dans les tables membres.In the column list of the view definition, select all columns in the member tables.

    • Vérifiez que les colonnes de position ordinale identique de chaque select list sont de même type, notamment en ce qui concerne les classements.Ensure that the columns in the same ordinal position of each select list are of the same type, including collations. Il n'est pas suffisant que les colonnes soient de type convertible de façon implicite, comme cela est généralement le cas pour UNION.It is not sufficient for the columns to be implicitly convertible types, as is generally the case for UNION.

      De plus, au moins une colonne (par exemple <col>) doit apparaître dans toutes les listes SELECT à la même position ordinale.Also, at least one column (for example <col>) must appear in all the select lists in the same ordinal position. Définissez <col> de façon à ce que les tables membres T1, ..., Tn aient des contraintes CHECK C1, ..., Cn définies pour <col>, respectivement.Define <col> in a way that the member tables T1, ..., Tn have CHECK constraints C1, ..., Cn defined on <col>, respectively.

      La contrainte C1 définie sur la table T1 doit se présenter sous la forme suivante :Constraint C1 defined on table T1 must be of the following form:

      C1 ::= < simple_interval > [ OR < simple_interval > OR ...]  
      < simple_interval > :: =   
      < col > { < | > | \<= | >= | = < value >}   
      | < col > BETWEEN < value1 > AND < value2 >  
      | < col > IN ( value_list )  
      | < col > { > | >= } < value1 > AND  
      < col > { < | <= } < value2 >  
      
    • La définition des contraintes doit permettre à toute valeur spécifiée de <col> de satisfaire au plus une des contraintes C1, ..., Cn, de telle sorte que les contraintes forment un ensemble d’intervalles disjoints ou sans chevauchement.The constraints must be in such a way that any specified value of <col> can satisfy, at most, one of the constraints C1, ..., Cn so that the constraints form a set of disjointed or nonoverlapping intervals. La colonne <col> sur laquelle les contraintes disjointes sont définies est appelée colonne de partitionnement.The column <col> on which the disjointed constraints are defined is called the partitioning column. Notez que la colonne de partitionnement peut porter différents noms dans les tables sous-jacentes.Note that the partitioning column may have different names in the underlying tables. Les contraintes doivent être dans un état activé et approuvé pour répondre aux conditions précédemment mentionnées de la colonne de partitionnement.The constraints must be in an enabled and trusted state for them to meet the previously mentioned conditions of the partitioning column. Si les contraintes sont désactivées, réactivez la vérification des contraintes à l’aide de l’option CHECK CONSTRAINT constraint_name d’ALTER TABLE, puis utilisez l’option WITH CHECK pour valider ces contraintes.If the constraints are disabled, re-enable constraint checking by using the CHECK CONSTRAINT constraint_name option of ALTER TABLE, and using the WITH CHECK option to validate them.

      Voici des exemples d'ensembles valides de contraintes :The following examples show valid sets of constraints:

      { [col < 10], [col between 11 and 20] , [col > 20] }  
      { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }  
      
    • La même colonne ne peut être utilisée qu'une seule fois dans la liste de sélection.The same column cannot be used multiple times in the select list.

  2. Colonne de partitionnementPartitioning column

    • La colonne de partitionnement fait partie de la clé primaire de la table.The partitioning column is a part of the PRIMARY KEY of the table.

    • Il ne peut pas s’agir d’une colonne calculée, d’une colonne d’identité, d’une colonne par défaut ou d’une colonne de type timestamp.It cannot be a computed, identity, default, or timestamp column.

    • Si une colonne d'une table membre comporte plusieurs contraintes, le moteur de bases de données ignore toutes les contraintes et n'en tient pas compte pour déterminer si la vue est ou non une vue partitionnée.If there is more than one constraint on the same column in a member table, the Database Engine ignores all the constraints and does not consider them when determining whether the view is a partitioned view. Pour que les conditions associées à la vue partitionnée soient remplies, vérifiez qu’il n’y a qu’une seule contrainte de partitionnement sur la colonne de partitionnement.To meet the conditions of the partitioned view, ensure that there is only one partitioning constraint on the partitioning column.

    • Aucune restriction ne s'applique sur la possibilité de mettre à jour la colonne de partitionnement.There are no restrictions on the updatability of the partitioning column.

  3. Tables membres ou tables sous-jacentes T1, ..., TnMember tables, or underlying tables T1, ..., Tn

    • Les tables peuvent être des tables locales ou des tables provenant d'autres serveurs SQL ServerSQL Server référencées par le biais d'un nom à quatre composantes ou d'un nom basé sur OPENDATASOURCE ou OPENROWSET.The tables can be either local tables or tables from other computers that are running SQL ServerSQL Server that are referenced either through a four-part name or an OPENDATASOURCE- or OPENROWSET-based name. La syntaxe OPENDATASOURCE et OPENROWSET permet de spécifier le nom d'une table, mais pas une requête directe.The OPENDATASOURCE and OPENROWSET syntax can specify a table name, but not a pass-through query. Pour plus d’informations, consultez OPENDATASOURCE (Transact-SQL) et OPENROWSET (Transact-SQL).For more information, see OPENDATASOURCE (Transact-SQL) and OPENROWSET (Transact-SQL).

      Si une ou plusieurs tables membres sont distantes, la vue est appelée vue partitionnée de données distribuées, et des conditions supplémentaires s'appliquent.If one or more of the member tables are remote, the view is called distributed partitioned view, and additional conditions apply. Ces conditions sont présentées plus loin dans cette section.They are described later in this section.

    • Une table ne peut apparaître qu'une fois dans l'ensemble de tables combinées avec l'instruction UNION ALL.The same table cannot appear two times in the set of tables that are being combined with the UNION ALL statement.

    • Dans les tables membres, il est impossible de créer des index sur les colonnes calculées de la table.The member tables cannot have indexes created on computed columns in the table.

    • Toutes les contraintes PRIMARY KEY des tables membres doivent être appliquées sur un nombre identique de colonnes.The member tables have all PRIMARY KEY constraints on the same number of columns.

    • Toutes les tables membres de la vue doivent avoir le même paramètre de remplissage ANSI.All member tables in the view have the same ANSI padding setting. Ce dernier peut être défini à l’aide de l’option user options qui se trouve dans sp_configureou de l’instruction SET.This can be set by using either the user options option in sp_configure or the SET statement.

Conditions de modification des données dans les vues partitionnéesConditions for Modifying Data in Partitioned Views

Les restrictions suivantes s'appliquent aux instructions qui modifient les données dans les vues partitionnées :The following restrictions apply to statements that modify data in partitioned views:

  • L’instruction INSERT fournit des valeurs pour toutes les colonnes de la vue, même si les tables membres sous-jacentes ont une contrainte DEFAULT pour ces colonnes ou si elles acceptent des valeurs NULL.The INSERT statement supplies values for all the columns in the view, even if the underlying member tables have a DEFAULT constraint for those columns or if they allow for null values. Pour les colonnes de tables membres dont la contrainte porte sur la valeur DEFAULT, les instructions ne peuvent pas spécifier la valeur NULL ou utiliser le mot clé DEFAULT de manière explicite.For those member table columns that have DEFAULT definitions, the statements cannot explicitly use the keyword DEFAULT.

  • La valeur insérée dans la colonne de partitionnement respecte au moins une des contraintes sous-jacentes ; sinon, l’action d’insertion échoue à la suite d’une violation de contrainte.The value being inserted into the partitioning column satisfies at least one of the underlying constraints; otherwise, the insert action will fail with a constraint violation.

  • Les instructions UPDATE ne peuvent pas définir le mot clé DEFAULT comme valeur dans la clause SET même si une valeur DEFAULT est définie pour la colonne dans la table membre correspondante.UPDATE statements cannot specify the DEFAULT keyword as a value in the SET clause, even if the column has a DEFAULT value defined in the corresponding member table.

  • Les colonnes de la vue qui sont des colonnes d'identité dans une ou plusieurs tables membres ne peuvent pas être mises à jour par le biais d'une instruction INSERT ou UPDATE.Columns in the view that are an identity column in one or more of the member tables cannot be modified by using an INSERT or UPDATE statement.

  • Si l’une des tables membres contient une colonne timestamp, les données ne peuvent pas être modifiées par le biais d’une instruction INSERT ou UPDATE.If one of the member tables contains a timestamp column, the data cannot be modified by using an INSERT or UPDATE statement.

  • Si l'une des tables membres contient un déclencheur ou une contrainte ON UPDATE CASCADE/SET NULL/SET DEFAULT ou encore une contrainte ON DELETE CASCADE/SET NULL/SET DEFAULT, la vue ne peut alors pas être modifiée.If one of the member tables contains a trigger or an ON UPDATE CASCADE/SET NULL/SET DEFAULT or ON DELETE CASCADE/SET NULL/SET DEFAULT constraint, the view cannot be modified.

  • Les actions INSERT UPDATE et DELETE sur une vue partitionnée ne sont pas autorisées s'il existe une jointure réflexive sur la vue ou sur une des tables membres indiquées dans l'instruction.INSERT, UPDATE, and DELETE actions against a partitioned view are not allowed if there is a self-join with the same view or with any of the member tables in the statement.

  • L’importation en bloc de données dans une vue partitionnée n’est pas prise en charge par bcp ou par les instructions BULK INSERT et INSERT ... SELECT * FROM OPENROWSET(BULK...).Bulk importing data into a partitioned view is unsupported by bcp or the BULK INSERT and INSERT ... SELECT * FROM OPENROWSET(BULK...) statements. Toutefois, vous pouvez insérer plusieurs lignes dans une vue partitionnée en utilisant l’instruction INSERT.However, you can insert multiple rows into a partitioned view by using the INSERT statement.

    Notes

    Pour mettre à jour une vue partitionnée, l'utilisateur doit bénéficier des autorisations nécessaires pour effectuer les instructions INSERT, DELETE et UPDATE sur les tables membres.To update a partitioned view, the user must have INSERT, UPDATE, and DELETE permissions on the member tables.

Conditions supplémentaires relatives aux vues partitionnées distribuéesAdditional Conditions for Distributed Partitioned Views

Dans le cas des vues partitionnées distribuées, qui impliquent une ou plusieurs tables membres distantes, les conditions supplémentaires suivantes s'appliquent :For distributed partitioned views (when one or more member tables are remote), the following additional conditions apply:

  • Une transaction distribuée est démarrée pour garantir l’atomicité sur tous les nœuds affectés par la mise à jour.A distributed transaction will be started to guarantee atomicity across all nodes affected by the update.

  • Définissez l’option XACT_ABORT SET sur ON pour que les instructions INSERT, UPDATE ou DELETE fonctionnent.Set the XACT_ABORT SET option to ON for INSERT, UPDATE, or DELETE statements to work.

  • Toutes les colonnes de tables distantes de type smallmoney qui sont référencées dans une vue partitionnée sont mappées en money.Any columns in remote tables of type smallmoney that are referenced in a partitioned view are mapped as money. Par conséquent, les colonnes correspondantes dans les tables locales (de position ordinale identique dans la liste de sélection) doivent également être de type money.Therefore, the corresponding columns (in the same ordinal position in the select list) in the local tables must also be of type money.

  • Quand le niveau de compatibilité de la base de données est 110 et supérieur, toutes les colonnes des tables distantes de type smalldatetime qui sont référencées dans une vue partitionnée sont mappées en smalldatetime.Under database compatibility level 110 and higher, any columns in remote tables of type smalldatetime that are referenced in a partitioned view are mapped as smalldatetime. Les colonnes correspondantes dans les tables locales (de position ordinale identique dans la liste de sélection) doivent être de type smalldatetime.Corresponding columns (in the same ordinal position in the select list) in the local tables must be smalldatetime. Il s’agit d’un changement de comportement par rapport aux versions antérieures de SQL ServerSQL Server dans lequel toutes les colonnes des tables distantes de type smalldatetime référencées dans une vue partitionnée sont mappées en datetime et les colonnes correspondantes dans les tables locales doivent être de type datetime.This is a change in behavior from earlier versions of SQL ServerSQL Server in which any columns in remote tables of type smalldatetime that are referenced in a partitioned view are mapped as datetime and corresponding columns in local tables must be of type datetime. Pour plus d’informations, consultez Niveau de compatibilité ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

  • Tout serveur lié dans une vue partitionnée ne peut pas être un serveur dont la liaison constitue un bouclage.Any linked server in the partitioned view cannot be a loopback linked server. En d'autres termes, un serveur lié ne peut pas pointer vers la même instance de SQL ServerSQL Server.This is a linked server that points to the same instance of SQL ServerSQL Server.

La valeur de l'option SET ROWCOUNT est ignorée pour les actions INSERT, UPDATE et DELETE impliquant des vues partitionnées pouvant être mises à jour et des tables distantes.The setting of the SET ROWCOUNT option is ignored for INSERT, UPDATE, and DELETE actions that involve updatable partitioned views and remote tables.

Lorsque les tables membres et la définition de la vue partitionnée sont implémentées, l'optimiseur de requête de SQL ServerSQL Server crée des plans intelligents qui utilisent efficacement les requêtes pour accéder aux données des tables membres.When the member tables and partitioned view definition are in place, the SQL ServerSQL Server query optimizer builds intelligent plans that use queries efficiently to access data from member tables. Grâce aux définitions de la contrainte CHECK, le processeur de requêtes effectue la répartition des valeurs de clé parmi les tables membres.With the CHECK constraint definitions, the query processor maps the distribution of key values across the member tables. Lorsqu'un utilisateur émet une requête, le processeur de requêtes compare le plan des références aux valeurs spécifiées dans la clause WHERE et crée un plan d'exécution impliquant un transfert de données minimal entre les serveurs membres.When a user issues a query, the query processor compares the map to the values specified in the WHERE clause, and builds an execution plan with a minimal amount of data transfer between member servers. Par conséquent, bien que certaines tables membres puissent se trouver sur des serveurs distants, l'instance de SQL ServerSQL Server résout les requêtes distribuées de telle sorte que la quantité de données distribuées à transférer soit minime.Therefore, although some member tables may be located in remote servers, the instance of SQL ServerSQL Server resolves distributed queries so that the amount of distributed data that has to be transferred is minimal.

À prendre en considération lors des réplicationsConsiderations for Replication

Pour créer des vues partitionnées sur des tables membres entrant en jeu dans une réplication, les points suivants sont à prendre en considération :To create partitioned views on member tables that are involved in replication, the following considerations apply:

  • Si les tables sous-jacentes sont impliquées dans une réplication de fusion ou transactionnelle avec mise à jour des abonnements, vérifiez que la colonne uniqueidentifier est également incluse dans la liste de sélection.If the underlying tables are involved in merge replication or transactional replication with updating subscriptions, ensure that the uniqueidentifier column is also included in the select list.

    Toute action INSERT dans la vue partitionnée doit fournir une valeur NEWID() pour la colonne uniqueidentifier.Any INSERT actions into the partitioned view must provide a NEWID() value for the uniqueidentifier column. Toutes les actions UPDATE portant sur la colonne uniqueidentifier doivent fournir NEWID() comme valeur, car le mot clé DEFAULT ne peut pas être utilisé.Any UPDATE actions against the uniqueidentifier column must supply NEWID() as the value because the DEFAULT keyword cannot be used.

  • La réplication de mises à jour opérées par le biais de la vue revient à répliquer des tables tirées de deux bases de données différentes : les tables sont servies par différents agents de réplication ; l'ordre des mises à jour ne peut ainsi être garanti.The replication of updates made by using the view is the same as when tables are replicated in two different databases: the tables are served by different replication agents and the order of the updates is not guaranteed.

AutorisationsPermissions

Nécessite l'autorisation CREATE VIEW dans la base de données et l'autorisation ALTER sur le schéma dans lequel la vue est créée.Requires CREATE VIEW permission in the database and ALTER permission on the schema in which the view is being created.

ExemplesExamples

Les exemples suivants utilisent la base de données AdventureWorks 2012 ou AdventureWorksDW.The following examples use the AdventureWorks 2012 or AdventureWorksDW database.

R.A. Utilisation d'une instruction CREATE VIEW simpleUsing a simple CREATE VIEW

L'exemple suivant crée une vue par le biais d'une instruction SELECT simple.The following example creates a view by using a simple SELECT statement. Une vue simple est utile lorsque vous interrogez régulièrement une combinaison de colonnes.A simple view is helpful when a combination of columns is queried frequently. Les données de cette vue sont tirées des tables HumanResources.Employee et Person.Person de la base de données AdventureWorks2012AdventureWorks2012.The data from this view comes from the HumanResources.Employee and Person.Person tables of the AdventureWorks2012AdventureWorks2012 database. Ces données fournissent les noms et les informations relatives à la date d'embauche des employés de Adventure Works CyclesAdventure Works Cycles.The data provides name and hire date information for the employees of Adventure Works CyclesAdventure Works Cycles. La vue doit pouvoir être créée par la personne chargée de suivre les dates anniversaires d'embauche mais sans pour autant l'autoriser à accéder à toutes les données de ces tables.The view could be created for the person in charge of tracking work anniversaries but without giving this person access to all the data in these tables.

CREATE VIEW hiredate_view  
AS   
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate  
FROM HumanResources.Employee e   
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;  
GO  
  

B.B. Utilisation de WITH ENCRYPTIONUsing WITH ENCRYPTION

Cet exemple utilise l'option WITH ENCRYPTION et montre les colonnes calculées, les colonnes renommées et les colonnes multiples.The following example uses the WITH ENCRYPTION option and shows computed columns, renamed columns, and multiple columns.

S’applique à : SQL Server 2008SQL Server 2008 et versions ultérieures et SQL DatabaseSQL Database.Applies to: SQL Server 2008SQL Server 2008 and later and SQL DatabaseSQL Database.

CREATE VIEW Purchasing.PurchaseOrderReject  
WITH ENCRYPTION  
AS  
SELECT PurchaseOrderID, ReceivedQty, RejectedQty,   
    RejectedQty / ReceivedQty AS RejectRatio, DueDate  
FROM Purchasing.PurchaseOrderDetail  
WHERE RejectedQty / ReceivedQty > 0  
AND DueDate > CONVERT(DATETIME,'20010630',101) ;  
GO  
  

C.C. Utilisation de WITH CHECK OPTIONUsing WITH CHECK OPTION

Cet exemple montre une vue appelée SeattleOnly se reportant à cinq tables et n'autorisant des modifications de données que pour les employés vivant à Seattle.The following example shows a view named SeattleOnly that references five tables and allows for data modifications to apply only to employees who live in Seattle.

CREATE VIEW dbo.SeattleOnly  
AS  
SELECT p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode  
FROM HumanResources.Employee e  
INNER JOIN Person.Person p  
ON p.BusinessEntityID = e.BusinessEntityID  
    INNER JOIN Person.BusinessEntityAddress bea   
    ON bea.BusinessEntityID = e.BusinessEntityID   
    INNER JOIN Person.Address a   
    ON a.AddressID = bea.AddressID  
    INNER JOIN Person.StateProvince sp   
    ON sp.StateProvinceID = a.StateProvinceID  
WHERE a.City = 'Seattle'  
WITH CHECK OPTION ;  
GO  

D.D. Utilisation de fonctions intégrées dans une vueUsing built-in functions within a view

L'exemple suivant illustre la définition d'une vue qui inclut une fonction intégrée.The following example shows a view definition that includes a built-in function. Si vous utilisez des fonctions, vous devez attribuer un nom à la colonne dérivée.When you use functions, you must specify a column name for the derived column.

CREATE VIEW Sales.SalesPersonPerform  
AS  
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales  
FROM Sales.SalesOrderHeader  
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)  
GROUP BY SalesPersonID;  
GO  

E.E. Utilisation de données partitionnéesUsing partitioned data

L'exemple suivant s'appuie sur les tables nommées SUPPLY1, SUPPLY2, SUPPLY3 et SUPPLY4.The following example uses tables named SUPPLY1, SUPPLY2, SUPPLY3, and SUPPLY4. Ces tables correspondent aux tables des fournisseurs de quatre sièges situées dans des pays/régions distincts.These tables correspond to the supplier tables from four offices, located in different countries/regions.

--Create the tables and insert the values.  
CREATE TABLE dbo.SUPPLY1 (  
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 1 and 150),  
supplier CHAR(50)  
);  
CREATE TABLE dbo.SUPPLY2 (  
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 151 and 300),  
supplier CHAR(50)  
);  
CREATE TABLE dbo.SUPPLY3 (  
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 301 and 450),  
supplier CHAR(50)  
);  
CREATE TABLE dbo.SUPPLY4 (  
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 451 and 600),  
supplier CHAR(50)  
);  
GO  
--Create the view that combines all supplier tables.  
CREATE VIEW dbo.all_supplier_view  
WITH SCHEMABINDING  
AS  
SELECT supplyID, supplier  
  FROM dbo.SUPPLY1  
UNION ALL  
SELECT supplyID, supplier  
  FROM dbo.SUPPLY2  
UNION ALL  
SELECT supplyID, supplier  
  FROM dbo.SUPPLY3  
UNION ALL  
SELECT supplyID, supplier  
  FROM dbo.SUPPLY4;  
GO
INSERT dbo.all_supplier_view VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd')    
, ('231', 'FarEast'), ('280', 'NZ')  
, ('321', 'EuroGroup'), ('442', 'UKArchip')  
, ('475', 'India'), ('521', 'Afrique');  
GO  

Exemples : Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) et Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) and Parallel Data WarehouseParallel Data Warehouse

F.F. Création d’un vue simpleCreating a simple view

L’exemple suivant crée une vue en sélectionnant uniquement certaines des colonnes de la table source.The following example creates a view by selecting only some of the columns from the source table.

CREATE VIEW DimEmployeeBirthDates AS  
SELECT FirstName, LastName, BirthDate   
FROM DimEmployee;  

G.G. Créer une vue en joignant deux tablesCreate a view by joining two tables

L’exemple suivant crée une vue à l’aide d’une instruction SELECT avec un OUTER JOIN.The following example creates a view by using a SELECT statement with an OUTER JOIN. Les résultats de la requête de jointure s’affichent dans la vue.The results of the join query populate the view.

CREATE VIEW view1  
AS 
SELECT fis.CustomerKey, fis.ProductKey, fis.OrderDateKey, 
  fis.SalesTerritoryKey, dst.SalesTerritoryRegion  
FROM FactInternetSales AS fis   
LEFT OUTER JOIN DimSalesTerritory AS dst   
ON (fis.SalesTerritoryKey=dst.SalesTerritoryKey);  

Voir aussiSee Also

ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
ALTER VIEW (Transact-SQL) ALTER VIEW (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
DROP VIEW (Transact-SQL) DROP VIEW (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
Créer une procédure stockée Create a Stored Procedure
sys.dm_sql_referenced_entities (Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.dm_sql_referencing_entities (Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
sp_help (Transact-SQL) sp_help (Transact-SQL)
sp_helptext (Transact-SQL) sp_helptext (Transact-SQL)
sp_refreshview (Transact-SQL) sp_refreshview (Transact-SQL)
sp_rename (Transact-SQL) sp_rename (Transact-SQL)
sys.views (Transact-SQL) sys.views (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)