Algum problema de vazamento de memória do SQL Server 2008 Management Studio?

2

Não tenho certeza se esta pergunta pertence aqui ou ao StackOverflow. Estou tentando aqui, já que a minha pergunta é sobre vazamentos de memória e gerenciamento, mais do que programação.

Eu tenho um script SQL que tento executar e toda vez que a resposta do servidor é:

No sufficient memory to complete this query (essa é a ideia principal, não a mensagem exata)

Agora, o script tem mais de 50 000 linhas para inserir, como no exemplo abaixo:

1 = >

insert into Cities ([Name]) values (N'MyCityName')

2 = >

insert into Sectors ([Name], [Description], City_CityId)(
    select N'FirstSector', N'1at Sect. Desc.', c.CityId 
        from Cities c 
        where c.[Name] like N'MyCityName')

3 = >

insert into Streets ([Name], Direction_Value, Type_Value, SectorId, City_CityId)(
    select N'1st Street', 0, 10, s.SectorId, c.CityId
        from Cities c
            inner join Sectors s on s.City_CityId = c.CityId
        where c.[Name] like N'MyCityName' 
            and s.[Name] like N'FirstSector')

4 = >

insert into Addresses (StreetNumber, NumberSuffix_Value, UnitSuiteAppt, StreetId, SectorId, CityId)(
    select 999, 0, N'', st.StreetId, s.SectorId, c.CityId 
        from Cities c
            inner join Sectors s on s.City_CityId = c.CityId
            inner join Streets st on st.SectorId = s.SectorId and st.City_CityId = c.CityId
        where c.[Name] like N'MyCityName'
            and s.[Name] like N'FirstSector'
            and st.[Name] like N'1st Street')

5 = >

insert into People (Surname, FirstName, IsActive, AddressId)(
    select N'TheSurname', N'TheFirstName', 1, a.AddressId
        from Addresses a
            inner join Cities c on c.CityId = a.CityId
            inner join Streets s on s.StreetId = a.StreetId
        where a.StreetNumber = 999
            and a.NumberSuffix_Value = 0
            and a.UnitSuiteAppt = N''
            and c.[Name] like N'MyCityName'
            and s.[Name] like N'1st Street')

Então, eu tenho o número de cada instrução da seguinte forma:

1 = > 2;

2 = > 5;

3 = > ~ 700;

4 = > ~ 35000;

5 = > ~ 35000;

Executar esses milhares de instruções me levará ao problema de memória insuficiente. E enquanto eu abro o Gerenciador de Tarefas, eu tenho SSMS necessitando de mais de 400MB de RAM.

Minha configuração é a seguinte:

Lenovo W700ds
2x320GB HDD 7200RPM RAID 0
4GB RAM DDR3
Intel Core 2 Quad 2.0GHz 6MB L2
Windows 7 Professional 64bits (/w all updates)
SQL Server 2005 Express services running 
    (That is my data server, I'm not using 2008 for this project)
SQL Server Management Studio 2008 Express 
    (SP3 installed /w all updates)

Eu só tenho o aplicativo SSMS2008 em execução durante a execução das instruções de inserção.

Quaisquer pensamentos para tornar essa situação factível por otimização do sistema ou outras atualizações são muito apreciados.

    
por Will Marcouiller 05.12.2011 / 02:40

2 respostas

2

Você simplesmente precisa instalar mais memória. 4GB não é nada em um sistema moderno. Só porque o SSMS é o único programa em execução, isso não significa que é a única coisa que está usando memória (os serviços são grandes). Além disso, como você está executando a edição expressa, provavelmente não configurou o uso da memória para o SQL Server, que por padrão tenta capturar toda a memória possível.

    
por 05.12.2011 / 03:38
0

Você pode ver se um processo tem um vazamento de memória observando o conjunto de trabalho no perfmon.

    
por 05.12.2011 / 06:21