Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как запускать DTS на разных базах.  [new]
?
Guest
Имеем упрощенный DTS.
Dynamic Property Task --> Execute SQLTask
и connection на SQLServer

В Dynamic Property Task есть Global Variable “FileName”, которая определяется как:
select '\\MyTestDir$\' +db_name()+'_'+convert(varchar(10),getdate(),112) (подсказано злым шаманом)

Execute SQLTask отправляет мне e-mail с именем файла.
Запускаю я его из хранимки. Упрощенный вариант вот тут:
exec sp_OACreate 'DTS.Package', @objPackage output
exec @rc = sp_OAMethod @objPackage, 'LoadFromSQLServer' , null, @ServerName = @ServerName, @Flags = 256, @PackageName = @PackageName
exec @rc = sp_OAMethod @objPackage, 'Execute'
exec @rc = sp_OADestroy @objPackage

Всё работает. И я получаю имя файла, содержащее имя базы данных, с участием которой DTS создавался.

Проблемы начинаются тогда, когда я пытаюсь динамически изменить базу данных, на которой запускается DTS.
Т.е. создать ещё одну Global Variable не проблема, но я не знаю куда её приписать, что-бы изменить Source Database.
Подскажите пожалуйста.
13 май 04, 20:37    [677385]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
злой шаман
Member

Откуда: Питер
Сообщений: 1253
Не помню точно, или Initial Catalog в OLE DB Properties, либо Catalog просто в свойствах коннекции.
13 май 04, 22:07    [677437]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
?
Guest
А через что это можно сделать динамически? Добавить ActiveX в DTS?
13 май 04, 22:27    [677442]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
@kuz
Member

Откуда:
Сообщений: 116
Если понажимать кнопочку Add несколько раз в Dynamic Property Task, то можно добиться удивительных результатов.
14 май 04, 02:08    [677538]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
?
Guest
В Dynamic Properties Task ->OLE DB Provider Properties ->InitialCatalog я уже поставила Value= Glabal Variable “DatabaseName”. Но оно всёравно берёт Default Value
14 май 04, 17:20    [679845]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Может это - лучше передавать имя базы в пакет и создать маленький ActiveXScript -ик

Function Main()
	BackupFileName  = "\\MyTestDir$\" + DTSGlobalVariables("Dbname").Value +"_"+ Cstr(Year(Now()))
	BackupFileName  = BackupFileName  + Right("0" +Cstr(Month(Now())), 2)
	BackupFileName  = BackupFileName  + Right("0" +Cstr(Day(Now())), 2)

	DTSGlobalVariables("Filename").Value = BackupFileName
	Main = DTSTaskExecResult_Success
End Function
14 май 04, 17:51    [679957]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Aquarius
Member

Откуда:
Сообщений: 469
vot eshe prosto kusochek ActiveXScripta:

Dim sDataSource

sDataSource = DTSGlobalVariables("gvsDatabaseServer").Value
Set oExecSQL = oPkg.Connections("ConnectionName")
oExecSQL.DataSource = sDataSource

gde
sDataSource - localnaya peremennaya v scripte
gvsDatabaseServer (string) - Global Variable kotoraya soderzhit imya vashego servera
ConnectionName - nazvanie connectiona kotoryi vy sobiraetes' izmenyat'

Hotya vse eto mozhnoe sdelat' v DynamicPropertyTask.

Does it makes sense?
14 май 04, 18:02    [680006]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Aquarius
Member

Откуда:
Сообщений: 469
oops, sorry

oPkg eto vash package. Ego mozhno poluchit tak

Dim oPkg
Set oPkg=DTSGlobalVariables.Parent
14 май 04, 18:08    [680025]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
?
Guest
2Glory
Имя destination файла я меняю без проблем. И через Dynamic Properties и через ActiveX. Моя задача динамически поменять базу данных, в которой DTS запускается.
14 май 04, 18:21    [680052]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Моя задача динамически поменять базу данных, в которой DTS запускается.
Сам DTS ни в какой баз не запускается. Запускаются Task-и которые могут быть привязаны к какому либо Connection-у. Так вот для этого Connection-а и надо менять initial catalog
14 май 04, 18:34    [680082]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
?
Guest
2Glory
A когда я пытаюсь изменить initial catalog :

Dim objConn3

Set objConn3 = DTSGlobalVariables.Parent.Connections("Microsoft OLE DB Provider for SQL Server")

objConn3.InitialCatalog = DTSGlobalVariables("DatabaseName").Value

то получаю ошибку: Object doesn’t support this property or method: ‘objConn3.InitialCatalog’

2Aquarius
Спасибо за помощь, но DataSource меняет Server, a не Database.
14 май 04, 18:52    [680118]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Glory
Member

Откуда:
Сообщений: 104760
то получаю ошибку: Object doesn’t support this property or method: ‘objConn3.InitialCatalog’
Еще бы - все свойства храняться в _коллекции_ Properties

Dim dtsPackage
Set dtsPackage = DTSGlobalVariables.Parent
Set objConn = dtsPackage.Connections("X")

objConn.Properties.Item("Catalog").Value = "YYYY"
14 май 04, 19:48    [680179]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
Aquarius
Member

Откуда:
Сообщений: 469
2?:
nu blin, ya dumal vy budete experimentirovat' :)

chtoby pomenyat tolko database usaite property Catalog:

Dim sCatalog

sCatalog = DTSGlobalVariables("gvsDatabaseName").Value
Set oExecSQL = oPkg.Connections("ConnectionName")
oExecSQL.Catalog = sCatalog

Was it helpfull?
14 май 04, 20:27    [680217]     Ответить | Цитировать Сообщить модератору
 Re: Как запускать DTS на разных базах.  [new]
?
Guest
2Glory, Aquarius
Да экспериментировала я, экспериментировала!
Но я брала InitialCatalog вместо просто Catalog , а дальше уже всякая белиберда накручиалась.
Спасибо большое, теперь всё работает.
14 май 04, 21:38    [680259]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить