Помощник по собственной компиляции
Средство создания отчетов о производительности транзакций (см. Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP) информирует о том, какие интерпретируемые хранимые процедуры в базе данных смогут воспользоваться преимуществами перехода на компиляцию в собственном коде. После определения хранимой процедуры, для которой вы собираетесь использовать собственную компиляцию, можно запустить помощник по собственной компиляции, который облегчит миграцию интерпретированной хранимой процедуры для собственной компиляции. Дополнительные сведения о скомпилированных в собственном коде хранимых процедурах см. в разделе Natively Compiled Stored Procedures.
Чтобы начать, подключитесь к экземпляру, содержащему интерпретированную хранимую процедуру. Вы можете подключиться к экземпляру SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 или SQL Server 2014. Однако если вы хотите выполнить операцию миграции с помощью помощника, необходимо подключиться к экземпляру SQL Server 2014, на котором включена In-Memory функциональность OLTP. Дополнительные сведения о требованиях In-Memory OLTP см. в разделе Requirements for Using Memory-Optimized Tables.
Дополнительные сведения о методологиях миграции см. в разделе Выполняемая в памяти OLTP — стандартные шаблоны рабочей нагрузки и вопросы миграции.
Пошаговое руководство по использованию помощника по собственной компиляции
В обозревателе объектовщелкните правой кнопкой мыши хранимую процедуру, которую необходимо преобразовать, и выберите пункт Помощник по собственной компиляции. Появится стартовая страница для помощника по собственной компиляции хранимых процедур. Чтобы продолжить, нажмите кнопку Далее .
Проверка хранимых процедур
Эта страница сообщает, использует ли хранимая процедура какие-либо конструкции, несовместимые с собственной компиляцией. Можно нажать кнопку Далее , чтобы просмотреть данные. Если найдены конструкции, несовместимые с собственной компиляцией, можно нажать кнопку Далее , чтобы просмотреть подробности.
Результат проверки хранимой процедуры
При наличии конструкций, несовместимых с собственной компиляцией, на странице Результат проверки хранимой процедуры будут выведены подробности. Можно создать отчет (нажав Создание отчета), выйти из помощника по собственной компиляциии изменить код таким образом, чтобы он был совместим с собственной компиляцией.
Образец кода
В следующем примере показана интерпретированная хранимая процедура и эквивалентная хранимая процедура для собственной компиляции. В примере подразумевается каталог c:\data.
CREATE DATABASE Demo
ON
PRIMARY(NAME = [Demo_data],
FILENAME = 'C:\DATA\Demo_data.mdf', size=500MB)
, FILEGROUP [Demo_fg] CONTAINS MEMORY_OPTIMIZED_DATA(
NAME = [Demo_dir],
FILENAME = 'C:\DATA\Demo_dir')
LOG ON (name = [Demo_log], Filename='C:\DATA\Demo_log.ldf', size=500MB)
COLLATE Latin1_General_100_BIN2;
GO
USE Demo;
GO
CREATE TABLE [dbo].[SalesOrders]
(
[order_id] [int] NOT NULL,
[order_date] [datetime] NOT NULL,
[order_status] [tinyint] NOT NULL
CONSTRAINT [PK_SalesOrders] PRIMARY KEY NONCLUSTERED HASH
(
[order_id]
)WITH ( BUCKET_COUNT = 2097152)
)WITH ( MEMORY_OPTIMIZED = ON )
go
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME2, @status TINYINT
AS
BEGIN
INSERT dbo.SalesOrders VALUES (@id, @date, @status)
END
go
CREATE PROCEDURE [dbo].[InsertOrderXTP] @id INT, @date DATETIME2, @status TINYINT
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS
BEGIN ATOMIC WITH
( TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'us_english')
INSERT dbo.SalesOrders VALUES (@id, @date, @status)
END
go
select * from SalesOrders
go
exec dbo.InsertOrder @id= 10, @date = '1956-01-01 12:00:00', @status = 1 ;
exec dbo.InsertOrderXTP @id= 11, @date = '1956-01-01 12:01:00', @status = 2 ;
select * from SalesOrders