Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Os procedimentos armazenados compilados nativamente não implementam toda a superfície de programação e consulta em Transact-SQL. Existem certos Transact-SQL construtos que não podem ser usados dentro de procedimentos armazenados compilados nativamente. Para mais informações, consulte Funcionalidades Suportadas para Módulos T-SQL Compilados Nativamente.
As seguintes funcionalidades Transact-SQL são apenas suportadas para procedimentos armazenados compilados nativamente:
Blocos atómicos. Para mais informações, consulte Blocos Atómicos.
NOT NULLrestrições sobre parâmetros e variáveis. Não podes atribuir valores NULL a parâmetros ou variáveis declaradas como NÃO NULAS. Para obter mais informações, consulte DECLARE @local_variable (Transact-SQL).CREATE PROCEDURE dbo.myproc (@myVarchar VARCHAR(32) NOT NULL) AS (...)DECLARE @myVarchar VARCHAR(32) NOT NULL = "Hello"; -- Must initialize to a value.SET @myVarchar = NULL; -- Compiles, but fails during run time.
Ligação de esquemas de procedimentos armazenados compilados nativamente.
Procedimentos armazenados compilados nativamente são criados usando CREATE PROCEDURE (Transact-SQL). O exemplo seguinte mostra uma tabela otimizada para memória e um procedimento armazenado compilado nativamente usado para inserir linhas na tabela.
CREATE TABLE [dbo].[T2] (
[c1] [int] NOT NULL,
[c2] [datetime] NOT NULL,
[c3] nvarchar(5) NOT NULL,
CONSTRAINT [PK_T1] PRIMARY KEY NONCLUSTERED ([c1])
) WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
GO
CREATE PROCEDURE [dbo].[usp_2] (@c1 int, @c3 nvarchar(5))
WITH NATIVE_COMPILATION, SCHEMABINDING
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
DECLARE @c2 datetime = GETDATE();
INSERT INTO [dbo].[T2] (c1, c2, c3) values (@c1, @c2, @c3);
END
GO
No exemplo de código, NATIVE_COMPILATION indica que este Transact-SQL procedimento armazenado é um procedimento armazenado compilado nativamente. São necessárias as seguintes opções:
| Opção | Description |
|---|---|
| SCHEMABINDING | Um procedimento armazenado compilado nativamente deve estar ligado ao esquema dos objetos que referencia. Isto significa que as tabelas referenciadas pelo procedimento não podem ser eliminadas. As tabelas mencionadas no procedimento devem incluir o nome do seu esquema, e os caracteres universais (*) não são permitidos em consultas, ou seja, sem SELECT * from....
O SCHEMABINDING é suportado apenas para procedimentos armazenados compilados nativamente nesta versão do SQL Server. |
| INICIAR ATOMIC | O corpo do procedimento armazenado compilado nativamente deve consistir exatamente num bloco atómico. Blocos atómicos garantem a execução atómica do procedimento armazenado. Se o procedimento for invocado fora do contexto de uma transação ativa, iniciará uma nova transação, que se confirma no final do bloco atómico. Os blocos atômicos em procedimentos armazenados com compilação nativa dispõem de duas opções obrigatórias. NÍVEL DE ISOLAMENTO DE TRANSAÇÕES. Consulte Níveis de Isolamento de Transações para Tabelas Memory-Optimized para os níveis de isolamento suportados. LINGUAGEM DE PROGRAMAÇÃO. A linguagem do procedimento armazenado deve ser definida para uma das linguagens ou alias de língua disponíveis. |