Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DaniloTec

Aumentar a capacidade de inserts do SQL SERVER

Recommended Posts

Bom dia, gente.

Gostaria de saber se é possível aumentar o limite de insert do SQL SERVER. O limite dele é de 1000 registros, e preciso de mais do que isso.

É possível fazer isso?

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi... onde você esta fazendo o insert ?

 

testei no sql2008 1100 registros foi numa boa, veja:

declare @mil int = 0

-- create table teste1000 (valor int)

while @mil < 1100
begin
	insert into teste1000 values (@mil)
	set @mil = @mil + 1
end

select COUNT (*) from teste1000

select * from teste1000

-- drop table teste1000 
inseriu 1.100 registros

Compartilhar este post


Link para o post
Compartilhar em outros sites

eriva, eu acho que ele esta se referindo a importacao pelo BCP, eu jah tive problemas de performance com isso, mas nem imagino onde se altera este valor, msm pq, ele eh feito por sqlcmd

 

Danilo, desconheco tal modo de se alterar este valor, se por um acaso encontrar, posta pra gente ok?!

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Eriva.

Tente fazer da seguinte forma:

insert into tabela (campo1,campo2) values ('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
... depois de 1000
('valor1','valor2')

É aí que ele dá erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Eriva.

Tente fazer da seguinte forma:

insert into tabela (campo1,campo2) values ('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
('valor1','valor2'),
... depois de 1000
('valor1','valor2')

É aí que ele dá erro.

 

Danilo, fiz dessa forma no sql server 2008 e no sql server 2005 express é não ocorreu erro, posta a mensagem completa do erro, pra ver se alguem tem alguma idéia, e qual versão do sql server esta usando ?

 

versões testadas:

select @@version

Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86)   Feb  9 2007 22:47:07   
Express Edition on Windows NT 6.1 (Build 7600: ) 

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   Jul  9 2008 14:17:44   
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) 

para testar utilizei oseguinte script para montar 1.100 inserts

declare @mil int = 0

create table teste1000 (valor int)

while @mil < 1100
begin
        print 'insert into teste1000 values (' + convert(varchar(100),@mil) + ')'
        set @mil = @mil + 1
end

select COUNT (*) from teste1000

select * from teste1000

 drop table teste1000 
depois o resultado rodei em uma nova guia em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eriva, eu falei uma coisa e você fez outra.

Se fizer a forma que você falou realmente vai dar certo. Mas não foi isso que eu disse.

Se fizer:

insert into tabela (campo1,campo2) values ('valor1','valor2')
insert into tabela (campo1,campo2) values ('valor1','valor2')
insert into tabela (campo1,campo2) values ('valor1','valor2')
...
vai dar certo. Mas sintaxe que estou falando é outra.

Tente fazer

declare @cont int = 0
print 'insert into tbTeste (descTeste,descTeste2) values'
while @cont < 1100
begin
        print '(''valor1'',''valor2''),'
        set @cont = @cont + 1
end
Execute esse resultado. Veja que dá o seguinte erro:

Msg 10738, Level 15, State 1, Line 1003

The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

É essa sintaxe que apresenta erro no sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Engraçado, eu nunca tinha visto algo parecido, mas fuçando achei este link:

 

http://technet.microsoft.com/en-us/library/dd776382.aspx

 

realmente ha uma limitacao, ai você tem que segmentar o insert ou fazer pelo BCP que le blocos de mil em mil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.