我正在处理来自SQL Server的数据,我将这些数据转换为文本文件,然后上传到SSRS文件夹。
我尝试使用Web服务任务组件,但失败。
有什么办法解决这个问题吗?
答案 0 :(得分:0)
我找到了解决方案,这里是脚本任务中的代码,以及如何连接到SSRS并上传文件。这是一种接受字节数组并使用用于运行ssis程序包的默认凭据上传到SSRS的方法,当然,该凭据也应该可以访问ssrs或您打算在其中上传文件的ssrs中的特定文件夹。
protected bool UploadFile(byte[] data, string description)
{
var result = false;
try
{
if (data != null)
{
var fileName = string.Format("{0}_{1}_{2}{3}.zip", ZipPrefix, TargetDate, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"));
var prefix = string.Format("{0}_{1}", ZipPrefix, TargetDate);
ServiceManager.ReportingService2010 rs = new ServiceManager.ReportingService2010
{
Url = ServiceUrl,
RequestEncoding = Encoding.UTF8,
};
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
ServiceManager.Property[] properties = {
new ServiceManager.Property() { Name = "MimeType", Value = "application/zip" }
,new ServiceManager.Property(){ Name ="Description", Value = description}
};
var listItems = rs.ListChildren(SSRSFolder, false);
//var a = string.Join(", ", listItems.Select(x => x.Name));
//MessageBox.Show(a);
foreach (var item in listItems)
{
if (item.Name.Contains(prefix))
{
rs.DeleteItem(item.Path);
}
}
rs.CreateCatalogItem("Resource", fileName, SSRSFolder, false, data, properties, out ServiceManager.Warning[] warnings);
result = true;
}
}
catch (Exception e)
{
ErrorMessage = string.Format("Upload Error : {0}", e.Message);
Dts.Log(e.Message, 1, null);
throw new Exception(e.Message);
}
return result;
}
#endregion
请注意,我们需要向SSRS Soap添加服务引用。