Как да накарате Data Transformation да сочи към всеки сървър
Здравейте, има DT услуга в MS SQL Server. Има и конзолна програма dtsrun.exe, която може да вземе името на сървъра, името на базата данни & # 133 като параметър
При създаването на самия DTS сървърът и базата данни се избират във формите. Тоест, сякаш твърдо зашит там.
Въпрос: Как да изпратя DTSku, който да работи с параметрите, предадени на dtsrun ( dtsrun.exe /S"Server" etc…)?
Към този ред: "%PROGRAMFILES%\MICROSOFT SQL SERVER\80\TOOLS\BINN\dtsrun.exe" /S%1 /U%2 /P%3 /R%4 /F%
5skor_exp.dts псува DTSRun: Зареждане…
Грешка: 2147217355 (80041035); Грешка на доставчика: 0 (0) Низ за грешка: Обща грешка 2147217355 (80041035). Източник на грешка: Microsoft Data Transformation Services (DTS) Package Помощен файл: sqldts80.hlp Помощен контекст: 705
"%PROGRAMFILES%\MICROSOFT SQL SERVER\80\TOOLS\BINN\dtsrun.exe" /U"sa" /P"" /f%
> приемете име на сървър, име на база данни...Не може да приеме име на база данни.
> Тоест, сякаш твърдо зашит там.Не го зашивайте силно. Използвайте, например, глобални променливи, които могат да бъдат предадени на командния ред dtsrun.
От глобалните променливи можете да зададете свойствата на връзките в пакета, като използвате задачата за динамични свойства
> Не може да се приеме име на база данни.Какво е клавишът R? Какво е името на базата данни на хранилището?
Задачата е нещо подобно: Има сървъри с различни имена, сървърите имат една и съща структура на база данни с различни имена.
Това е сървър: A DB B. Сървър: C DB: D.
Има програма P, която знае името на желания сървър и желаната база данни.
Задачата е да стартирате DTS за сървъра и базата данни, които ще бъдат посочени (в параметрите на com линията) от програмата P.
Научете как да направите това.
> И не го кодирайте твърдо.Как избирате сървър и база данни от списъка в менюто…
> Има програма P, която знае името на желания сървър > и необходимата база данни. > > Задачата е да стартирате DTS за сървъра и базата данни, което ще посочи (в > параметрите на com реда) програмата P.Създайте пакет, запазете го някъде. Ако искате на някой сървър, ако искате - във файл. В пакета първата задача е да направите Dynamic Properties Task, в която подреждате необходимите свойства от глобални променливи. И глобалните променливи се предават с ключа /A
Виждам, ще опитам.
Как да предам параметри?
В един ред: /A"Източник на данни = %s Първоначален каталог=%s"
Отделен ключ /A за всяка променлива
dtsrun /S (локален) /E /N Package1 /A "Първоначален каталог:8=qweqwe" /A "Източник на данни:8=ururu"
ако за пакетен файл, тогава
dtsrun /S (локален) /E /N Package1 /A "Първоначален каталог:8=%1" /A "Източник на данни:8=%2"
> Отделен ключ /A за всяка променлива
Можете просто да импортирате библиотеката от типове dtspkg.dll и да получите цялата функционалност на dts във вашата програма.
> Можете просто да импортирате библиотеката с типове dtspkg.dll и > вземете в програмата си цялата функционалност на dts…Да, не, и много добре, DiamondShark, благодаря ти. :)
Блейн не работи. Имам база данни, наречена "A" и на моя компютър къде е DTS "B".
Когато започна с база A, тя кълне това невалидно име на обект B.dbo. .
Тоест базата данни не се е променила там :( Какво не е наред? Къде може да има грешка?
Така че изглежда, че ако в DTS в Source не използвате Tabele / View, където таблицата с базовия префикс е твърдо зададена, а Query, тогава работи.
Вярно, от 16 2 трансформации се заклеха, че няма такава таблица странно, но вече по-добре :)
> Вярно, от 16 2 трансформации се заклеха, че няма такава таблицаЗначи схемите все пак не са съвсем еднакви.
Мога ли да създам някаква задача, която да проверява веригата?
> Така че схемите, в края на краищата, не са съвсем еднакви.Те са същите, имам база A резервна база B.
> Мога ли да създам някаква задача, която да проверява схемата?Да, не знам как. Проверката не е необходима, схемите определено ще бъдат същите.
Не съм сигурен, че го направих правилно.
> Не съм сигурен, че постъпих правилно.Постъпих правилно.
> Постъпил си правилно.Да, но обратното не работи.
През цялото това време говоря за трансформацията от SQL Server "a към BDF (Dbase IV). B там, в източника (SQL Servera), не съм задал [база]. [таблица], но заявката и тя работи.
А тук е обратното. Сега, когато източникът е DBF, тогава Дестинацията е зададена на [база].[таблица] и не е ясно как да се отървем от тази [база] (която се нарича по различен начин на друг компютър).
> тогава Дестинацията е зададена на [база].[таблица] и как да се отървете от > от тази [база]По същия начин, използвайки задачата за динамични свойства.
Transform Data Task има свойство DestinationObjectName
> DestinationObjectNameДа, видях го. Но какво да напиша там? не разбрах
При разтоварването зададох база данни за всички задачи, така да се каже, и използвах заявка.
И какво да напиша DestinationObjectName не е ясно.
Настройката, към която се предава базата данни, се нарича SQLCatalog. Таблицата се нарича Table.
Какво трябва да бъде написано в DestinationObjectName?
Apnu ka, бих искал да го разбера до края, иначе е низИмето на DB остана…
Свойството DestinationObjectName указва името на местоназначение на данни.
Обикновено DestinationObjectName е име на таблица на база данни или изглед или име на работен лист на Microsoft® Excel.
Колко време отнема въвеждането на думата "DestinationObjectName" в BOL индекса?
> Трябваше ли да чакате три дни?Не, ние направихме инструкция базите да се наричат еднакви :) Това беше еднократно решение, но може да се наложи някога, така че искам да го разбера.
> Свойството DestinationObjectName …
Ами ако имах:
Тогава просто напускам [dbo].table и ето? … Ще проверя утре…
> Не, направиха инструкция базите да се наричат еднакви > :)Също вариант;) Административни мерки като начин за запазване на кода.
> , като начин за запазване на кода.Не става въпрос за кода, просто не се получи за моята приятелка Лана, благодаря, ще опитам.
Нищо не се случи :(. Нищо не е ясно…
Как да го направя стъпка по стъпка:
2. Отивам в настройките. http://www.ksoftware.ru/images/other/TransformationQuestion/2.png
Не е веднага ясно какво да се направи, Добавяне или Редактиране. Правя Добавяне.
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. Нищо не се е променило…
Не е особено ясно защо настройките на целия пакет са вътре във всяка настройка, това съсипва моя mosk.
Хм, преди 5 години, използвайки [9], ми отне само два работни дни, за да внедря нещо подобно, като това време включваше и дрямка, сърфиране в интернет, хранене, разходка и други подобни.
> Искате ли да вмъкна вашия текст вместо „обикновения“?Да, разбирате какво имам предвид…
Не разбирам защо страдането отнема толкова време, ако ms предостави инструмент под формата на интерфейс. 1 е достатъчен, за да го използвате. Импортиране на библиотека от типове 2. Направете импортирането веднъж, запазете скрипта 3. Преведете скрипт от vb на delphi 4. В процеса на превод разберете какво и защо 5. Променете всички параметри по-късно, ако е необходимо
> 3. Преведете скрипта от vb на delphiДори delphi не е необходим тук.
Съвсем vbscript или jscript е достатъчно. Критерият „чрез средства, изготвени от MS“ е изпълнен ;)
Интерфейсът е луд ;) Ако съжалявате за ресурса на мишката, можете да напишете ActiveX Script Task:
Функция Main() Dim oPackage Set oPackage = DTSGlobalVariables.Parent oPackage.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask.DestinationObjectName = "ZZZ0" oPackage.Tasks("DTSTask_DTSDataPumpTask_2").CustomTask.De stinationObjectName = "qqq0" oPackage.Tasks("DTSTask_DTSDataPumpTask_3").CustomTask.DestinationObjectName = "jhgjhg" и т.н. Основна = DTSTaskExecResult_Success Крайна функция
Или още по-добре нещо общо като това:
Функция Main() Dim oPackage Dim oTask STOP Set oPackage = DTSGlobalVariables.Parent За всяка oTask в oPackage.Tasks Ако oTask.CustomTask Тогава oTask.CustomTask.DestinationObjectName = UnqualifyName(oTask.CustomTask.DestinationObjectName) End If Next
Основна = DTSTaskExecResult_Success Крайна функция
Функция UnqualifyMe (SNAME) DIM ELTS Elts = Split (Sname, ".") Изберете Case Ubound (Elts) Case 0, 1 Unqualifyname = Sname Case 2 If Elts (1) = "" then unqualifyname = Elts (2) else unqualifyname = Elts (1) & amp ; "." & elts(2) End If Case Else err.Raise vbObjectError+1, "UnqualifyName", "Invalid object name" End Select End Function
> Всичко е направено както трябва. Сега същото за всички задачи.Добре.