web-dev-qa-db-ja.com

クロスサーバーSQL

あるサーバーのデータベースから別のサーバーのデータベースにデータを移植したいのですが。データベースは両方とも異なるmssql 2005サーバー上にあります。宛先データベースは[時間間隔]ベースでゼロから生成されるため、レプリケーションはおそらくオプションではありません。

できれば私は次のようなことをします

insert *
from db1/table1
into db2/table2
where rule1 = true

このスクリプトでは、接続資格情報が何らかの形で含まれることは明らかです。

30
Boris Callens

私はあなたがしたいのは this msdnの記事に従ってリンクサーバーを作成することだと思います。次に、4つの部分からなるオブジェクト名を使用して選択します。例:

Select * From ServerName.DbName.SchemaName.TableName
35
Matthew Pelser

あなたはこのようにオープンデータソースを使うことができます:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO


SELECT  *
FROM    OPENDATASOURCE('SQLOLEDB',
                   'Data Source=<Ip Of Your Server>;
                    User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name>

Go
8

さて、私はレプリケーションに関するあなたのコメントに同意しません。データベースを最初から作成してレプリケーションを開始できます。また、利用可能なクライアントデータベースを更新することによって更新を実行するか、単にデータベースを再作成するかを制御できます。

自動レプリケーションは、キーと関係を自動的に管理することにより、作業を容易にします。

MSSQL Server Studioを介してスナップショットレプリケーションを開始し、T-SQLに対応するスクリプト(パブリケーションとサブスクリプションの両方に対応するT-SQL命令)を取得して、これらのスクリプトをジョブの一部として記録するのが最も簡単だと思います。 SQLエージェントのジョブリスト、またはレプリケーションフォルダ内のレプリケーションジョブとして。

1

SQL Server Integration Services(SSIS)はオプションですか?もしそうなら、私はそれを使います。

1
Galwegian

リンクサーバールートにアクセスできます。

select * intoを使用できません。selectintoを挿入する必要があります。

レプリケーションがうまくいかない場合は修正が難しく、適切に管理しないと他の問題が発生する可能性があるため、経験がない場合はレプリケーションを避けます。

特にデータベースが小さい場合は、シンプルにしてください。

1
Wes Brown

データベースのコンテンツ全体を1つのサーバーから別のサーバーに転送しますか、それともいくつかのテーブルの一部のデータだけを転送しますか?

どちらのオプションでも、定期的に転送する予定がある場合は特に、SSISが適切に機能します。

1つまたは2つのテーブルから一部のデータをコピーするだけで、SQL Management StudioのTSQLを使用してデータをコピーする場合は、pelserによって提案されているリンクサーバーを使用できます。

  1. ソースデータベースサーバーをリンクサーバーとして設定する
  2. 次の構文を使用してデータにアクセスします
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
1
kristof

データ変換サービスを使用して仕事をすることができますか?これは、この種のことを行うためのあらゆる種類のボルト結合ツールを提供します。

SQL Server 2005機能パックは、MicrosoftのWebサイトからダウンロードできます here

0
Thomas Rushton