sql server - база данных с хранимыми процедурами, использующая всю память на сервере - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть база данных с двумя таблицами, которые заполнены данными из параллельных процессов, выполняющих вставку данных с использованием хранимых процедур. Сервер sql практически использует всю физическую память, и я заметил, что в некоторых таблицах отсутствовали данные, и при отладке я обнаружил, что из-за ошибок тайм-аута данные не вставлялись, поскольку я не учел это. Кто-то сказал мне, чтобы запустить exec who2 и, глядя на все транзакции, связанные с этим приложением, выглядит следующим образом

spid   status   login    hostname    blkby  dbname   command ......

738    sleeping  sa      R120         .     FeedsRS   AWAITING COMMAND
739    sleeping  sa      R120         .     FeedsRS   AWAITING COMMAND
740    sleeping  sa      R120         .     FeedsRS   AWAITING COMMAND

Сейчас их около 800, и я не уверен, что это значит. Если транзакции заблокированы, есть ли способ завершить их без проблем с данными, в то время как я добавляю код для обработки ошибок тайм-аута. Я даже не уверен, что это проблема, но я должен также установить разумное время ожидания блокировки вместо 0 по умолчанию. Любые идеи приветствуются.

1 Ответ

1 голос
/ 01 апреля 2011

вероятно один из:

  • Вы не закрываете соединения
  • У вас плохая обработка транзакций

И SQL Server будет использовать большую часть памятипо умолчанию: это не утечка или ошибка.

Для проверки открытых транзакций

SELECT * FROM sys.sysprocesses WHERE open_tran > 0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...