単体テストを自動的に実行するための 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())
ここでは、3 つのデータベース サーバー サーバー、サーバー 1、サーバー 2 があり、UT.MasterTask(SelectFromServer および SelectFromDatabase 列) テーブルから動的 > ソース接続を作成するたびに > > UT.MasterTask テーブルの SelectStatement 列で定義されたタスクを実行し、XML を挿入します。結果は UT.SelectResult テーブルになります。注: 結果列は固定されていません。行ごとに 1 つの xml エントリが必要です。UT.MasterTaskのSelectStatementで定義したクエリを実行する