Stress Test SQL Server 2008 – Estourando o Limite de Bancos

Estudando para a prova de upgrade de MCDBA para MCITP, me deparei com uma questão sobre os número de Bancos de Dados que o SQL Server 2008 suporta, que são 32.767, incluindo os Bancos de Dados padrão (master, tempdb, msdb).

Resolvi testar. Claro que não ia criar tudo manualmente, então fiz um script Perl para isso:

use strict;
use warnings;
use DBD::ODBC;
my $dsn = 'EXPRESS';
my $username = 'SA';
my $password = 'UberDBA2010';
my $dbh = DBI->connect("dbi:ODBC:$dsn", $username, $password, {PrintError => 0});
my $count;
for ($count = 1; $count<32767; $count++)
 {
 my $database = "database_$count";
 my $sql_01 = "CREATE DATABASE $database";
 my $sth_01 = $dbh->prepare($sql_01) or die $DBI::errstr;
 $sth_01->execute() or die $DBI::errstr;
 print "$sql_01n";
 }

Em seguida, deixei rodando. Levou algumas horas, mas os Bancos de Dados (de apenas 1MB com apenas 46 tabelas cada, só para testar o conceito) foram criados perfeitamente, até o limite que estava na documentação.

Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:Documents and SettingsRPRONI>cd temp

C:TEMP>perl SQLServer_CreateDatabases.pl
CREATE DATABASE database_1
CREATE DATABASE database_2
CREATE DATABASE database_3
CREATE DATABASE database_4
CREATE DATABASE database_5
CREATE DATABASE database_6
CREATE DATABASE database_7
CREATE DATABASE database_8
CREATE DATABASE database_9
CREATE DATABASE database_10
...
CREATE DATABASE database_32746
CREATE DATABASE database_32747
CREATE DATABASE database_32748
CREATE DATABASE database_32749
CREATE DATABASE database_32750
CREATE DATABASE database_32751
CREATE DATABASE database_32752
CREATE DATABASE database_32753
CREATE DATABASE database_32754
CREATE DATABASE database_32755
CREATE DATABASE database_32756
CREATE DATABASE database_32757
CREATE DATABASE database_32758
CREATE DATABASE database_32759
CREATE DATABASE database_32760
CREATE DATABASE database_32761
CREATE DATABASE database_32762
[Microsoft][ODBC SQL Server Driver][SQL Server]Unable to create/attach any new database because the number of existing databases has reached
 the maximum number allowed: 32766. (SQL-42000) at SQLServer_CreateDatabases.pl line 16.

C:TEMP>

Aí embaixo está a prova de que os Bancos de Dados foram criados, e o SQL Server 2008 continuava funcional.

Na verdade, vejam que o número de Bancos de Dados permitidos é menor que 32.767, mesmo incluindo os default.

Bom, agora tenho que alterar o script Perl para apagar esses Bancos todos, e deixar rodando…

One comment

  1. Se tu faz isso com o Oracle, acho que o seu notebook congela! Out of memory. rs rs!

    Abraços,
    Rodrigo Almeida

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.