在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();