バックグラウンド:
私は誰かに私の仕事をさせようとしているのではないと言って、これを前置きする必要があります。目標を達成するための方法が複数あるというちょっとした岐路に立っているような気がしますが、どれが「標準」であるか、および/または私の比較的限られた知識が不足しているかどうかはわかりません。
私は6か月間進化しているシステムを持っており、1月11日以降、DBスキーマはかなり安定しています。(毎月の会計サイクルに対応するために毎月のデータベースを作成するのに大きな間違いを犯したかどうかはわかりませんでしたが、それ以外の方法で行うノウハウがありませんでした)
今:
上司から、すべての月次データベースのレコードで構成される年次レポートを作成するように依頼されています。
私が始めたこと:
メタデータスキーマをまとめて、ETL操作を実行するアプリケーションを作成するのに十分な情報を入力しました。
外観は次のとおりです。
USE [DAMain1]
GO
CREATE TABLE AccountingPeriod (
Id INT PRIMARY KEY NOT NULL,
Name VARCHAR(255) NOT NULL UNIQUE,
DateStart DATE NOT NULL,
DateStop DATE NOT NULL
)
GO
INSERT INTO AccountingPeriod VALUES
(1, 'Jan11', '1/1/2011', '1/31/2011')
,(2, 'Feb11', '2/1/2011', '2/28/2011')
,(3, 'Mar11', '3/1/2011', '3/31/2011')
,(4, 'Apr11', '4/1/2011', '4/30/2011')
,(5, 'May11', '5/1/2011', '5/31/2011')
CREATE TABLE [DBServer] (
Id INT PRIMARY KEY NOT NULL,
Name VARCHAR(255) NOT NULL UNIQUE
)
GO
INSERT INTO DBServer VALUES
(1, 'Aaron.directagents.local')
GO
CREATE TABLE [DBInstance] (
Id INT PRIMARY KEY NOT NULL
,DBServerId int NOT NULL REFERENCES DBServer(Id)
,SchemaName VARCHAR(255) NOT NULL
,CatalogName VARCHAR(255) NOT NULL
,ConnectionString VARCHAR(2000) NOT NULL
)
GO
INSERT INTO DBInstance VALUES
(1, 1, 'dbo', 'DADatabaseR2', 'Data Source=aaron\sqlexpress;Initial Catalog=DADatabaseR2;Integrated Security=True')
,(2, 1, 'dbo', 'DADatabaseR3', 'Data Source=aaron\sqlexpress;Initial Catalog=DADatabaseR3;Integrated Security=True')
,(3, 1, 'dbo', 'DADatabaseMarch11', 'Data Source=aaron\sqlexpress;Initial Catalog=DADatabaseMarch11;Integrated Security=True')
,(4, 1, 'dbo', 'DADatabaseApr11', 'Data Source=aaron\sqlexpress;Initial Catalog=DADatabaseApr11;Integrated Security=True')
GO
CREATE TABLE DADB (
Id int PRIMARY KEY NOT NULL,
Name VARCHAR(255) NOT NULL UNIQUE,
AccountingPeriodId int NOT NULL REFERENCES AccountingPeriod(Id),
DBInstanceId INT NOT NULL REFERENCES DbInstance(Id)
)
GO
INSERT INTO DADB VALUES
(1, 'Direct Agents Database for January 2011', 1, 1)
,(2, 'Direct Agents Database for February 2011', 2, 2)
,(3, 'Direct Agents Database for March 2011', 3, 3)
,(4, 'Direct Agents Database for April 2011', 4, 4)
GO
CREATE VIEW DADBs AS
SELECT
DA.Name [Database]
,AP.Name [Accounting Period]
,AP.DateStart [Start]
,AP.DateStop [Stop]
,DS.Name [Server]
,DI.SchemaName
,DI.CatalogName
,DI.ConnectionString [Connection]
FROM
DADB DA
INNER JOIN AccountingPeriod AP ON DA.AccountingPeriodId=AP.Id
INNER JOIN DBInstance DI ON DA.DBInstanceId=DI.Id
INNER JOIN DBServer DS ON DI.DBServerId=DS.Id
GO
SELECT * FROM DADBs
GO
問題:
これが合理的/通常の方法であるかどうかはわかりません。一つのことを始めるのに十分な時間はありますが、どの道を進むべきかを自分で理解することはできません。
質問:説明したように、広告申込情報データを取得して複数のデータベースに集約する必要がある場合、カスタムETLソリューションを駆動するメタデータテーブルを定義する代わりの方法はありますか?(私の目的では、C#アプリとSSISプロジェクトは同等ですが、ここでAnalysisServicesまたはReportingServicesを使用できるかどうかを知りたいと思います)