我想为单元测试创建 SSIS 包以自动运行。我有一些查询,我想每天在不同的服务器上运行,并且需要将结果存储在中央数据库中。问题是我想要 XML 中的结果。我可以动态连接不同的服务器并将结果存储在中央数据库中,但这次我有一个 XML 的结果并出现问题。 示例脚本
Use AdventureWorks2008
Go
Create Schema UT
Go
CREATE TABLE [UT].[MasterTask](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UTName] [varchar](100) NULL,
[SelectFromServer] [varchar](50) NULL,
[SelectFromDatabase] [varchar](50) NULL,
[SelectStatement] [varchar](max) NULL,
[CreatedDate] [datetime] NULL,
[UpdatedDate] [datetime] NULL
)
CREATE TABLE [UT].[SelectResult](
[ID] [int] IDENTITY(1,1) NOT NULL,
[MasterTaskID] [int] NULL,
[Result] [xml] NULL,
[CreatedDate] [datetime] NULL
)
Select * From UT.MasterTask
Insert Into UT.MasterTask Values
('Testing','Local','AdventureWorks2008','SELECT Name, ProductNumber, ListPrice AS Price
FROM Production.Product
WHERE ProductLine = ''R''
AND DaysToManufacture < 4
ORDER BY Name ASC;',GETDATE(),GETDATE())
Insert Into UT.MasterTask Values
('Testing','Server1','AdventureWorks2008','SELECT TOP 100 P.ProductID,
P.Name,
P.ListPrice,
P.Size,
P.ModifiedDate,
SOD.UnitPrice,
SOD.UnitPriceDiscount,
SOD.OrderQty,
SOD.LineTotal
FROM Sales.SalesOrderDetail SOD
INNER JOIN Production.Product P
ON SOD.ProductID = P.ProductID
WHERE SOD.UnitPrice > 1000
ORDER BY SOD.UnitPrice DESC',GETDATE(),GETDATE())
Insert Into UT.MasterTask Values
('Testing','Server2','AdventureWorks2008','Select * From Person.BusinessEntity',GETDATE(),GETDATE())
这里是三台数据库服务器 Server、Server1 和 Server2,每次我都会从 UT.MasterTask(SelectFromServer 和 SelectFromDatabase Column) 表 > > 创建一个动态 > 源连接并执行在 UT.MasterTask 表的 SelectStatement 列中定义的任务并插入 XML结果在 UT.SelectResult 表中。注意:结果列不固定。每行需要单个 xml 条目。执行在 UT.MasterTask 的 SelectStatement 中定义的查询