Назад | Перейти на главную страницу

Есть ли какие-либо известные проблемы с утечкой памяти в SQL Server 2008 Management Studio?

Я не уверен, относится ли этот вопрос к этому вопросу или к StackOverflow. Я пытаюсь здесь, так как мой вопрос касается утечек памяти и управленческих вещей, а не программирования.

У меня есть сценарий SQL, который я пытаюсь запустить, и каждый раз, когда сервер отвечает:

No sufficient memory to complete this query (это основная идея, а не точное сообщение)

Теперь в скрипте есть более 50 000 строк для вставки, как в примере ниже:

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')

Итак, у меня есть номер каждой инструкции:

1 => 2;

2 => 5;

3 => ~ 700;

4 => ~ 35000;

5 => ~ 35000;

Выполнение этих тысяч инструкций приведет меня к проблеме нехватки памяти. И пока я открываю диспетчер задач, у меня есть SSMS, требующая более 400 МБ ОЗУ.

Моя конфигурация указана ниже:

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)

У меня работает только приложение SSMS2008 при выполнении инструкций вставки.

Мы очень ценим любые мысли о том, чтобы сделать эту ситуацию возможной путем оптимизации системы или других обновлений.

Вам просто нужно установить больше памяти. 4 ГБ - это ничто в современной системе. Тот факт, что SSMS - единственная запущенная программа, не означает, что это единственное, что использует память (службы - большие). Кроме того, поскольку вы используете экспресс-версию, вы, вероятно, не настроили использование памяти для SQL-сервера, который по умолчанию пытается захватить всю память, которую он может.

Вы можете увидеть, есть ли у процесса утечка памяти, посмотрев на рабочий набор в perfmon.