c# 运行 加密的dtsx包
c# run encrypted dtsx package
// encrypted file path
string source = @"C:\Users\cfa\Desktop\encryptedPackage.dtsx";
// decrypted file destination
destination = @"C:\Users\cfa\Desktop\test\decryptedPackage.dtsx";
// read encrypted file
string text = System.IO.File.ReadAllText(source);
// decrypted file
decrypted = crypt.Decryption(text);
System.IO.File.WriteAllText(destination, decrypted);
// run decrypted dtsx file - destination
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = app.LoadPackage(destination, null);
DTSExecResult pkgResults;
pkgResults = package.Execute();
// delete destination file
File.Delete(destination);
使用之前的代码,我运行正在创建一个加密的 dtsx 包。
我 运行 解密方法并将结果保存到目标文件并执行该文件。
有没有办法在不创建目标文件的情况下 运行 包?
假设我理解请求,在内存中你有一个包的 XML 版本并且你希望节省将未加密位写入磁盘的成本只是 运行。使用 Application class 实例化的方法不会起作用,因为没有接受流的方法。它需要从磁盘、SQL 服务器 table 或包存储中提取。
相反,包 class 有一个 LoadFromXML 方法,这应该是您正在寻找的方法。
代码则变为
Package package = package.LoadFromXML(decrypted, null);
// encrypted file path
string source = @"C:\Users\cfa\Desktop\encryptedPackage.dtsx";
// decrypted file destination
destination = @"C:\Users\cfa\Desktop\test\decryptedPackage.dtsx";
// read encrypted file
string text = System.IO.File.ReadAllText(source);
// decrypted file
decrypted = crypt.Decryption(text);
System.IO.File.WriteAllText(destination, decrypted);
// run decrypted dtsx file - destination
Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = app.LoadPackage(destination, null);
DTSExecResult pkgResults;
pkgResults = package.Execute();
// delete destination file
File.Delete(destination);
使用之前的代码,我运行正在创建一个加密的 dtsx 包。 我 运行 解密方法并将结果保存到目标文件并执行该文件。 有没有办法在不创建目标文件的情况下 运行 包?
假设我理解请求,在内存中你有一个包的 XML 版本并且你希望节省将未加密位写入磁盘的成本只是 运行。使用 Application class 实例化的方法不会起作用,因为没有接受流的方法。它需要从磁盘、SQL 服务器 table 或包存储中提取。
相反,包 class 有一个 LoadFromXML 方法,这应该是您正在寻找的方法。
代码则变为
Package package = package.LoadFromXML(decrypted, null);