Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизКак сделать Data Transformation, чтобы указывать любой сервер? Найти похожие ветки
← →
Kolan © (2007-12-10 15:33) [0]Здравствуйте, в MS SQL Server"е есть DT Service. И есть консольная программа dtsrun.exe, которая в качестве параметра может принимать имя сервера, имя БД…
При создании самого DTS там в формах выбирается сервер и БД. То есть как бы жестко туда зашиваются.
Вопрос: Как сдалать DTSку, которая бы запускадась с параметрами переданными dtsrun (dtsrun.exe /S«Server»
итд…)?
На такую строку:«%PROGRAMFILES%\MICROSOFT SQL SERVER\80\TOOLS\BINN\dtsrun.exe» /S%1 /U%2 /P%3 /R%4 /F%~5skor_exp.dts
ругаетсяDTSRun: Loading…
Error: —2147217355 (80041035); Provider Error: 0 (0)
Error string: General error —2147217355 (80041035).
Error source: Microsoft Data Transformation Services (DTS) Package
Help file: sqldts80.hlp
Help context: 705
Такая работает:
«%PROGRAMFILES%\MICROSOFT SQL SERVER\80\TOOLS\BINN\dtsrun.exe» /U«sa» /P«» /f%~5skor_exp.dts
← →
DiamondShark © (2007-12-10 16:49) [1]
> принимать имя сервера, имя БД…
Не может принимать имя БД.
> То есть как бы жестко туда зашиваются.
А ты не зашивай жёстко. Используй, например, глобальные переменные, которые можно передать в командной строке dtsrun.
Из глобальных переменных можешь установить свойства коннектов в пакете с помощью Dynamic Properties Task
← →
Kolan © (2007-12-10 16:57) [2]> Не может принимать имя БД.
А ключь R это что? Что такое Repository Data base name?
Задача примерно такая: Есть сервера с разными именами, на серверах одинаковые по структуре БД с разными именами.
То есть Сервер: А БД Б. Сервер: В БД: Г.
Есть программа П, которая знает как назавается нужный сервер и нужная БД.
Задача запустить ДТС для сервера и БД, ктороые укажет(в параметрах ком строки) программа П.
Как такое сделать, научи.
← →
Kolan © (2007-12-10 16:57) [3]
> А ты не зашивай жёстко.
А как там в меню выбираешь сервер и БД из списка…
← →
DiamondShark © (2007-12-10 17:18) [4]
> Kolan © (10.12.07 16:57) [2]
> А ключь R это что? Что такое Repository Data base name?
Это то, где сам пакет находится.
> Есть программа П, которая знает как назавается нужный сервер
> и нужная БД.
>
> Задача запустить ДТС для сервера и БД, ктороые укажет(в
> параметрах ком строки) программа П.
Создаёшь пакет, сохраняешь его где-нибудь. Хочешь, на каком-нибудь сервере, хочешь -- в файл.
В пакете первой задачей делаешь Dynamic Properties Task, в которой расставляешь нужные свойства из глобальных переменных. А глобальные переменные передаются ключом /A
← →
Kolan © (2007-12-10 17:33) [5]Увидел, буду пробовать.
← →
Kolan © (2007-12-10 17:43) [6]А как праметры передавать?
Одной строкой:
/A«Data Source = %s Initial Catalog=%s»
Или как?
← →
DiamondShark © (2007-12-10 18:11) [7]Отдельным ключом /A для каждой переменной
dtsrun /S (local) /E /N Package1 /A "Initial Catalog:8=qweqwe" /A "Data Source:8=ururu"
если для батника, то
dtsrun /S (local) /E /N Package1 /A "Initial Catalog:8=%1" /A "Data Source:8=%2"
← →
Kolan © (2007-12-10 18:13) [8]> Отдельным ключом /A для каждой переменной
Ага, вроде получается, шас попробую…
← →
Плохиш © (2007-12-11 00:49) [9]Можно просто импортировать библиотеку типов dtspkg.dll и получить в своей программе весь функционал dts...
← →
Kolan © (2007-12-11 09:08) [10]> Можно просто импортировать библиотеку типов dtspkg.dll и
> получить в своей программе весь функционал dts…
Да не, и так хорошо, DiamondShark, благодарю. :)
← →
Kolan © (2007-12-11 10:15) [11]Блин так и не получается. У меня БД называется «А» а на компе где сделаи ДТС «Б».
При запуске у меня сбазой А, ругается что invalid object name Б.dbo.<имя таблицы>.
То есть там база не изменилась :( Что не правильно? Где может быть ошибка?
← →
Kolan © (2007-12-11 10:48) [12]Так, вроде если в ДТС в Source использовать не Tabele/View где жестко задаётся таблица с префиксом базой, а Query, то работает.
Правда из 16 2 трансформации ругнулись что нет такой таблицы — странно, но уже лучьше :)
← →
DiamondShark © (2007-12-11 13:37) [13]
> Правда из 16 2 трансформации ругнулись что нет такой таблицы
Значит схемы, всё-таки, не совсем одинаковые.
Может наваять какой-нибудь таск, который бы проверял схему?
← →
Kolan © (2007-12-11 14:22) [14]> Значит схемы, всё-таки, не совсем одинаковые.
Одинаковые — у меня база А — бек ап базы Б.
> Может наваять какой-нибудь таск, который бы проверял схему?
Да не умею я. Проверка ненужна схемы точно будут одинаковые.
DiamondShark
А про комментируй:
«Так, вроде если в ДТС в Source использовать не Tabele/View где жестко задаётся таблица с префиксом базой, а Query, то работает.»
Я не уверен что правильно сделал.
← →
DiamondShark © (2007-12-11 16:39) [15]
> Я не уверен что правильно сделал.
Правильно сделал.
← →
Kolan © (2007-12-12 17:13) [16]> Правильно сделал.
Так, а наоборот не получается.
Все это время я говорил о трансформации из SQL Server"a в BDF(Dbase IV). B там я у источника(SQL Servera) задал не [базу].[таблицу], а запрос — и заработало.
А вот как наоборот. Теперь когда источник это DBF, то у Destination задано [база].[таблица] и как избавится от этой [базы](которая на другом компе называется подругому) непонятно.
← →
Kolan © (2007-12-14 08:14) [17]Up
← →
DiamondShark © (2007-12-14 11:46) [18]
> то у Destination задано [база].[таблица] и как избавится
> от этой [базы]
Так точно также, при помощи Dynamic Properties Task.
У Transform Data Task есть свойство DestinationObjectName
← →
Kolan © (2007-12-14 16:28) [19]> DestinationObjectName
Да я его видел. Но что туда писать? Не понял.
При выгрузке я для всех заданий как бы выходит назначил БД, и использовал запрос.
А что писать DestinationObjectName — непонятно.
Настройка в которую передается БД называетсяSQLCatalog
.
Таблица называетсяTable
.
Что надо написать вDestinationObjectName
?
← →
Kolan © (2007-12-17 14:41) [20]Апну ка, хотелось бы разобраться до конца, а то шас завязка на имя БД осталась…
← →
DiamondShark © (2007-12-17 14:52) [21]
> Kolan © (17.12.07 14:41) [20]
> Апну ка, хотелось бы разобраться до конца, а то шас завязка
> на имя БД осталась…
Это надо было трое суток ждать?The DestinationObjectName property specifies the name of a data destination.
Typically, a DestinationObjectName is a database table or view name or a Microsoft® Excel worksheet name.
Сколько времени надо на то, чтобы в индексе БОЛ набрать слово "DestinationObjectName"?
← →
Kolan © (2007-12-17 14:59) [22]> Это надо было трое суток ждать?
Нет, сделали инструкцию чтобы базы назывались одинаково :)
Это было одноразовое решение, но возможно понадобится еще когда-то, поэтому хочу разобраться.
> The DestinationObjectName property …
А тоесть если у меня было:[база].[dbo].таблица
То я просто оставляю[dbo].таблица
и се? … Завтра проверю…
← →
DiamondShark © (2007-12-17 15:56) [23]
> Нет, сделали инструкцию чтобы базы назывались одинаково
> :)
Тоже вариант;) Административные меры, как способ экономии кода.
> и се?
Угу.
← →
Kolan © (2007-12-17 16:04) [24]> , как способ экономии кода.
Не в коде же дело, просто подругому не получилось, лана, блаагодарю — буду пробовать.
← →
Kolan © (2007-12-18 10:09) [25]Ничего не получилось :(. Не понятно ниче…
Как делаю по шагам:
1.
Открывваю пакет:
http://www.ksoftware.ru/images/other/TransformationQuestion/1.png
2. Захожу в настройки.
http://www.ksoftware.ru/images/other/TransformationQuestion/2.png
Тут же непонятно что делать, Add или Edit. Делаю Add.
3. Открывается окно со всеми настройками пакета, почему они оказались внутри созданой настройки непонятно.
http://www.ksoftware.ru/images/other/TransformationQuestion/3.png
4. выбираюDestinationObjectName
http://www.ksoftware.ru/images/other/TransformationQuestion/4.png
Опять непонятно че делать.
5.
Выбираю константу указываю имя таблицы.
http://www.ksoftware.ru/images/other/TransformationQuestion/5.png
6. Жму ок, закрывается, открываю сново опять тоже что и на шаге 3.
Ничего не изменилось…
Особенно не понятно, почему настройки всего пакета внутри каждой настройки — это разрушает мой моск.
← →
Плохиш © (2007-12-18 11:03) [26]Хм, 5ь лет назад, используя [9], мне понадобилось всего два рабочих дня на реализацию подобного, в это время входило так же подремать, полазить в инете, поесть, погулять и подобное...
← →
Kolan © (2007-12-18 11:12) [27]> [26] Плохиш © (18.12.07 11:03)
> Хм, 5ь лет назад, используя [9], мне понадобилось всего
> два рабочих дня на реализацию подобного, в это время входило
> так же подремать, полазить в инете, поесть, погулять и подобное…
Я имею ввиду это варик, но хотелось бы со штатными сре-вами разобраться…
← →
Плохиш © (2007-12-18 12:22) [28]
> Kolan © (18.12.07 11:12) [27]
Хм, с каких пор использование предоставленного интерфейса является нештатным средством?
← →
Kolan © (2007-12-18 13:11) [29]> [28] Плохиш © (18.12.07 12:22)
>
> > Kolan © (18.12.07 11:12) [27]
>
> Хм, с каких пор использование предоставленного интерфейса
> является нештатным средством?
Ну готовыми, подготовленными фирмой MS средствами.
← →
Плохиш © (2007-12-18 13:16) [30]
> Kolan © (18.12.07 13:11) [29]
Хочешь, чтобы я вставил вместо "штатным" твой текст?
← →
Kolan © (2007-12-18 13:23) [31]> Хочешь, чтобы я вставил вместо «штатным» твой текст?
Угу, ну ты же понял ведь о чем я…
← →
Плохиш © (2007-12-18 13:45) [32]Я не понимаю, зачем столько времени мучиться, если мс предоставила инструмент в виде интерфейса. Для его использования достаточно
1. Импортировать библиотеку типов
2. Сделать один раз свой импорт, сохранить скрипт
3. Перевести скрипт из vb в delphi
4. В процессе перевода разобраться что и для чего
5. Изменять все параметры в последствии так как требуется
← →
Kolan © (2007-12-18 15:10) [33]> [32] Плохиш © (18.12.07 13:45)
> Я не понимаю, зачем столько времени мучиться, если мс предоставила
> инструмент в виде интерфейса. Для его использования достаточно
> 1. Импортировать библиотеку типов
> 2. Сделать один раз свой импорт, сохранить скрипт
> 3. Перевести скрипт из vb в delphi
> 4. В процессе перевода разобраться что и для чего
> 5. Изменять все параметры в последствии так как требуется
А вместо 5 пунктов я шочу научится сделать 1 — настройку нужной бд и все.
← →
DiamondShark © (2007-12-18 15:48) [34]
> 3. Перевести скрипт из vb в delphi
Тут даже дельфи не нужен.
Вполне vbscript или jscript хватит. Критерий "подготовленными фирмой MS средствами" соблюдён ;)
> Kolan © (18.12.07 10:09) [25]
Всё правильно сделано. Теперь тоже самое для всех тасков.
Интрефейс-таки крышесносный ;)
Если жалко ресурса мышки, можно написать ActiveX Script Task:
Function Main()
Dim oPackage
Set oPackage = DTSGlobalVariables.Parent
oPackage.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask.DestinationObjectName = "ZZZ0"
oPackage.Tasks("DTSTask_DTSDataPumpTask_2").CustomTask.DestinationObjectName = "qqq0"
oPackage.Tasks("DTSTask_DTSDataPumpTask_3").CustomTask.DestinationObjectName = "jhgjhg"
и т.д.
Main = DTSTaskExecResult_Success
End Function
а ещё лучше, что-нибудь универсальное, вроде такого:Function Main()
Dim oPackage
Dim oTask
STOP
Set oPackage = DTSGlobalVariables.Parent
For Each oTask in oPackage.Tasks
If oTask.CustomTaskId = "DTSDataPumpTask" Then
oTask.CustomTask.DestinationObjectName = UnqualifyName(oTask.CustomTask.DestinationObjectName)
End If
Next
Main = DTSTaskExecResult_Success
End Function
Function UnqualifyName(sName)
Dim elts
elts = Split(sName, ".")
Select Case UBound(elts)
Case 0, 1
UnqualifyName = sName
Case 2
If elts(1) = "" Then
UnqualifyName = elts(2)
Else
UnqualifyName = elts(1) & "." & elts(2)
End If
Case Else
err.Raise vbObjectError+1, "UnqualifyName", "Invalid object name"
End Select
End Function
← →
Kolan © (2007-12-18 15:52) [35]> Всё правильно сделано. Теперь тоже самое для всех тасков.
Ок.
← →
Kolan © (2007-12-18 17:23) [36]> DiamondShark
Круть — рабоатет :) Благодарю. :)
← →
DiamondShark © (2007-12-18 17:41) [37]Удачи в боях!
:)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.01 c