Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Господа, я тут залез в MEMORY_OPTIMIZED. Столкнулся с такой ситуацией.

Выполняю код

USE WildberriesRU
GO 

DROP TABLE [Facts].[Price2]
GO 

CREATE TABLE [Facts].[Price2](
	ID_Price INT NOT NULL IDENTITY (1,1) PRIMARY KEY NONCLUSTERED, 
	[pk_date] [int] NOT NULL INDEX IX_pk_date HASH([pk_date]) WITH (BUCKET_COUNT=5000),
	[chrt_id] [int] NOT NULL INDEX IX_Chart_id HASH([chrt_id]) WITH (BUCKET_COUNT=10000000),
	[dt] [datetime2](0) NOT NULL INDEX IX_DT HASH([dt]) WITH (BUCKET_COUNT=1000000),
	[price] [decimal](9, 2) NOT NULL,
	[employee_id] [int] NOT NULL,
	[date_to] [datetime2](7) NULL,
)WITH (MEMORY_OPTIMIZED=ON, DURABILITY = SCHEMA_ONLY)

GO

INSERT INTO [Facts].[Price2]
           (
		   [pk_date]
           ,[chrt_id]
           ,[dt]
           ,[price]
           ,[employee_id]
           ,[date_to])
SELECT 
	  [pk_date]
      ,[chrt_id]
      ,[dt]
      ,[price]
      ,[employee_id]
      ,[date_to]
FROM [OLAP].[Products].[Price]
GO 


получаю

Сообщение 41317, уровень 16, состояние 5, строка 15
Пользовательская транзакция, обращающаяся к оптимизированным для памяти таблицам или хранимым процедурам, скомпилированным в собственном коде, не может получить доступ к нескольким пользовательским базам данных или модели баз данных и msdb. Кроме того, такая транзакция не может выполнять запись в базу данных master.


Меняю на

SELECT 
	  [pk_date]
      ,[chrt_id]
      ,[dt]
      ,[price]
      ,[employee_id]
      ,[date_to]
INTO #T
FROM [OLAP].[Products].[Price]
GO

INSERT INTO [Facts].[Price2]
           (
		   [pk_date]
           ,[chrt_id]
           ,[dt]
           ,[price]
           ,[employee_id]
           ,[date_to])
SELECT * FROM #T
GO


Всё нормально.

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

Текущая база не master и не msdb, права админские.
11 авг 14, 13:53    [16426006]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Что это такое?
11 авг 14, 13:55    [16426026]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
o-o
Guest
а вы сложили mdf-файл этой базы в memory-optimized data filegroup или в обычную primary?

+
извините за офф,
и я даже знаю, признак кого есть смех без причины, но оно сильнее меня:
a_voronin
USE WildberriesRU
Текущая база не master и не msdb, права админские.

анекдот вспомнился.
berries -- ягодки. "в сорок пять баба ягодка опять". а тут еще и wild.
у них база -- дикие_бабы_ру
11 авг 14, 14:13    [16426126]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
o-o
а вы сложили mdf-файл этой базы в memory-optimized data filegroup или в обычную primary?

+
извините за офф,
и я даже знаю, признак кого есть смех без причины, но оно сильнее меня:
a_voronin
USE WildberriesRU
Текущая база не master и не msdb, права админские.

анекдот вспомнился.
berries -- ягодки. "в сорок пять баба ягодка опять". а тут еще и wild.
у них база -- дикие_бабы_ру


memory-optimized таблицу нельзя положить не в memory-optimized data filegroup.
11 авг 14, 14:16    [16426145]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
случайно заглянул
Guest
Все дело в этой строчке:
a_voronin
FROM [OLAP].[Products].[Price]


Читайте внимательней документацию.
11 авг 14, 14:26    [16426205]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
o-o
Guest
а я просто интересуюсь, у меня 2014-ого нет, проверить не могу.
наверное, не может в соседнюю базу попасть?
разница-то в чем, когда вставка из временной, он уже не в какую-то соседнюю пользовательскую базу лезет, а в TempDB
11 авг 14, 14:28    [16426219]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
случайно заглянул
Guest
Блин, ну чего гадать на кофейной гуще?
В доке ясно написано про межбазовые запросы - нельзя.
http://msdn.microsoft.com/ru-ru/library/dn584627.aspx
11 авг 14, 14:31    [16426237]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
случайно заглянул
Блин, ну чего гадать на кофейной гуще?
В доке ясно написано про межбазовые запросы - нельзя.
http://msdn.microsoft.com/ru-ru/library/dn584627.aspx


Спасибо, понял
11 авг 14, 14:35    [16426260]     Ответить | Цитировать Сообщить модератору
 Re: MEMORY_OPTIMIZED --> зачем ей доступ к msdb и master  [new]
o-o
Guest
зато по ходу дела выяснили больше, чем в доке пишут.
их пример какой? через табличную переменную.
еще и подписали:
Table variables are not transactional. Therefore, memory-optimized table variables can be used in cross-database queries, and can thus facilitate moving data from one database into memory-optimized tables in another.

а ТС обнаружил, что и через временную таблицу катит.
по доке казалось, дело в "нетранзакционности" табличной переменной.
ну и почему тогда со временной таблицей проканалось?
да поди, все дело как раз в TempDB.
...ну или со временными таблицами еще ждет какой-то сюрприз
11 авг 14, 14:45    [16426308]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить