0

10 以上の SQL Server データベースがあり、そこから各データベースの 1 つのテーブルを使用して、作成中のアプリケーションを使用して情報を表示します。たとえば、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 に答える