2

開発用に 10k に切り詰めたい 7M レコードのテーブルがあります。削除を試みましたが、全世界がトランザクション ログのサイズに圧倒されそうになったので、テーブルを切り捨てました。

元のテーブルから 10,000 レコードを dev テーブルに挿入したいのですが、ID 列と他の多くの列があるため、(ウィザードを使用して) SSIS を試してみようと思いました。うまく識別できますが、クエリを編集する場所がありません。というわけで早速トップ句でビューを作り、ソースのRowSetプロパティをビューに変更しました。ビューが実際に存在するため、ビューの作成ステートメントからビュー名をコピーして貼り付けましたが、ビューが実際に存在するため、もう一度失敗します。

SSIS は、パッケージの作成時に使用される DB オブジェクトを定義します。これにより、新しいビューが除外されます。そうであれば、どうすればそれを更新できますか?

4

5 に答える 5

1

これを行うために SSIS を使用する必要はまったくありません。SQL を使用してレコードを挿入できるはずです。まず、IDENTITY_INSERT をオンに設定する必要があります。次に、次のようなものを実行できるはずです。

SET IDENTITY_INSERT db.schema.dev_table オン

INSERT INTO dev_table SELECT TOP (10000) * FROM prod_table

于 2008-12-31T04:47:35.960 に答える
1

行サンプリング コントロールを使用して、上位 10000 行を取得するだけでなく、データ全体からランダムな数のレコードを抽出することもできます。これにより、開発/テストで使用するためのより良いサンプリングが得られます。これは、最も古い 10000 のレコード (ディストリビューションが私が見たほとんどのテーブルのような場合) に対してのみ開発するのではなく、ファイル全体からサンプリングするためです。

于 2011-08-01T14:10:41.287 に答える
1

Ed は正しいです。特に、10K レコードしか挿入していないため、SSIS はこのタスクには過剰です。

DEV テーブルのスキーマが本番環境と同一であると仮定すると、Ed が表示するスクリプトは問題なく動作します。

スキーマが異なる場合は、ID 列を含む列を具体的に指定できます (後で ID 挿入をオフに設定することを忘れないでください)。例えば:

SET IDENTITY_INSERT dbo.dev_table ON
INSERT INTO dev_table (Id, Col1,Col2,Col3,Col4)
SELECT TOP 10000 Id, Col1, Col2, Col3, Col4 FROM prod_table
SET IDENTITY_INSERT dbo.dev_table OFF
于 2009-01-01T11:52:49.813 に答える
0

ビューに完全修飾名を使用していますか? sit の所有者はデフォルトの所有者とは異なりますか? データ ソースを開き、データのプレビューを行って、すべてが接続されていることを確認します。

于 2008-12-26T22:32:37.013 に答える
0

パッケージを閉じて、再度開いてみましたか? 私はあなたがこれをしなければならないとは思っていません。私の最初の考えは、それはセキュリティの問題であり、自分で選択することを許可していないということです。

于 2008-12-02T20:21:45.343 に答える