![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать Data Transformation, чтобы указывать любой сервер?
Kolan © (2007-12-10 15:33:00)Здравствуйте, в 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-18 17:41:00) [1]Удачи в боях!
:)
Kolan (2007-12-18 17:23:00) [2]> DiamondShark
Круть рабоатет :) Благодарю. :)
Kolan (2007-12-18 15:52:00) [3]> Всё правильно сделано. Теперь тоже самое для всех тасков.
Ок.
DiamondShark (2007-12-18 15:48:00) [4]
> 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:10:00) [5]> [32] Плохиш © (18.12.07 13:45)
> Я не понимаю, зачем столько времени мучиться, если мс предоставила
> инструмент в виде интерфейса. Для его использования достаточно
> 1. Импортировать библиотеку типов
> 2. Сделать один раз свой импорт, сохранить скрипт
> 3. Перевести скрипт из vb в delphi
> 4. В процессе перевода разобраться что и для чего
> 5. Изменять все параметры в последствии так как требуется
А вместо 5 пунктов я шочу научится сделать 1 настройку нужной бд и все.
Плохиш (2007-12-18 13:45:00) [6]Я не понимаю, зачем столько времени мучиться, если мс предоставила инструмент в виде интерфейса. Для его использования достаточно
1. Импортировать библиотеку типов
2. Сделать один раз свой импорт, сохранить скрипт
3. Перевести скрипт из vb в delphi
4. В процессе перевода разобраться что и для чего
5. Изменять все параметры в последствии так как требуется
Kolan (2007-12-18 13:23:00) [7]> Хочешь, чтобы я вставил вместо «штатным» твой текст?
Угу, ну ты же понял ведь о чем я
Плохиш (2007-12-18 13:16:00) [8]
> Kolan © (18.12.07 13:11) [29]
Хочешь, чтобы я вставил вместо "штатным" твой текст?
Kolan (2007-12-18 13:11:00) [9]> [28] Плохиш © (18.12.07 12:22)
>
> > Kolan © (18.12.07 11:12) [27]
>
> Хм, с каких пор использование предоставленного интерфейса
> является нештатным средством?
Ну готовыми, подготовленными фирмой MS средствами.
Плохиш (2007-12-18 12:22:00) [10]
> Kolan © (18.12.07 11:12) [27]
Хм, с каких пор использование предоставленного интерфейса является нештатным средством?
Kolan (2007-12-18 11:12:00) [11]> [26] Плохиш © (18.12.07 11:03)
> Хм, 5ь лет назад, используя [9], мне понадобилось всего
> два рабочих дня на реализацию подобного, в это время входило
> так же подремать, полазить в инете, поесть, погулять и подобное
Я имею ввиду это варик, но хотелось бы со штатными сре-вами разобраться
Плохиш (2007-12-18 11:03:00) [12]Хм, 5ь лет назад, используя [9], мне понадобилось всего два рабочих дня на реализацию подобного, в это время входило так же подремать, полазить в инете, поесть, погулять и подобное...
Kolan (2007-12-18 10:09:00) [13]Ничего не получилось :(. Не понятно ниче
Как делаю по шагам:
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.
Ничего не изменилось
Особенно не понятно, почему настройки всего пакета внутри каждой настройки это разрушает мой моск.
Kolan (2007-12-17 16:04:00) [14]> , как способ экономии кода.
Не в коде же дело, просто подругому не получилось, лана, блаагодарю буду пробовать.
DiamondShark (2007-12-17 15:56:00) [15]
> Нет, сделали инструкцию чтобы базы назывались одинаково
> :)
Тоже вариант;) Административные меры, как способ экономии кода.
> и се?
Угу.
Kolan (2007-12-17 14:59:00) [16]> Это надо было трое суток ждать?
Нет, сделали инструкцию чтобы базы назывались одинаково :)
Это было одноразовое решение, но возможно понадобится еще когда-то, поэтому хочу разобраться.
> The DestinationObjectName property
А тоесть если у меня было:
[база].[dbo].таблица
То я просто оставляю[dbo].таблицаи се? Завтра проверю
DiamondShark (2007-12-17 14:52:00) [17]
> 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:41:00) [18]Апну ка, хотелось бы разобраться до конца, а то шас завязка на имя БД осталась
Kolan (2007-12-14 16:28:00) [19]> DestinationObjectName
Да я его видел. Но что туда писать? Не понял.
При выгрузке я для всех заданий как бы выходит назначил БД, и использовал запрос.
А что писать DestinationObjectName непонятно.
Настройка в которую передается БД называетсяSQLCatalog.
Таблица называетсяTable.
Что надо написать вDestinationObjectName?
DiamondShark (2007-12-14 11:46:00) [20]
> то у Destination задано [база].[таблица] и как избавится
> от этой [базы]
Так точно также, при помощи Dynamic Properties Task.
У Transform Data Task есть свойство DestinationObjectName