Можно использовать SqlBulkCopy для вставки информации в представление более 2 таблиц? - PullRequest
3 голосов
/ 02 мая 2011

Я перехожу к использованию SqlBulkCopy для обработки больших вставок в некоторые базы данных. Это привело к значительному улучшению производительности на один дБ.

Однако другой целевой таблицей БД является представление, составленное из 2 таблиц. Применение кода одной таблицы приводит к «System.Data.SqlClient.SqlException: представление или функция« dbo.vwParameter »не могут быть обновлены, поскольку изменение затрагивает несколько базовых таблиц». Можно сгладить представление в одну таблицу, не вызывая много сложностей, хотя и нежелательно, поскольку это экономит место на диске.

Так можно ли использовать SqlBulkCopy в этом контексте, и я просто что-то не так делаю? Или, если нет, что может быть хорошим решением, которое сохраняет представление для чтения?

Ответы [ 3 ]

3 голосов
/ 03 мая 2011

Оказалось, что SqlBulkCopy игнорировал мои вместо триггеров по умолчанию. Все, что мне нужно было сделать, это передать SqlBulkCopyOptions.FireTriggers в конструктор SqlBulkCopy.

0 голосов
/ 02 мая 2011

Вы можете использовать просмотр с SqlBulkCopy.Но я считаю, что ваша проблема в том, что ваше мнение не обновляется.Существуют определенные требования, которым должно соответствовать представление, чтобы быть обновляемым.Вы можете найти больше информации здесь http://msdn.microsoft.com/en-us/library/ms187956.aspx
Ищите раздел «Обновляемые представления».

Я бы посоветовал вам заполнить каждую из этих двух таблиц напрямую, по одной за раз, если возможно?

0 голосов
/ 02 мая 2011

Вы просматривали документацию об обновлении данных в представлениях?Здесь описаны два возможных решения, и, вероятно, первое, которое вам нужно.

...