83

2 つの SQL Server (両方とも 2005 バージョン) があります。

複数のテーブルをあるテーブルから別のテーブルに移行したいと考えています。

私が試してみました:

  • ソースサーバーで、データベースを右クリックして選択しましTasks/Generate scriptsた。問題は、その下にオプションTable/View optionsがないことです。Script data

  • 次にScript Table As/Create script、宛先サーバーにテーブルを作成するために SQL ファイルを生成していました。しかし、私はまだすべてのデータが必要です。

次に、使用してみました:

SELECT * 
INTO [destination server].[destination database].[dbo].[destination table] 
FROM [source server].[source database].[dbo].[source table]

しかし、私はエラーが発生します:

オブジェクトに最大数を超えるプレフィックスが含まれています。最大は 2 です。

誰かが私の問題に対する正しい解決策を教えてもらえますか?

4

12 に答える 12

78

これを試して:

  1. Script Table As / Create Scriptステップのスクリプトを使用して、ターゲット サーバーにテーブルを作成します。

  2. ターゲット サーバーで、T-SQL ステートメントを発行できます。

    INSERT INTO dbo.YourTableNameHere
       SELECT *
       FROM [SourceServer].[SourceDatabase].dbo.YourTableNameHere
    

これで問題なく動作するはずです。

于 2012-06-13T06:24:17.987 に答える
60

さらに別のオプションを表示するには (SQL Server 2008 以降の場合):

  1. データベースを右クリック -> [タスク] を選択 -> [スクリプトの生成] を選択
  2. コピーする特定のデータベース オブジェクトを選択します。1つ以上のテーブルとしましょう。[次へ] をクリックします
  3. [詳細設定] をクリックし、[スクリプトを作成するデータの種類] まで下にスクロールして、[スキーマとデータ] を選択します。[OK] をクリックします。
  4. 生成されたスクリプトを保存する場所を選択し、[次へ] をクリックして続行します
于 2014-09-30T15:32:14.560 に答える
11

タスク/スクリプトの生成にスクリプト テーブル オプションがあります。私も最初見逃した!ただし、そこに挿入スクリプトを生成できます (非常に優れた機能ですが、非常に直感的でない場所にあります)。

「Set Scripting Options」のステップに到達したら、「Advanced」タブに移動します。

ここで説明されている手順(写真は理解できますが、ラトビア語で書いています)。

于 2012-06-13T06:24:16.643 に答える
10

SQL Serverインポートおよびエクスポート ウィザード([タスク] -> [データのエクスポート] の下) を使用してみてください。

宛先データベースにテーブルを作成することを提案します。これまで見てきたように、スクリプト ウィザードはテーブル構造しか作成できません。

于 2012-06-13T06:25:48.540 に答える
6

スクリプトを使用してテーブルが既に作成されている場合、データをコピーする別の方法は、BCPコマンドを使用して、ソースサーバーから宛先サーバーにすべてのデータをコピーすることです。

テーブルデータをソースサーバー上のテキストファイルにエクスポートするには:

bcp <database name>.<schema name>.<table name> OUT C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password> 

ターゲットサーバー上のテキストファイルからテーブルデータをインポートするには:

bcp <database name>.<schema name>.<table name> IN C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
于 2012-06-13T06:38:40.003 に答える
3

キックのためだけに。

リンクサーバーを作成できなかったため、また本番サーバーに接続するだけでは使用できINSERT INTOなかったため、次のことを行いました。

  • 本番サーバーデータベースのバックアップを作成しました
  • テストサーバーにデータベースを復元しました
  • ステートメントへの挿入を実行しました

それは裏口の解決策ですが、私は問題を抱えていたのでそれは私のために働きました。

SCRIPT TABLE AS / CREATEすべてのキーとインデックスを転送するためにを使用して空のテーブルを作成したため、使用できませんSELECT INTOでした。SELECT INTOテーブルが宛先の場所に存在しない場合にのみ機能しますが、キーとインデックスはコピーされないため、手動で行う必要があります。ステートメントを使用するINSERT INTOことの欠点は、すべての列名を手動で指定する必要があることです。さらに、一部の外部キー制約が失敗した場合に問題が発生する可能性があります。

すべての回答者のおかげで、いくつかの優れた解決策がありますが、私はmarc_sanwserを受け入れることにしました。

于 2012-06-13T11:39:10.863 に答える
3

ソースから宛先にデータをコピーする場合:

use <DestinationDatabase>
select * into <DestinationTable> from <SourceDataBase>.dbo.<SourceTable>
于 2012-06-13T06:23:06.760 に答える
2

これは、SQL Server Management Studio の「データのインポート/エクスポート...」から実行できます。

于 2015-03-28T01:06:30.150 に答える
2

ソース/宛先サーバーを選択することはできません。

データベースが同じサーバー上にある場合、これを実行できます。

テーブルの列が等しい場合(順序を含む!)、これを行うことができます:

INSERT INTO [destination database].[dbo].[destination table]
SELECT *
FROM [source database].[dbo].[source table]

一度これを実行したい場合は、ソース データベースをバックアップ/復元できます。これを頻繁に行う必要がある場合は、ソース データベースを定義する SSIS プロジェクトを開始し (任意のサーバー上の任意の接続を選択できます)、そこにデータを移動するプロジェクトを作成することをお勧めします。詳細については、http: //msdn.microsoft.com/en-us/library/ms169917%28v=sql.105%29.aspxを参照してください。

于 2012-06-13T06:22:42.040 に答える
1

これは多少回避策ですが、私にとってはうまくいきました。他の人にとってもこの問題でうまくいくことを願っています:

エクスポートするテーブルで select SQL クエリを実行し、結果をドライブに .xls として保存できます。

次に、すべての列とインデックスを使用して、データを追加するテーブルを作成します。これは、実際のテーブルを右クリックし、Create To script オプションを選択することで簡単に実行できます。

これで、テーブルを追加する DB を右クリックして、 Tasks>Import を選択できます。

インポート エクスポート ウィザードが開き、[次へ] を選択します。Microsoft Excel を入力データ ソースとして選択し、以前に保存した .xls ファイルを参照して選択します。

次に、宛先サーバーと、作成済みの宛先テーブルを選択します。

注: ID ベースのフィールドがある場合、このデータも挿入されるため、宛先テーブルで ID プロパティを削除することをお勧めします。したがって、これを Identity プロパティとしてのみ使用すると、インポート プロセスでエラーが発生します。

次にヒットして終了をクリックすると、インポートされているレコードの数が表示され、エラーが発生しなければ成功が返されます。

于 2014-07-16T20:08:43.627 に答える