SSIS 內建目標不直接支援 XML 文件輸出,僅有 Flat File、Excel、OLE DB 等。
"" + (DT_WSTR,10)SalesOrderID + " " + (DT_WSTR,10)OrderQty + "
"
// C# ScriptMain.cs
public void Main()
{
var pkg = Dts.Variables["$Package::XmlOutputPath"].Value.ToString();
var conn = (SqlClient.SqlConnection)Dts.Connections["SourceDB"].AcquireConnection(null);
using (var cmd = new SqlClient.SqlCommand("SELECT * FROM Sales.SalesOrderDetail", conn))
using (var reader = cmd.ExecuteReader())
using (var writer = System.Xml.XmlWriter.Create(pkg, new XmlWriterSettings { Indent = true }))
{
writer.WriteStartElement("SalesOrderDetails");
while (reader.Read())
{
writer.WriteStartElement("Detail");
writer.WriteElementString("SalesOrderID", reader["SalesOrderID"].ToString());
writer.WriteElementString("OrderQty", reader["OrderQty"].ToString());
writer.WriteElementString("UnitPrice", reader["UnitPrice"].ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
}
Dts.TaskResult = (int)ScriptResults.Success;
}
| 維度 | 平面文件拼接 | Script Task |
|---|---|---|
| 開發難度 | 低 (純配置) | 中 (需 C#/VB.NET) |
| XML 結構靈活度 | 低 (扁平、屬性難處理) | 高 (任意巢狀、屬性、命名空間) |
| 性能 (大數據量) | 中 (字符串拼接開銷) | 高 (流式寫入、內存可控) |
| 維護性 | 表達式分散、難調試 | 代碼集中、可單元測試 |
| 部署依賴 | 無 | 目標機需 .NET Framework |
43659
1
2024.9940
...
