1

単体テストを自動的に実行するための 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で定義したクエリを実行する

4

0 に答える 0