2009-03-09 6 views
0

Такая же база данных и приложение странно работают на нашей тестовой машине, но она отлично работает на других компьютерах.Ошибки сервера SQL Server 2000

На тестовой машине:

  • Мы получаем исключение ошибок SSL. Мы исправили это на основе статьи MS KB, но после этого сказали
  • «Server error» или «General network error» и замедлили до 1-2 хранимых процедур/секунду.
  • Профилировщик сказал, что у нас есть 2000-2500 соединений, когда приложение работает. То же приложение имеет только 5-10 соединений на других машинах. Я думаю, что случайные сообщения об ошибках вызваны этим огромным количеством подключений.

Мы переустановили SQL Server, отключили пул соединений и закрыли все datareaders.

Что еще я могу сделать? Есть ли «более глубокий» инструмент настройки для MSSQL2k? Любой скрытый компонент/ini/config/раздел реестра? Или другой профайлер, отличный от SQL Profiler, который я могу использовать?

+0

Вы проверили окна и журналы событий сервера SQL? –

+0

Какой пакет обновления является вашим SQL2K на тестовой машине? У вас есть тот же пакет обновления для всех ящиков? –

+0

Какую версию .NET вы используете? –

ответ

0

Thanx снова Митч, к сожалению, ни одна из этих идей не была реальным решением. Никаких сюрпризов - кажется, что сообщения об ошибках от MSSQL: случайный.

Случайные, я имею в виду:

  • После X [1] одновременное подключение MSSQL останавливается, чтобы закрыть соединение автоматически, и пул соединений канавки огромны.До X я видел только 5-10 соединений [2] /, но после этого было 2500 и MSSQL chrased.
  • В этом случае, MSSQL бросает детерминированное удобство сообщения об ошибках, как «Общих неудачи», «User (нуль)» и т.д.
  • Мы незакрытое соединение в нашем DAL (скрытые с 2 лет ... бррр), и когда мы это использовали, это вызвало эту ошибку.

[1] Я не имею ни малейшего представления о конкретном значении X

[2] Я использовал этот запрос:

SELECT 
     DB_NAME(dbid) as DBName, 
     COUNT(dbid) as NumberOfConnections, 
     loginame as LoginName 
    FROM 
     sysprocesses 
    WHERE 
     dbid > 0 
    GROUP BY 
     dbid, loginame 
0

Что произойдет, если отключить OLE DB ресурсов Pooling ?:

'For SQLOLEDB provider 
'strConnect = "Provider=SQLOLEDB;server=MyServerName;OLE DB Services = -2;uid=AppUser;pwd=AppUser;initial catalog=northwind" 

' For MSDASQL provider 
'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; OLE DB Services= -2" 
0

Другая вещь, чтобы посмотреть на это ли вы всегда указать тип и направление параметров хранимой процедуры с ADO.NET.

Что происходит внутри, так это sqlClient преобразует параметры, которые вы установили в ADO.NET, в соответствующие типы данных в параметрах хранимой процедуры. Но это может быть неудачно при отправке параметров nText, где это может привести к неправильному преобразованию.

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

1

Еще одна возможность (!):

Multiple Fixes for SQL Server .NET Data Provider

Когда SQLCommand.CommandTimeout является набор к нулю, вы ожидаете бесконечного тайм-аут. Однако версии 1.1 и 1.0 поставщика SqlClient неправильно таймаут, когда ответ от SQL Сервер разбит на два пакета. Сразу после получения второго пакета версии 1.1 и 1.0 неверного тайм-аута поставщика . Исправление , включенное в эту статью, исправляет этой проблемой, так что команда имеет бесконечный тайм-аут.

+0

Спасибо, может быть, это сработает. Я вернусь после некоторых тестов. – boj