Altering Natively Compiled T-SQL Modules

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

In SQL Server ( SQL Server 2016 (13.x) e versioni successive) e database SQL di Azure è possibile eseguire operazioni ALTER in stored procedure compilate in modo nativo e in altri moduli Transact-SQL compilati in modo nativo, ad esempio UDF scalari e trigger, con l'istruzione ALTER.

Quando si esegue ALTER in un modulo Transact-SQL compilato in modo nativo, il modulo viene ricompilato con una nuova definizione. Durante la ricompilazione la versione precedente del modulo continua a essere disponibile per l'esecuzione. Una volta completata la compilazione, le esecuzioni dei moduli vengono svuotate e viene installata la nuova versione del modulo. Quando si modifica un modulo Transact-SQL compilato in modo nativo, è possibile modificare le opzioni seguenti.

  • Parametri
  • EXECUTE AS
  • TRANSACTION ISOLATION LEVEL
  • LANGUAGE
  • DATEFIRST
  • DATEFORMAT
  • DELAYED_DURABILITY

Nota

I moduli Transact-SQL compilati in modo nativo non possono essere convertiti in moduli compilati in modo non nativo. I moduli T-SQL compilati in modo non nativo non possono essere convertiti in moduli compilati in modo nativo.

Per altre informazioni sul funzionamento e la sintassi di ALTER PROCEDURE, vedi ALTER PROCEDURE (Transact-SQL).

È possibile eseguire sp_recompile in moduli Transact-SQL compilati in modo nativo. Ciò causa la ricompilazione del modulo all'esecuzione successiva.

Esempio

L'esempio seguente crea una tabella ottimizzata per la memoria (T1) e una stored procedure compilata in modo nativo (usp_1) che seleziona tutte le colonne T1. usp_1 viene quindi modificata per rimuovere la clausola EXECUTE AS, modificare LANGUAGE e selezionare una sola colonna (C1) da 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    

Vedi anche

Stored procedure compilate in modo nativo