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

Откуда: Одесса
Сообщений: 86
Господа, подскажите пожалуйста, как корректно использовать последовательности (sequence) для генерации первичных ключей в SSIS ?
17 июн 15, 22:56    [17785065]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Вопрос слишком широко поставлен. Вам нужен один ключ или много за раз ?

Что вам просто мешает вызвать запрос:

SELECT NEXT VALUE FOR DecSeq;


Или если вам их надо много, тык тоже не проблема

CREATE SEQUENCE DecSeq
    START WITH 1
    INCREMENT BY 1 ;
GO

WITH A AS 
(
	SELECT TOP 10 * FROM 
	(VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9) ) T (X)
)

SELECT NEXT VALUE FOR DecSeq
FROM (SELECT TOP 500 1 AS Y FROM A A1, A A2, A A3) X
GO
DROP SEQUENCE DecSeq
GO
18 июн 15, 10:31    [17786218]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
Простейшая задача:
Из файла ексель, данные построчно копирую в таблицу ms sql, где id = NEXT VALUE FOR ...
Вот и возник вопрос, может есть какая-то "правильная" методика для этого случая.
19 июн 15, 13:05    [17792171]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Digit_ALL,

поставить в умолчание для поля.
19 июн 15, 13:41    [17792476]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Digit_ALL
Простейшая задача:
Из файла ексель, данные построчно копирую в таблицу ms sql, где id = NEXT VALUE FOR ...
Вот и возник вопрос, может есть какая-то "правильная" методика для этого случая.



А зачем вам сдался вообще SEQUENCE ?

Почему бы вам в конечной таблице не завести INDENTITY и не париться этой проблемой вообще?

Взяли строки из вашего Экселя, вставили и ID-шники появились сами.

SEQUENCE нужен когда вы формируете несколько связанных записей из разных таблиц, но по какай-то причине вы не можете их сразу записать в БД, а ID-шники уже нужны.

Если у вас не такая ситуация, то IDENTITY и всё
19 июн 15, 13:41    [17792477]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
Условия изменить не возможно.
У некоторых таблиц по ряду очень важных причин именно сиквенсы.
Таблицы как то изменять - нельзя (никаких умолчаний, триггеров и т.д.)
Нужно именно то, что спрашивалось - SSIS + сиквенс в таблице.
В гугле искать по этой связке не получилось, там другой сиквенс все обсуждают, вот решили тут спросить, может кто сталкивался, и грабли знает.
19 июн 15, 14:08    [17792718]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Glory
Member

Откуда:
Сообщений: 104760
Digit_ALL
в таблицу ms sql, где id = NEXT VALUE FOR ...

И что вы тогда еще собрались делать, если у вас в декларации таблицы уже прописано использование последовательности ?
19 июн 15, 14:12    [17792769]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
msLex
Member

Откуда:
Сообщений: 8151
Digit_ALL,
В DataFlow перед destination добавляете Script Component.
В нем пакетно запрашиваете у скуля нужно количество новый значений сиквинса и добавляете их в выходной набор.
19 июн 15, 14:18    [17792813]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
Glory
И что вы тогда еще собрались делать, если у вас в декларации таблицы уже прописано использование последовательности ?
Вы не правильно поняли. В таблице ничего не прописано. Имелось ввиду только то, что ID берется из сиквенса.
--------------
Сейчас сделано так:
В потоке данных элемент "назначение оле-дб" заменили на "команда оле-дб", и в этой "команде" нарисовали нужный INSERT... в котором и вызывается NEXT VALUE FOR..
19 июн 15, 14:29    [17792921]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Glory
Member

Откуда:
Сообщений: 104760
Digit_ALL
Вы не правильно поняли. В таблице ничего не прописано. Имелось ввиду только то, что ID берется из сиквенса.

Тогда может вы начнете с внятного описания ?
19 июн 15, 14:31    [17792939]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
msLex
Member

Откуда:
Сообщений: 8151
Digit_ALL
В потоке данных элемент "назначение оле-дб" заменили на "команда оле-дб", и в этой "команде" нарисовали нужный INSERT... в котором и вызывается NEXT VALUE FOR..

вставка по одной записи не очень хорошо.
если разговор о десятках записей, можно и так оставить
если хотя-бы о тысячах, лучше нагенерить сиквенсов заранее.
19 июн 15, 14:32    [17792946]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Digit_ALL
Glory
И что вы тогда еще собрались делать, если у вас в декларации таблицы уже прописано использование последовательности ?
Вы не правильно поняли. В таблице ничего не прописано. Имелось ввиду только то, что ID берется из сиквенса.
--------------
Сейчас сделано так:
В потоке данных элемент "назначение оле-дб" заменили на "команда оле-дб", и в этой "команде" нарисовали нужный INSERT... в котором и вызывается NEXT VALUE FOR..


Может вы дадите нам команду и мы посмотрим, что с ней не так .

Вы понимаете, что вы говорите о какой-то информации нам не видна?
19 июн 15, 14:35    [17792960]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
msLex
Member

Откуда:
Сообщений: 8151
a_voronin

Вы понимаете, что вы говорите о какой-то информации нам не видна?

Что тут непонятного?

в качестве destination выступает oledb command в которой написано

insert into dbotable (
id
, f1
, f2
)
values (
NEXT VALUE FOR Seq
, @p1 -- или как там в oledb command оформляются параметры
, @p2
)

и к параметрам привязаны поля набора данных.
19 июн 15, 15:00    [17793155]     Ответить | Цитировать Сообщить модератору
 Re: ssis 2012 sequence  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
Всем спасибо.
Особенно, msLex, спасибо за адекватные ответы.
Вопрос, пожалуй, можно закрывать.
19 июн 15, 15:08    [17793198]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить