Compartir a través de


Altering Natively Compiled T-SQL Modules

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

En SQL Server (SQL Server 2016 [13.x] y posterior] y Azure SQL Database, puede realizar operaciones ALTER en procedimientos almacenados compilados de forma nativa y otros módulos de Transact-SQL compilados de forma nativa, como UDF escalares y desencadenadores mediante la instrucción ALTER.

Al ejecutar ALTER en un módulo de Transact-SQL compilado de forma nativa, el módulo se vuelve a compilar con una nueva definición. Mientras la recompilación está en curso, la versión antigua del módulo sigue estando disponible para su ejecución. Una vez completada la compilación, se agotan las ejecuciones del módulo y se instala la nueva versión del módulo. Cuando se modifica un módulo Transact-SQL compilado de forma nativa, puede modificar las opciones siguientes.

  • Parámetros
  • EXECUTE AS
  • NIVEL DE AISLAMIENTO DE TRANSACCIÓN
  • LANGUAGE
  • DATEFIRST
  • DATEFORMAT
  • DELAYED_DURABILITY

Nota:

No es posible convertir módulos Transact-SQL compilados de forma nativa en módulos compilados de forma no nativa. No es posible convertir módulos T-SQL compilados de forma no nativa en módulos compilados de forma nativa.

Para más información sobre la funcionalidad y la sintaxis de ALTER PROCEDURE, vea ALTER PROCEDURE (Transact-SQL).

Si puede ejecutar sp_recompile en un módulo Transact-SQL compilado de forma nativa, hará que se vuelva a compilar en la siguiente ejecución.

Ejemplo

En el ejemplo siguiente se crea una tabla optimizada para memoria (T1) y un procedimiento almacenado compilado de forma nativa (usp_1) que selecciona todas las columnas de T1. Después, se modifica usp_1 para quitar la cláusula EXECUTE AS, cambiar el valor de LANGUAGE y seleccionar una sola columna (C1) 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    

Consulte también

Procedimientos almacenados compilados de forma nativa