Ändern von systemintern kompilierten T-SQL-Modulen

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

In SQL Server ( SQL Server 2016 (13.x) und höher) und Azure SQL-Datenbank können Sie Vorgänge für nativ kompilierte gespeicherte Prozeduren und andere nativ kompilierte Transact-SQL-Module wie skalare UDFs und Trigger mithilfe der ALTER Anweisung ausführenALTER.

Wenn sie auf einem systemeigenen kompilierten Transact-SQL-Modul ausgeführt ALTER wird, wird das Modul mithilfe einer neuen Definition neu kompiliert. Während der Neukompilierung steht die alte Version des Moduls nach wie vor noch für die Ausführung zur Verfügung. Nach Abschluss der Kompilierung werden die Modulausführungen entladen und die neue Version des Moduls wird installiert. Wenn Sie ein systemeigenes kompiliertes Transact-SQL-Modul ändern, können Sie die folgenden Optionen ändern.

  • Parameter
  • EXECUTE AS
  • TRANSACTION ISOLATION LEVEL
  • SPRACHE
  • DATEFIRST
  • DATEFORMAT
  • DELAYED_DURABILITY

Hinweis

Native kompilierte Transact-SQL-Module können nicht in nicht systemeigene kompilierte Module konvertiert werden. Nicht-nativ kompilierte T-SQL-Module können nicht in nativ kompilierte Module konvertiert werden.

Weitere Informationen zu Funktionalität und Syntax finden Sie unter ALTER PROCEDURE (Transact-SQL).For more information on ALTER PROCEDURE functionality and syntax, see ALTER PROCEDURE (Transact-SQL).

Sie können sp_recompile für ein systemeigenes kompiliertes Transact-SQL-Modul ausführen, wodurch das Modul bei der nächsten Ausführung neu kompiliert wird.

Beispiel

Das folgende Beispiel zeigt die Erstellung einer speicheroptimierten Tabelle (T1) und einer systemintern kompilierten gespeicherten Prozedur (ups_1), die alle Spalten von Tabelle T1 auswählt. Anschließend wird usp_1 geändert, um die Klausel EXECUTE AS zu entfernen, LANGUAGE zu ändern und nur eine Spalte (C1) von T1 auszuwählen.

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    

Weitere Informationen

Nativ kompilierte gespeicherte Prozeduren