maxout пополнение базы данных sql server express 2005 2008 - PullRequest
0 голосов
/ 07 июля 2011

Мне нужно протестировать сценарий, в котором больше нет свободного места (дб заполнено). Я не имею в виду сделать размер БД очень маленьким. Я имею в виду оставить максимум доступным (около 4 ГБ для 2005 Express и 10 ГБ для SQL Server 2008 Express). Прямо сейчас у меня есть (t-sql псевдокод)

for (i=1 to 10,000)
{
   for (i=1 to 10,000)
   {
      insert into some random table
   }
   commit;
}

Этот тип логики работает, но занимает слишком много времени, чтобы заполнить БД. У кого-нибудь есть идеи получше? спасибо

Ответы [ 3 ]

1 голос
/ 07 июля 2011

Ничего волшебного не происходит, см. Что произойдет, когда вы достигнете предела SQL Server Express 4 ГБ / 10 ГБ?

Если вам действительно нужно сделать это, вы могли бы insert T (f) values('xxx') затем цикл

insert T (f)
   select f from T

после 16 итераций вы получите 65 тыс. Строк * длина f

1 голос
/ 07 июля 2011
;with a as
(select 0 level
union all
select a.level + 1 from a
where a.level < 1000000
)
select * into fillbase from a
option( MAXRECURSION 0) 

Вот еще один способ заполнить его быстрее

create table mytable(v varchar(max))

insert into mytable values (REPLICATE('XXX', 10000))

while 1 = 1
BEGIN
    insert mytable select v + v from @a
END
0 голосов
/ 07 июля 2011

Когда база данных SQL заполнена (т. Е. Нет свободного места для хранения новых данных), и вы попытаетесь добавить дополнительные данные, тогда:

  • Если автостраковка отключена, выполучить сообщение об ошибке
  • Если автозагрузка включена, и на жестком диске достаточно свободного места, база данных будет «расти», занимая больше места на жестком диске
  • Если автозагрузка включена и недостаточно жесткого дискапространства, вы получите другую ошибку (и, рано или поздно, запаниковали ИТ-персонал).

Если вы пытаетесь «заполнить» базу данных до уровня, не превышающего уровня необходимостибольше дискового пространства, ну, это будет очень трудно откалибровать.

Если вы пытаетесь протестировать ситуации, когда база данных должна расти, но недостаточно места на жестком диске, я бы предложил изменить ее ростфактор.Выполнение чего-то вроде

ALTER DATABASE MyDB
 modify file MyDb_FileXX (NAME = MyDBFileXXLogicalName, FILEGROWTH = 100TB)

установит базу данных (даже небольшую), чтобы попытаться увеличить ее на 100 терабайт, когда в ней не хватит места, и, скорее всего, это вызовет условие, которое вы можете искать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...