2

データベースのDocDataサイズが 8 GB あります。3 つのテーブルをDocDataから別のデータベースDocData2に移動したいと考えています。インポート エクスポート ウィザードとこれらのテーブルの ID 列は使用しません。スクリプトを使用して移動し、ID 列を含むデータをコピーしたいと考えています。テーブル サイズの 1 つは 7 GB です。

このクエリを使用しています

CREATE TABLE [DocData2].[dbo].DocumentPages AS 
SELECT  * FROM [DocData].[dbo].[DocumentPages]

しかし、私は次のエラーが発生しています。

Incorrect syntax near the keyword 'SELECT'.
4

5 に答える 5

3

ボルから

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  ON

ここに挿入します

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table  OFF
于 2012-05-01T11:25:02.250 に答える
3

このスクリプトを使用してください。

SELECT * INTO [DocData2].[dbo].DocumentPages FROM [DocData].[dbo].[DocumentPages]

SELECT INTOの詳細については、こちらをお読みください

于 2012-05-01T12:14:24.007 に答える
3

次のステートメントを実行する必要があります。

仮定:

  • 両方のデータベースが同じサーバーに存在します。
  • 宛先テーブルDocumentPagesが宛先データベースにまだ存在していないDocData2

スクリプト:

SELECT  *   
INTO    [DocData2].[dbo].[DocumentPages] 
FROM    [DocData].[dbo].[DocumentPages]

あなたの問題:

質問のスクリプトを使用してテーブルを作成することはできません。CREATE TABLEには、そのような方法で新しいテーブルを作成するために SELECT 出力を受け入れるオプションがありません。

于 2012-05-01T11:47:32.523 に答える
0

これは、両方のデータベースが同じサーバー上にある場合にのみ実行できます。それらが異なるサーバー上にある場合は、リンクサーバーやSSISパッケージなどの他の手法を使用する必要があります。

そうは言っても、最初に[DocData2]。[dbo] .DocumentPagesテーブルを作成してから、あるテーブルから別のテーブルにデータをコピーする必要があります。

insert into [DocData2].[dbo].[DocumentPages]
select * from  [DocData].[dbo].[DocumentPages]
于 2012-05-01T12:02:05.060 に答える
0

正確なコピーが必要な場合は、テーブルをスクリプト化し (オブジェクト ブラウザでテーブルを右クリックすると、スクリプトを作成するオプションが表示されます)、そのすべてのインデックス、制約などをスクリプト化します (インデックスを個別にスクリプト化する必要がある場合があります)。 )次に、スクリプトを実行してテーブルを作成し、@Diegoが行ったように挿入ステートメントを記述します(列のみを指定し、列を指定する必要があります)。

もちろん、データベースを正しく管理していれば、スクリプトは既にソース管理されています。少なくとも、これらのスクリプトを使用してこれを開始してください。

于 2012-05-01T13:54:18.280 に答える