Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Как сделать Data Transformation, чтобы указывать любой сервер?   Найти похожие ветки 

 
Kolan ©   (2007-12-10 15:33) [0]

Здравствуйте, в MS SQL Server"е есть DT Service. И есть консольная программа dtsrun.exe, которая в качестве параметра может принимать имя сервера, имя БД&#133

При создании самого DTS там в формах выбирается сервер и БД. То есть как бы жестко туда зашиваются.

Вопрос: Как сдалать DTSку, которая бы запускадась с параметрами переданными dtsrun (dtsrun.exe /S«Server» итд&#133)?

На такую строку:
«%PROGRAMFILES%\MICROSOFT SQL SERVER\80\TOOLS\BINN\dtsrun.exe» /S%1 /U%2 /P%3 /R%4 /F%~5skor_exp.dts
ругается
DTSRun:  Loading&#133

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]


> А ты не зашивай жёстко.

А как там в меню выбираешь сервер и БД из списка&#133


 
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 для каждой переменной

Ага, вроде получается, шас попробую&#133


 
Плохиш ©   (2007-12-11 00:49) [9]

Можно просто импортировать библиотеку типов dtspkg.dll и получить в своей программе весь функционал dts...


 
Kolan ©   (2007-12-11 09:08) [10]

> Можно просто импортировать библиотеку типов dtspkg.dll и
> получить в своей программе весь функционал dts&#133

Да не, и так хорошо, 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 трансформации ругнулись что нет такой таблицы &#151; странно, но уже лучьше :)


 
DiamondShark ©   (2007-12-11 13:37) [13]


> Правда из 16 2 трансформации ругнулись что нет такой таблицы

Значит схемы, всё-таки, не совсем одинаковые.

Может наваять какой-нибудь таск, который бы проверял схему?


 
Kolan ©   (2007-12-11 14:22) [14]

> Значит схемы, всё-таки, не совсем одинаковые.

Одинаковые &#151; у меня база А &#151; бек ап базы Б.


> Может наваять какой-нибудь таск, который бы проверял схему?

Да не умею я. Проверка ненужна схемы точно будут одинаковые.

DiamondShark
А про комментируй:
&laquo;Так, вроде если в ДТС в Source использовать не Tabele/View где жестко задаётся таблица с префиксом базой, а Query, то работает.&raquo;

Я не уверен что правильно сделал.


 
DiamondShark ©   (2007-12-11 16:39) [15]


> Я не уверен что правильно сделал.

Правильно сделал.


 
Kolan ©   (2007-12-12 17:13) [16]

> Правильно сделал.

Так, а наоборот не получается.

Все это время я говорил о трансформации из SQL Server"a в BDF(Dbase IV). B там я у источника(SQL Servera) задал не [базу].[таблицу], а запрос &#151; и заработало.

А вот как наоборот. Теперь когда источник это 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 &#151; непонятно.

Настройка в которую передается БД называется SQLCatalog.
Таблица называется Table.

Что надо написать в DestinationObjectName?


 
Kolan ©   (2007-12-17 14:41) [20]

Апну ка, хотелось бы разобраться до конца, а то шас завязка на имя БД осталась&#133


 
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 &#133


А тоесть если у меня было:

[база].[dbo].таблица

То я просто оставляю [dbo].таблица и се? &#133 Завтра проверю&#133


 
DiamondShark ©   (2007-12-17 15:56) [23]


> Нет, сделали инструкцию чтобы базы назывались одинаково
> :)

Тоже вариант;) Административные меры, как способ экономии кода.


> и се?

Угу.


 
Kolan ©   (2007-12-17 16:04) [24]

> , как способ экономии кода.

Не в коде же дело, просто подругому не получилось, лана, блаагодарю &#151; буду пробовать.


 
Kolan ©   (2007-12-18 10:09) [25]

Ничего не получилось :(. Не понятно ниче&#133

Как делаю по шагам:

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.
Ничего не изменилось&#133

Особенно не понятно, почему настройки всего пакета внутри каждой настройки &#151; это разрушает мой моск.


 
Плохиш ©   (2007-12-18 11:03) [26]

Хм, 5ь лет назад, используя [9], мне понадобилось всего два рабочих дня на реализацию подобного, в это время входило так же подремать, полазить в инете, поесть, погулять и подобное...


 
Kolan ©   (2007-12-18 11:12) [27]

> [26] Плохиш ©   (18.12.07 11:03)
> Хм, 5ь лет назад, используя [9], мне понадобилось всего
> два рабочих дня на реализацию подобного, в это время входило
> так же подремать, полазить в инете, поесть, погулять и подобное&#133

Я имею ввиду это варик, но хотелось бы со штатными сре-вами разобраться&#133


 
Плохиш ©   (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]

> Хочешь, чтобы я вставил вместо &laquo;штатным&raquo; твой текст?

Угу, ну ты же понял ведь о чем я&#133


 
Плохиш ©   (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 &#151; настройку нужной бд и все.


 
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

Круть &#151; рабоатет :) Благодарю. :)


 
DiamondShark ©   (2007-12-18 17:41) [37]

Удачи в боях!
:)



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.018 c
15-1208107582
Дмитрий С
2008-04-13 21:26
2008.05.25
Нормальная java-аська


6-1186129295
ratmir
2007-08-03 12:21
2008.05.25
Как программно поменять IP


15-1208021911
Цукор5
2008-04-12 21:38
2008.05.25
Просьба для жителей Украины...


2-1208970958
dik
2008-04-23 21:15
2008.05.25
Редактирование рисунков кнопок


9-1170088460
darkangel
2007-01-29 19:34
2008.05.25
Контексты рендеринга.