Altering Natively Compiled T-SQL ModulesAltering Natively Compiled T-SQL Modules

QUESTO ARGOMENTO SI APPLICA A: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In SQL ServerSQL Server (da SQL Server 2016 (13.x)SQL Server 2016 (13.x) a SQL Server 2017SQL Server 2017) e Database SQL di AzureAzure SQL Database è possibile eseguire operazioni ALTER in stored procedure compilate in modo nativo e in altri moduli Transact-SQLTransact-SQL compilati in modo nativo, ad esempio UDF scalari e trigger, con l'istruzione ALTER.In SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017) and Database SQL di AzureAzure SQL Database, you can perform ALTER operations on natively compiled stored procedures and other natively compiled Transact-SQLTransact-SQL modules such as scalar UDFs and triggers using the ALTER statement.

Quando si esegue ALTER in un modulo Transact-SQLTransact-SQL compilato in modo nativo, il modulo viene ricompilato con una nuova definizione.When executing ALTER on a natively compiled Transact-SQLTransact-SQL module, the module is recompiled using a new definition. Durante la ricompilazione la versione precedente del modulo continua a essere disponibile per l'esecuzione.While recompilation is in progress, the old version of the module continues to be available for execution. Una volta completata la compilazione, le esecuzioni dei moduli vengono svuotate e viene installata la nuova versione del modulo.Once compilation completes, module executions are drained, and the new version of the module is installed. Quando si modifica un modulo Transact-SQLTransact-SQL compilato in modo nativo, è possibile modificare le opzioni seguenti.When you alter a natively compiled Transact-SQLTransact-SQL module, you can modify the following options.

  • ParametriParameters
  • EXECUTE ASEXECUTE AS
  • TRANSACTION ISOLATION LEVELTRANSACTION ISOLATION LEVEL
  • LANGUAGELANGUAGE
  • DATEFIRSTDATEFIRST
  • DATEFORMATDATEFORMAT
  • DELAYED_DURABILITYDELAYED_DURABILITY

Nota

I moduli Transact-SQLTransact-SQL compilati in modo nativo non possono essere convertiti in moduli compilati in modo non nativo.Natively compiled Transact-SQLTransact-SQL modules cannot be converted to non-natively compiled modules. I moduli T-SQL compilati in modo non nativo non possono essere convertiti in moduli compilati in modo nativo.Non-natively compiled T-SQL modules cannot be converted to natively compiled modules.

Per altre informazioni sul funzionamento e la sintassi di ALTER PROCEDURE, vedere ALTER PROCEDURE (Transact-SQL).For more information on ALTER PROCEDURE functionality and syntax, see ALTER PROCEDURE (Transact-SQL).

È possibile eseguire sp_recompile in moduli Transact-SQLTransact-SQL compilati in modo nativo. Ciò causa la ricompilazione del modulo all'esecuzione successiva.You can execute sp_recompile on a natively compiled Transact-SQLTransact-SQL modules, which causes the module to recompile on the next execution.

EsempioExample

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.The following example creates a memory-optimized table (T1), and a natively compiled stored procedure (usp_1) that selects all the T1 columns. usp_1 viene quindi modificata per rimuovere la clausola EXECUTE AS, modificare LANGUAGE e selezionare una sola colonna (C1) da T1.Then, usp_1 is altered to remove the EXECUTE AS clause, change the LANGUAGE, and select only one column (C1) from 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    

Vedere ancheSee Also

Stored procedure compilate in modo nativoNatively Compiled Stored Procedures