Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 генерация данных для тестового сервера  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Добрый день.
Пишу приложения для работы с ms sql и нужно тестить его соответственно сначала на тестовом сервере, как бы мне быстро наполнить данными порядка пары гигов?
Погуглил полчаса, ничего на глаза не попалось, буду дальше гуглить, но может здесь кто быстрее подскажет.
8 сен 11, 12:30    [11246581]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
select * from sys.object a cross join sys.objects b cross join sys.objects c ...
8 сен 11, 12:33    [11246609]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
yazy4nik
Member

Откуда:
Сообщений: 49
Гавриленко Сергей Алексеевич
select * from sys.object a cross join sys.objects b cross join sys.objects c ...


а поподробней? я чет ниче не понял
8 сен 11, 12:49    [11246733]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
DECLARE @i INT

SET @i =1

WHILE @i <1000
BEGIN
	
INSERT INTO Table_1 (type_id, type_var)
VALUES (@i,CONVERT(VARCHAR, @i) +'- тест')
/*type_id - имеет тип int, type_var -имеет тип varchar */

SET @i =@i +1
END
8 сен 11, 12:58    [11246786]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Если нужно вставлять дату разную, тогда так
SELECT GETDATE() -round(RAND()*100  ,0)
Т.е. текущая дата минус число от 1 до 100.

Добавь ее в цикл.

DECLARE @Dat smalldatetime

WHILE @i <1000
BEGIN
@Dat = GETDATE() -round(RAND()*100  ,0)

INSERT INTO ...
VALUES (@Dat,... )

SET @i =@i +1
END
8 сен 11, 13:10    [11246887]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
iljy
Member

Откуда:
Сообщений: 8711
trew,

ага, и для нескольких гигов - цикл на миллиард итераций, зашибись. Работать будет до глубокой старости.

yazy4nik,
select top 10000 ROW_NUMBER() over(order by (select 1)) N, CHECKSUM(NEWID()) RND
from sys.objects o1,sys.objects o2,sys.objects o3
8 сен 11, 13:17    [11246965]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Поймать профайлером или написать запросы, которые вставляет ваше приложение, вставить в цикл по insert-у из select top из ваших таблиц, т.е копируйте ваши данные.
8 сен 11, 13:25    [11247033]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
Пашкин
Guest
А если мне тоже самое нужно сделать с помощью триггера? Приведите пожалуйста пример кода, а то у меня выдает ошибки, ругается на циклы, например на такой:

CREATE TRIGGER insert_generator_clients
   ON Clients
   AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;
	FOR @i IN 1..100 LOOP
	NULL;
	END LOOP; 
END
GO


дает ошибки: Msg 156, Level 15, State 1, Procedure insert_generator_clients, Line 7
Incorrect syntax near the keyword 'FOR'.
Msg 102, Level 15, State 1, Procedure insert_generator_clients, Line 9
Incorrect syntax near 'LOOP'.

пробовал разные циклы: ошибки подобные.. именно на циклах
2 апр 12, 01:03    [12348594]     Ответить | Цитировать Сообщить модератору
 Re: генерация данных для тестового сервера  [new]
Пашкин23456
Guest
Заработало вот так:
use SuperMarket;
go
 
CREATE TRIGGER insert_generator_clients
   ON Clients
   AFTER UPDATE
AS
BEGIN
    DECLARE @i INT

SET @i =1

WHILE @i <1000
BEGIN
	
INSERT INTO Clients
VALUES (33.33)

SET @i =@i +1
END
END
GO


спасибо хотябы уже за то, что у вас я нашел пример кода РАБОТАЮЩЕГО цикла)
2 апр 12, 01:07    [12348598]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить