Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

Как сделать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.01 c
2-1209555980
ekto
2008-04-30 15:46
2008.05.25
WebBrowser. передача PostData


11-1189607486
imp
2007-09-12 18:31
2008.05.25
Ошибка в методе TStrList.LoadFromFile, kol 2.78


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


15-1207820014
Галинка
2008-04-10 13:33
2008.05.25
Как получить из dll параметры


2-1208965349
smartleds
2008-04-23 19:42
2008.05.25
Подскажит плз, как при нажатии на кнопку произвести закрытие





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский