2009-03-09 7 views
0

La même base de données et l'application agissent bizarrement sur notre machine de test, mais cela fonctionne bien sur d'autres ordinateurs.Erreurs SQL Server 2000 Server

Sur la machine de test:

  • Nous obtenons exception d'erreur SSL. Nous avons corrigé cela sur la base d'un article MS KB, mais après cela, il a indiqué
  • "Server error" ou "General network error" et ralenti jusqu'à 1-2 procédures stockées/seconde.
  • Le profileur a déclaré que nous avons 2000-2500 connexions lorsque l'application s'exécute. La même application a seulement 5-10 connexion sur d'autres machines. Je pense que les messages d'erreur aléatoires sont causés par cet énorme nombre de connexions.

Nous avons réinstallé SQL Server, désactivé le pool de connexions et fermé toutes les têtes de lecture.

Que puis-je faire d'autre? Existe-t-il un outil de configuration "plus profond" pour MSSQL2k? Toute composante cachée/ini/config/clé de registre? Ou un autre profileur autre que SQL Profiler que je peux utiliser?

+0

Avez-vous vérifié les fenêtres et les journaux d'événements de serveur SQL? –

+0

Quel service pack est votre SQL2K sur la machine de test? Avez-vous le même service pack sur toutes les boîtes? –

+0

Quelle version de .NET utilisez-vous? –

Répondre

0

Encore merci Mitch, malheureusement aucune de ces idées n'était une vraie solution. Pas de surprise - il semble que ces messages d'erreur de MSSQL sont aléatoire.

au hasard, je veux dire:

  • Après X [1] connexion simultanée MSSQL arrête automatiquement pour fermer les connexions, et le pool de connexion rainures énorme.Avant X, j'ai vu seulement 5-10 connexions [2]/mais après cela il y avait 2500 et MSSQL chrased.
  • Dans ce cas, MSSQL lancers francs messages d'erreur non déterministe comme 'échec général', 'utilisateur (null)' etc.
  • Nous avions dans notre connexion DAL non fermée (caché depuis 2 ans ... brrr), et quand nous avons utilisé cela pour beaucoup, cela a causé cette erreur wreid.

[1] Je ne sais pas sur la valeur concrète de X

[2] Je l'ai utilisé cette requête:

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

Que se passe si vous désactivez OLE DB Resource 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

Une autre chose à regarder est de savoir si vous spécifiez toujours le type et la direction des paramètres de procédure stockée de ADO.NET. Ce qui se passe en interne est sqlClient convertit les paramètres que vous avez définis dans ADO.NET pour les types de données pertinents dans les paramètres de procédure stockée. Mais cela peut échouer lorsque vous envoyez des paramètres nText où cela pourrait entraîner une mauvaise conversion.

En outre, je vérifierais si vous passez parfois des instructions très longues dans les paramètres de procédure stockée.

1

Encore une autre possibilité (!):

Multiple Fixes for SQL Server .NET Data Provider

Lorsque le SQLCommand.CommandTimeout est mis à zéro, vous vous attendez à un délai d'attente infini. Cependant, les versions 1.1 et 1.0 du fournisseur SqlClient incorrectement délai d'expiration lorsqu'une réponse de SQL Server est divisée en deux paquets. Immédiatement après réception du deuxième paquet , les versions 1.1 et 1.0 du fournisseur expirent incorrectement. Le correctif qui est inclus dans cet article résout ce problème afin que la commande ait avoir un délai d'attente infini.

+0

Merci, peut-être que cela va fonctionner. Je reviendrai après quelques tests. – boj

Questions connexes