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

Откуда:
Сообщений: 2
Всем привет!

Столкнулся с одной (а точнее - с двумя) проблемками при
попытке настройки переноса данных из одной базы в другую:

1. Если в базе назначения стоит автоинкремент для первичного ключа,
он не позволяет самостоятельно вставлять уже существующие значения
первичного ключа из базы-источника. Пробовал использовать
IDENTITY_INSERT table ON, однако эта опция устанавливается только
на время транзакции, а поскольку у меня в Pentaho я могу выполнить
скрипт как отдельную трансформацию, доступа к изменению insert-запроса
у меня нет. Может быть можно его как-то временно отрубить для всей базы,
а по завершению всех трансформаций вернуть обратно? Или может существует
ещё какой-нибудь путь?

2. Перед вставкой данных я хочу затирать все существующие данные в таблице,
однако на неё ссылается внешний ключ, и MSSQL не даёт возможность сделать
truncate table, даже если нет ни одной записи в той таблице, которая ссылается
на данный первичный ключ. Более того, delete from table; работает, но всё же
хотелось бы найти более изящное решение. Быть может можно как-нибудь как в
предыдущем вопросе временно отключить данную проверку, а потом включить
по завершении?

Подскажите, пожалуйста, в какую сторону копать?

PS. MSSQL Server 2008, Pentaho (Spoon) 4.2.0
19 апр 12, 10:04    [12437366]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL + Pentaho  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexsunn
Пробовал использовать IDENTITY_INSERT table ON, однако эта опция устанавливается только на время транзакции

Неправда. Это настройка текущего коннекта, а не транзакции

Alexsunn
Быть может можно как-нибудь как в предыдущем вопросе временно отключить данную проверку, а потом включить по завершении?

Отключить нельзя. Убирайте ссылочную целостность, удаляйте, восстанавливайте ссылочную целостность
19 апр 12, 10:09    [12437396]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL + Pentaho  [new]
Alexsunn
Member

Откуда:
Сообщений: 2
Glory
Alexsunn
Пробовал использовать IDENTITY_INSERT table ON, однако эта опция устанавливается только на время транзакции

Неправда. Это настройка текущего коннекта, а не транзакции

Да, согласен, был неправ, выполнил команду сразу после установки соединения - заработало.

Правда, столкнулся с тем, что нельзя одновременно установить данную настройку на 2 таблицы в пределах одного соединения, поэтому пришлось создавать 2 соединения.
Glory
Alexsunn
Быть может можно как-нибудь как в предыдущем вопросе временно отключить данную проверку, а потом включить по завершении?

Отключить нельзя. Убирайте ссылочную целостность, удаляйте, восстанавливайте ссылочную целостность

Пока что решил запуском скрипта в самом начале Job'а, который в определённом порядке делает delete from table для всех таблиц по-очереди.

Спасибо за советы, может ещё кому информация пригодится.
19 апр 12, 17:03    [12441037]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить