배경 :여러 데이터베이스에서 데이터를 함께 가져 오려면 어떻게해야합니까?
내가하지나를 위해 내 일을하는 사람을 얻으려고 말함으로써이 서문한다. 나는 내 목표에 도달하는 데 여러 가지 방법이있는 사거리에 있지만, 어느 것이 '표준'인지, 내 비교적 제한된 지식이 부족한 지 확실하지 않습니다.
이제 6 개월 동안 발전해 온 시스템이 있으며, 1 월 11 일부터 DB 스키마가 상당히 안정적입니다. (월별 회계 사이클에 대응하기 위해 각 달에 대한 데이터베이스를 만드는 큰 실수를하고 있는지 확실 적이 없었다,하지만 난 그냥 다른 할 수있는 노하우가 없었어요) NOW
:
를내 상사가 모든 월간 데이터베이스의 레코드로 구성된 연초 보고서를 작성하라고 요청하고 있습니다.
내가 함께 메타 데이터 스키마를 넣어 내가 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 프로젝트는 eqiv이지만 여기서는 Analysis Services 또는 Reporting Services를 사용할 수 있는지 알고 싶습니다.)
예 - 문제가 악화되기 전에 수정하십시오! – Cheeso
조언 해 주셔서 감사합니다. 호기심, 당신이 알고있게되면 - 나는 이것이 Analysis Services에 들어갈 수있는 나의 기회일지도 모른다고 생각하고 있었다. 제 기본적인 이해는 정적 데이터를 기반으로 피벗 테이블이 많이 필요한 경우 이동하는 방법입니다. –
@Gabriel - 분석 서비스가 도움이 될 수도 있지만 필요하지 않을 수도 있습니다. 주기 별 회계 데이터 분석은 흔히 데이터웨어 하우스가 없어도 해결되는 공통적 인 문제입니다. 그러나 두 솔루션 모두 OLTP 데이터베이스가 올바른 형식이어야합니다. – Thomas