Поделиться через


Помощник по собственной компиляции

Средство создания отчетов о производительности транзакций (см. 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  

См. также:

Миграция в In-Memory OLTP