【问题标题】:How to update SQL Server database from multiple data sources for ASP.Net MVC 4 application如何从 ASP.Net MVC 4 应用程序的多个数据源更新 SQL Server 数据库
【发布时间】:2012-12-17 16:38:24
【问题描述】:

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

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

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

  2. 我应该在 DBMS 上执行此操作吗?如果是这样,它是一些脚本吗? (提示预期,因为对此非常陌生)

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

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

【问题讨论】:

  • 您能否判断这些表是否具有相同的架构以及它们是否托管在同一个 sql-server 实例中?
  • 这些表具有相同的架构,但它们托管在不同的 SQL 服务器实例中。

标签: sql-server asp.net-mvc database-design


【解决方案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'

【讨论】:

  • 是否需要在我新创建的数据库上创建此视图以保存来自所有其他数据源的信息?这似乎是直接从实际数据源中读取数据,这取决于访问权限。
  • 是的,您可以将视图放在用于创建报告的数据库中。从权限的角度来看,这很棘手,但是如果您可以设置此视图,那么您就不必再担心更改链接服务器数据库表中的数据了。 (当然,如果您尝试连接到每个数据库并在您的工作数据库中导入数据,也会存在权限问题)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多