在c#中应用dts
本文将关注列出、执行dts包和改变dts包的属性或者全局变量。
首先我们看看如何列出保存在本地(local or (local)/netsdk)服务器为本地包。在dotnet中处理dts包的关键是增加对“microsoft dtspackage object library”的引用(dts.dll)。
以下代码可以列出服务器上的本地包。
static void main(string[] args)
{
dts.application app=new dts.application();
dts.packagesqlserver package= app.getpackagesqlserver("(local)//netsdk", "sa", "",
dts.dtssqlserverstorageflags.dtssqlstgflag_default);
dts.packageinfos infos;
infos = package.enumpackageinfos("", false, "");
foreach(dts.packageinfo info in infos)
{
console.writeline("name : {0}/tversionid : {1}",info.name,info.versionid);
}
console.read();
}
取保存在格式化存储文件中的dts包属性代码如下:
static void main(string[] args)
{
dts.package2class package=new dts.package2class();
dts.savedpackageinfos infos =
package.getsavedpackageinfos("c://pubs2pubs2package.dts");
foreach(dts.savedpackageinfo info in infos)
{
console.writeline("name : {0}/tversionid : {1}",
info.packagename,info.versionid);
}
package.uninitialize();
console.read();
}
通过package2class对象可以执行dts包,或者操作dts包的属性。代码如下:
static void main(string[] args)
{
dts.package2class package=new dts.package2class();
try
{
object mia=system.reflection.missing.value;
package.loadfromsqlserver("(local)//netsdk",
"sa", "", dts.dtssqlserverstorageflags.dtssqlstgflag_default, "", "",
"{f580dfc4-1f6a-4d70-b6a1-1c200b0d7890}", "customtaskpkg",ref mia);
console.writeline(package.description);
package.description="my description";
console.writeline(package.description);
}
catch(exception ex)
{
console.writeline(ex.message);
}
finally
{
package.uninitialize();
package=null;
}
console.read();
}
如果要使用最新的版本信息,则不填写版本id信息,代码如下:
package.savetosqlserver("(local)//netsdk", "sa", "",
dts.dtssqlserverstorageflags.dtssqlstgflag_default, "", "","",ref mia,false);
以下是设置dts包全局变量的过程:
static void main(string[] args)
{
dts.package2class package = new dts.package2class();
try
{
object mia=system.reflection.missing.value;
package.loadfromstoragefile("c://pubs2pubs2package.dts","","","",
"pubs2pubs2package",ref mia);
package.globalvariables.addglobalvariable("myvariable","myvalue");
foreach(dts.globalvariable gvar in package.globalvariables)
console.writeline("name : {0}/tvalue : {1}",gvar.name,gvar.value);
}
catch(exception ex)
{
console.writeline(ex.message);
}
finally
{
package.uninitialize();
}
console.read();
}
修改全局变量值语句:
package.globalvariables.item("myvariable").let_value("hello from c#");
以下语句将改动保存到dts包中。
package.savetostoragefile("c://pubs2pubs2package.dts","","",ref mia,false);
执行包:
package.execute();