Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
base de données Azure SQL
Azure SQL Managed Instance
Les procédures stockées compilées nativement n’implémentent pas la programmabilité Transact-SQL complète et la surface de requête. Certaines constructions Transact-SQL ne peuvent pas être utilisées dans des procédures stockées compilées en mode natif. Pour plus d’informations, consultez Fonctionnalités prises en charge pour les modules T-SQL compilés en mode natif.
Les fonctionnalités Transact-SQL suivantes sont uniquement prises en charge pour les procédures stockées compilées en mode natif :
Blocs atomiques. Pour plus d’informations, consultez Atomic Blocks.
Contraintes
NOT NULLsur les paramètres et les variables. Vous ne pouvez pas affecter de valeurs NULL aux paramètres ou aux variables déclarés en tant que NOT NULL. Pour plus d’informations, consultez DECLARE @local_variable (Transact-SQL).CREATE PROCEDURE dbo.myproc (@myVarchar VARCHAR(32) NOT NULL) AS (...)DECLARE @myVarchar VARCHAR(32) NOT NULL = "Hello"; -- Must initialize to a value.SET @myVarchar = NULL; -- Compiles, but fails during run time.
Liaison de schéma des procédures stockées compilées en mode natif.
Les procédures stockées compilées en mode natif sont créées à l’aide CREATE PROCEDURE de (Transact-SQL). L'exemple suivant illustre une table optimisée en mémoire et une procédure stockée compilée en mode natif utilisée pour insérer des lignes dans la table.
CREATE TABLE [dbo].[T2] (
[c1] [int] NOT NULL,
[c2] [datetime] NOT NULL,
[c3] nvarchar(5) NOT NULL,
CONSTRAINT [PK_T1] PRIMARY KEY NONCLUSTERED ([c1])
) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO
CREATE PROCEDURE [dbo].[usp_2] (@c1 int, @c3 nvarchar(5))
WITH NATIVE_COMPILATION, SCHEMABINDING
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
DECLARE @c2 datetime = GETDATE();
INSERT INTO [dbo].[T2] (c1, c2, c3) values (@c1, @c2, @c3);
END
GO
Dans l’exemple de code, NATIVE_COMPILATION indique que cette procédure stockée Transact-SQL est une procédure stockée compilée en mode natif. Les options suivantes sont requises :
| Option | Description |
|---|---|
| SCHEMABINDING | Les procédures stockées compilées en mode natif doivent être liées au schéma des objets référencés. Autrement dit, les tables référencées par la procédure ne peuvent pas être supprimées. Les tables référencées dans la procédure doivent inclure le nom du schéma, et les caractères génériques (*) ne sont pas autorisés dans les requêtes (pas de SELECT * from...).
SCHEMABINDING est uniquement prise en charge pour les procédures stockées compilées en mode natif dans cette version de SQL Server. |
| BEGIN ATOMIC | Le corps d’une procédure stockée compilée en mode natif doit se composer d’un seul bloc atomique. Les blocs atomiques garantissent l'exécution atomique de la procédure stockée. Si la procédure est appelée en dehors du contexte d'une transaction active, elle démarre une nouvelle transaction, qui est validée à la fin du bloc atomique. Les blocs atomiques dans les procédures stockées compilées en mode natif ont deux options obligatoires : TRANSACTION ISOLATION LEVEL. Consultez Niveaux d’isolement des transactions pour les tables mémoire optimisées pour connaître les niveaux d’isolement pris en charge. LANGUAGE. Le langage de la procédure stockée doit être défini sur l'un des langages ou des alias de langage disponibles. |