Modification de modules T-SQL compilés en mode natif

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Dans SQL Server (SQL Server 2016 (13.x) et Azure SQL Database, vous pouvez effectuer des ALTER opérations sur des procédures stockées compilées en mode natif et d’autres modules Transact-SQL compilés en mode natif, tels que des fonctions définies par l’utilisateur scalaire et des déclencheurs à l’aide de l’instruction ALTER .

Lors de l’exécution ALTER sur un module Transact-SQL compilé en mode natif, le module est recompilé à l’aide d’une nouvelle définition. Quand la recompilation est en cours, l’ancienne version du module reste disponible pour l’exécution. Une fois la compilation terminée, les exécutions de module sont purgées et la nouvelle version du module est installée. Lorsque vous modifiez un module Transact-SQL compilé en mode natif, vous pouvez modifier les options suivantes.

  • Paramètres
  • EXECUTE AS
  • TRANSACTION ISOLATION LEVEL
  • LANGUAGE
  • DATEFIRST
  • DATEFORMAT
  • DELAYED_DURABILITY

Note

Les modules Transact-SQL compilés en mode natif ne peuvent pas être convertis en modules non compilés en mode natif. Les modules T-SQL non compilés en mode natif ne peuvent pas être convertis en modules compilés dans ce mode.

Pour plus d’informations sur ALTER PROCEDURE les fonctionnalités et la syntaxe, consultez ALTER PROCEDURE (Transact-SQL).

Vous pouvez exécuter sp_recompile sur des modules Transact-SQL compilés en mode natif, ce qui entraîne la recompilation du module lors de l’exécution suivante.

Exemple

L’exemple suivant représente la création d’une table optimisée en mémoire (T1) et d’une procédure stockée compilée en mode natif (usp_1) qui sélectionne toutes les colonnes de la table T1. Ensuite, usp_1 est modifiée pour supprimer la clause EXECUTE AS, changer LANGUAGE et sélectionner une seule colonne (C1) à partir de T1.

CREATE TABLE [dbo].[T1] (  
  [c1] [int] NOT NULL,  
  [c2] [float] NOT NULL,  
  CONSTRAINT [PK_T1] PRIMARY KEY NONCLUSTERED ([c1])  
  ) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )  
GO  
  
CREATE PROCEDURE [dbo].[usp_1]  
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER  
AS BEGIN ATOMIC WITH  
(  
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'  
)  
   SELECT c1, c2 FROM dbo.T1  
END  
GO  
  
ALTER PROCEDURE [dbo].[usp_1]  
WITH NATIVE_COMPILATION, SCHEMABINDING  
AS BEGIN ATOMIC WITH  
(  
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'Dutch'  
)  
   SELECT c1 FROM dbo.T1  
END  
GO    

Voir aussi

Procédures stockées compilées en mode natif