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


Межбазовые запросы

В SQL Server 2014 оптимизированные для памяти таблицы не поддерживают транзакции между базами данных. Вы не можете получить доступ к другой базе данных из одной транзакции или того же запроса, который также обращается к таблице, оптимизированной для памяти. Невозможно легко скопировать данные из таблицы в одной базе данных в оптимизированную для памяти таблицу в другой базе данных.

Табличные переменные не являются транзакциальными. Таким образом, переменные таблицы, оптимизированные для памяти, могут использоваться в запросах между базами данных и таким образом могут способствовать перемещению данных из одной базы данных в оптимизированные для памяти таблицы в другую. Можно использовать две транзакции. В первой транзакции вставьте данные из удаленной таблицы в переменную. Во второй транзакции вставьте данные в локальную таблицу, оптимизированную для памяти, из переменной.

Например, чтобы скопировать строку из таблицы t1 в базу данных db1 в таблицу t2 в db2, используя переменную @v1 типа dbo.tt1, можно использовать примерно следующее:

USE db2   
GO   
DECLARE @v1 dbo.tt1   
INSERT @v1 SELECT * FROM db1.dbo.t1   
INSERT dbo.t2 SELECT * FROM @v1   
GO  

См. также

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