7

現在、開発チームはアプリケーションを完成させており、テスターはパフォーマンス テストのために 20 個のテーブルに 1000000 レコードを挿入する必要があります。

私はテーブルを調べましたが、実際にはすべてのテーブル間に関係があります。

大量のダミー データをテーブルに挿入するには、非常に短いスパンでアプリケーションを完全に理解する必要があります。

これSQL serverだけのデータ挿入の可能性を挿入する方法はありますか。

アプローチを共有してください。

  1. 現在、 Excelでダミーデータを作成する可能性を計画していますが、ここではテーブル間の関係がわかりません。
  2. SQLプロファイラーが実行順序を提供することがGoogleで見つかりましたが、これを分析するためにアクセスを待っています。
  3. Google で見つけたもう 1 つのことは、red-gateツールを使用できることです。

このタスクを簡単な方法で実行するためのスクリプトまたはその他のソリューションはありますか。

これが一般的な質問である場合は、申し訳ありませんが、SQL リアルタイム シナリオで初めて作業しています。しかし、私はSQLに関する知識を持っています。

4

3 に答える 3

13

SQL Server でこれらのレコードを生成しない理由。以下は、1000000 行のテーブルを生成するスクリプトです。

DECLARE @values TABLE (DataValue int, RandValue INT)

;WITH mycte AS
(
SELECT 1 DataValue
UNION all
SELECT DataValue + 1
FROM    mycte   
WHERE   DataValue + 1 <= 1000000
)
INSERT INTO @values(DataValue,RandValue)
SELECT 
        DataValue,
        convert(int, convert (varbinary(4), NEWID(), 1)) AS RandValue
FROM mycte m 
OPTION (MAXRECURSION 0)


SELECT 
        v.DataValue,
        v.RandValue,
        (SELECT TOP 1 [User_ID] FROM tblUsers ORDER BY NEWID())
FROM    @values v

テーブル @values には、他の列の値を生成するために使用できるランダムな int 値 (列 RandValue) があります。また、ランダムな外部キーを取得する例もあります。

于 2015-03-09T09:45:14.063 に答える
0

以下は、数百万のダミー レコードをテーブルに挿入するために私が書いた簡単な手順です。最も効率的な方法ではないことはわかっていますが、約 5 分かかる 100 万のレコードの目的を果たします。プロシージャの実行中に生成する必要があるレコードの数を渡す必要があります。

IF  EXISTS (SELECT 1 FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[DUMMY_INSERT]') AND type in (N'P', N'PC'))
BEGIN
    DROP PROCEDURE  DUMMY_INSERT
END
GO
CREATE PROCEDURE DUMMY_INSERT (
@noOfRecords INT
)
AS
BEGIN

DECLARE @count int
SET @count = 1;

WHILE (@count < @noOfRecords)
BEGIN
    INSERT INTO [dbo].[LogTable] ([UserId],[UserName],[Priority],[CmdName],[Message],[Success],[StartTime],[EndTime],[RemoteAddress],[TId])
     VALUES(1,'user_'+CAST(@count AS VARCHAR(256)),1,'dummy command','dummy message.',0,convert(varchar(50),dateadd(D,Round(RAND() * 1000,1),getdate()),121),convert(varchar(50),dateadd(D,Round(RAND() * 1000,1),getdate()),121),'160.200.45.1',1);

     SET @count = @count + 1;
END
END
于 2016-03-17T09:12:37.527 に答える