0

我有 10 多个 SQL Server 数据库,我将使用每个数据库中的一个表来使用我正在创建的应用程序显示信息。例如,DB1、DB2....DB10。NewDB(帐户、国家、成本中心……等)。

我已经开始创建一个新数据库,该数据库将包含来自所有这 10 多个数据库的所有信息。但是,我在很多情况下感到困惑。

  1. 首先我应该遵循什么流程?我是否应该创建一个与实际数据源具有相同结构的表(在新数据库中)并将数据从实际数据源插入到新数据库中?

  2. 我应该在 DBMS 上这样做吗?如果是这样,它是一些脚本吗?(提示预期,因为对此很新)

我正在创建一个具有 10 多个数据源的报告生成应用程序。我需要一些提示,我应该以哪种方式进行?

提前感谢您的建议/帮助。

4

2 回答 2

1

如果表在同一个服务器实例上,您可以简单地创建一个将表链接在一起的视图,如下所示

CREATE VIEW [dbo].[MULTITABLELINK]
AS
SELECT     ID, 'Database1' AS dbSource , Account, Country
FROM       [database1].dbo.AccountTable
UNION
SELECT     ID, 'Database2' AS dbSource , Account, Country
FROM       [database2].dbo.AccountTable

但在您的情况下(不同的 SqlServer 实例),您可能需要创建一个链接服务器,允许查看为您工作的一个内部的不同实例

例如:

      EXEC master.dbo.sp_addlinkedserver 
@server = N'TheFirstLinkedServerName', 
@srvproduct=N'SQLSERVER', 
@provider=N'SQLNCLI', 
@datasrc=N'TheRemoteServerName', 
@catalog=N'TheCatalogToUse'

      EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'TheLinkedServerName',
@useself=N'False',   -- True if your users are on the same windomain
@locallogin='TheLocalDomainAndUserName',
@rmtuser='TheAllowedUserOnTheRemoteInstance',
@rmtpassword='ThePassowordOfTheRemoteUser'
于 2012-12-17T17:00:50.140 回答
0

这本质上是一个报告数据库吗?如果是这样,经典的解决方案是创建一个新数据库(名为 Reporting 或类似名称)并使用 SSIS(或其他一些数据提取/转换工具)来移动关心的报告数据。这样,您的报告活动就不会影响您的事务数据库,并且您可以以一种易于报告的方式安排报告数据库。“完整”解决方案会将数据提取到星型模式中。部分解决方案可能只是将人名放在每个表(或产品名称等)上,这样您就不必一直加入用户表,只需从登录表中报告“最近登录” .

于 2012-12-17T22:59:51.810 回答