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

Откуда:
Сообщений: 28
Есть следующая проблема.

При попытке создать в таблице суррогатный ключ DTS упорно пытается запихнуть вместо него NULL, что у него, естественно, не получается из-за Primary key constaint . Передо мной лежит тренинг по DTS. Делаю все ровно, как там написано. Если использовать учебные данные из тренинга, то все получается, при работе с настоящими данными почему-то возникают NULL'ы.

Никто с такой проблемой не сталкивался? В чем может быть проблема?

И второй вопрос.
Как сделать так, чтобы при создании суррогатного ключа DTS начинал отсчет не от какого-то сохраненного у него числа, а с 0 или с 1(то есть чтобы получались суррогатный IDшники вида '0,1,2,3..." а не например, "1251, 1252,1253...")? Видимо, нужно обнулять activex script'ом какую-то переменную? Вот только какую?

Может, кто-то поделится ссылкой на хорошую мануалку по activex скриптам для DTS?
26 апр 04, 20:42    [650640]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Вжик
Member

Откуда: Москва
Сообщений: 676
Если я правильно понимаю задачю, то вы льете уже имеющуся таблицу измерения с ключами приложений в таблицу MS SQL. В таком случае никакие activex скрипты не нужны, достаточно в принимающей таблице создать колонку со свойством identity и не грузить эту колонку, оставить ее на совесть MS SQL при применении transform data task и copy coumn tranformation.
26 апр 04, 21:19    [650666]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Glory
Member

Откуда:
Сообщений: 104760
DTS упорно пытается запихнуть вместо него NULL,
1. Вы исключили Transformation для столбца с Identity из TransformationTask ?
2. Вы сделали _отдельные_ Transformation для каждой пары столбцов источника-приемника ?
26 апр 04, 21:41    [650674]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Peyotl
Member

Откуда:
Сообщений: 28
Пробовал делать двумя способами - с помощью визарда и с помощью пакета ДТС.

В случае пакета оставлял нетронутой колонку с суррогатным ключом. В случае визарда высталял <ignore>. Галочку с identity снимал.
В принимающей таблице лишь 2 стобца, один из которых содержит суррогатный ключ, а второй некоторое имя, поэтому трансофрмация отдельная для каждой (единтсвенной) пары.

2Вжик: Вы правильно понимаете - я гружу уже готовую таблицу измерения. Но в источнике она ненормализована, нужно получить несколько частично нормализованных таблиц. Проблема в следующем. Планируются перегружать эти таблицы каждый день, и при этом использовать в качетсве IDшников tinyint(так как записей в этих табличках будет меньше 20). Что будет происходить, если значения вот этого суррогатного ключа уйдут за пределы tinyint? MS SQL сам догадется обнулиться и начать считать ключ с 0 или выдаст ошибку?
26 апр 04, 22:19    [650706]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
Что будет происходить, если значения вот этого суррогатного ключа уйдут за пределы tinyint? MS SQL сам догадется обнулиться и начать считать ключ с 0 или выдаст ошибку?

Выдаст ошибку переполнения...

Server: Msg 8115, Level 16, State 1, Line 6

Arithmetic overflow error converting IDENTITY to data type tinyint.
Arithmetic overflow occurred.

А почему такая скупость? Дай яму инт и наслаждайся щастьем (ну, или, хотя бы смалинт)!
27 апр 04, 06:41    [650853]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Вжик
Member

Откуда: Москва
Сообщений: 676
А зачем при повторении ключа приложений заново вставлять запись - достаточно изменить запись с уже существующим соотношением ключ приложения - суррогатный ключ. На мой взгялд ваша ошибка в том, что вы
Галочку с identity снимал
ее как раз надо оставлять.
Для Glory - а зачем делать отдельные трансформации для каждой пары колонок ? Не достаточно ли одной трансформации для всех, кроме суррогатного ключа ?
27 апр 04, 09:09    [650976]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Glory
Member

Откуда:
Сообщений: 104760
2Вжик
Не помню точно но почему-то именно так у меня сделано во всех пакетах где приемником является таблица со столбцом Identity. Возможно это сделано так потому, что для некоторых столбцов исползуется ActiveXScript, для некоторых CopyColumn, для некоторых DateTransformation и тп
27 апр 04, 10:41    [651199]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Peyotl
Member

Откуда:
Сообщений: 28
Всем спасибо. Вчера невнимательно прочитал ответы, на свежую голову все получилось гораздо лучше %). Забыл изменить тип колонки и выставить identity в on. Когда вчера читал, подумал, что речь идет про identity в DTS.

2 Glory: Одной трансформации на все поля кроме ID, действительно достаточно (только что проверил)
27 апр 04, 10:45    [651213]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Вжик
Member

Откуда: Москва
Сообщений: 676
Если не секрет, каким тренингом DTS вы пользуетесь ?
27 апр 04, 11:27    [651403]     Ответить | Цитировать Сообщить модератору
 Re: DTS и суррогатные ключи  [new]
Peyotl
Member

Откуда:
Сообщений: 28
Майкрософтовский 2092
27 апр 04, 12:04    [651555]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить