![]() |
| ||
|
|
Новости |
Поиск |
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
Kolan (2007-12-14 08:14:00) [21]Up
Kolan (2007-12-12 17:13:00) [22]> Правильно сделал.
Так, а наоборот не получается.
Все это время я говорил о трансформации из SQL Server'a в BDF(Dbase IV). B там я у источника(SQL Servera) задал не [базу].[таблицу], а запрос и заработало.
А вот как наоборот. Теперь когда источник это DBF, то у Destination задано [база].[таблица] и как избавится от этой [базы](которая на другом компе называется подругому) непонятно.
DiamondShark (2007-12-11 16:39:00) [23]
> Я не уверен что правильно сделал.
Правильно сделал.
Kolan (2007-12-11 14:22:00) [24]> Значит схемы, всё-таки, не совсем одинаковые.
Одинаковые у меня база А бек ап базы Б.
> Может наваять какой-нибудь таск, который бы проверял схему?
Да не умею я. Проверка ненужна схемы точно будут одинаковые.
DiamondShark
А про комментируй:
«Так, вроде если в ДТС в Source использовать не Tabele/View где жестко задаётся таблица с префиксом базой, а Query, то работает.»
Я не уверен что правильно сделал.
DiamondShark (2007-12-11 13:37:00) [25]
> Правда из 16 2 трансформации ругнулись что нет такой таблицы
Значит схемы, всё-таки, не совсем одинаковые.
Может наваять какой-нибудь таск, который бы проверял схему?
Kolan (2007-12-11 10:48:00) [26]Так, вроде если в ДТС в Source использовать не Tabele/View где жестко задаётся таблица с префиксом базой, а Query, то работает.
Правда из 16 2 трансформации ругнулись что нет такой таблицы странно, но уже лучьше :)
Kolan (2007-12-11 10:15:00) [27]Блин так и не получается. У меня БД называется «А» а на компе где сделаи ДТС «Б».
При запуске у меня сбазой А, ругается что invalid object name Б.dbo..
То есть там база не изменилась :( Что не правильно? Где может быть ошибка?
Kolan (2007-12-11 09:08:00) [28]> Можно просто импортировать библиотеку типов dtspkg.dll и
> получить в своей программе весь функционал dts
Да не, и так хорошо, DiamondShark, благодарю. :)
Плохиш (2007-12-11 00:49:00) [29]Можно просто импортировать библиотеку типов dtspkg.dll и получить в своей программе весь функционал dts...
Kolan (2007-12-10 18:13:00) [30]> Отдельным ключом /A для каждой переменной
Ага, вроде получается, шас попробую
DiamondShark (2007-12-10 18:11:00) [31]Отдельным ключом /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 17:43:00) [32]А как праметры передавать?
Одной строкой:
/A«Data Source = %s Initial Catalog=%s»
Или как?
Kolan (2007-12-10 17:33:00) [33]Увидел, буду пробовать.
DiamondShark (2007-12-10 17:18:00) [34]
> Kolan © (10.12.07 16:57) [2]
> А ключь R это что? Что такое Repository Data base name?
Это то, где сам пакет находится.
> Есть программа П, которая знает как назавается нужный сервер
> и нужная БД.
>
> Задача запустить ДТС для сервера и БД, ктороые укажет(в
> параметрах ком строки) программа П.
Создаёшь пакет, сохраняешь его где-нибудь. Хочешь, на каком-нибудь сервере, хочешь -- в файл.
В пакете первой задачей делаешь Dynamic Properties Task, в которой расставляешь нужные свойства из глобальных переменных. А глобальные переменные передаются ключом /A
Kolan (2007-12-10 16:57:00) [35]
> А ты не зашивай жёстко.
А как там в меню выбираешь сервер и БД из списка
Kolan (2007-12-10 16:57:00) [36]> Не может принимать имя БД.
А ключь R это что? Что такое Repository Data base name?
Задача примерно такая: Есть сервера с разными именами, на серверах одинаковые по структуре БД с разными именами.
То есть Сервер: А БД Б. Сервер: В БД: Г.
Есть программа П, которая знает как назавается нужный сервер и нужная БД.
Задача запустить ДТС для сервера и БД, ктороые укажет(в параметрах ком строки) программа П.
Как такое сделать, научи.
DiamondShark (2007-12-10 16:49:00) [37]
> принимать имя сервера, имя БД…
Не может принимать имя БД.
> То есть как бы жестко туда зашиваются.
А ты не зашивай жёстко. Используй, например, глобальные переменные, которые можно передать в командной строке dtsrun.
Из глобальных переменных можешь установить свойства коннектов в пакете с помощью Dynamic Properties Task