AC # Script Task может использоваться для получения последнего FileNo
значения.Как только это будет сделано, переменная SSIS может быть обновлена для ее хранения, и вы можете сохранить ее, зарегистрировав ее в виде таблицы или другого метода.Другой вариант - хранить в таблице непосредственно в задаче сценария.Обе эти опции описаны ниже.В сценарии свойство DateTime.Now
также сохраняется как метка времени.В приведенном ниже примере показано получение последнего FileNo
из элемента и атрибута XML с использованием метода LastOrDefault
из LINQ .Этот метод возвращает значение по умолчанию, если элементы не найдены, тогда как метод Last
в этом случае выдаст ошибку.Используемый путь XML, конечно, является примером, и его нужно будет изменить на свой путь.
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Xml.Linq;
string xmlFile = Dts.Variables["User::XMLFilePath"].Value.ToString();
//load xml document
XDocument xmlDoc = XDocument.Load(xmlFile);
//get last FileNo value
string lastFileNoElement = xmlDoc.Elements("Root").Elements("Element1").
Elements("Element2").Elements("FileNo").LastOrDefault().Value.ToString();
string lastFileNoAttribute = xmlDoc.Elements("Root").Elements("Element1")
.Elements("Element2").Attributes("FileNo").LastOrDefault().Value.ToString();
//update ssis variable (element)
Dts.Variables["User::FileNoElement"].Value = lastFileNoElement;
//update ssis variable (attribute)
Dts.Variables["User::FileNoAttribute"].Value = lastFileNoAttribute;
//create connection
string connStr = @"Data Source=YourServer;Initial Catalog=Database;Integrated Security=true";
string cmd = "INSERT INTO Schema.LoggingTable (FileNoAttribute, FileNoElement, ExecutionTime) values(@atName, @eleName, @execTime)";
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlCommand sql = new SqlCommand(cmd, conn);
//attribute parameter
SqlParameter aParam = new SqlParameter("@atName", SqlDbType.VarChar);
aParam.Size = 50;
aParam.Direction = ParameterDirection.Input;
aParam.Value = lastFileNoAttribute;
//element parameter
SqlParameter eParam = new SqlParameter("@eleName", SqlDbType.VarChar);
eParam.Size = 50;
eParam.Direction = ParameterDirection.Input;
eParam.Value = lastFileNoElement;
//timestamp
SqlParameter dateParam = new SqlParameter("@execTime", SqlDbType.DateTime);
dateParam.Direction = ParameterDirection.Input;
dateParam.Value = DateTime.Now;
sql.Parameters.Add(aParam);
sql.Parameters.Add(eParam);
sql.Parameters.Add(dateParam);
conn.Open();
//insert data
sql.ExecuteNonQuery();
}