2010-10-20 7 views
16

J'ai créé une application Web asp.net qui utilise SMO avec SQL Server 2008 pour exécuter certains scripts de base de données. Il fait référence à ces assemblées (dans le répertoire C: \ Program Files \ Microsoft SQL Server \ 100 \ SDK dossier \ Assemblées):Impossible de trouver microsoft.sqlserver.batchparser.dll

Microsoft.SqlServer.ConnectionInfo 
Microsoft.SqlServer.Management.Sdk.Sfc 
Microsoft.SqlServer.Smo 

Le microsoft.sqlserver.batchparser.dll est pas dans ce dossier. Localement (machine 32 bits, IIS7) Je n'ai aucun problème.

Quand je publierai l'application à mon fournisseur d'hébergement (discountasp.net, SQL Server 2008, IIS7, 32bits aussi), je reçois cette erreur:

Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

J'ai cherché ma machine locale et je ne peux pas trouve cet assemblage. Cependant, cela fonctionne bien sur cette machine.

L'outil "Rapport de découverte d'installation de Microsoft SQL Server 2008" signale que la version 10.1.2531.0 est installée localement.

Merci

Répondre

10

Pour obtenir ce dll, vous devez installer les objets de gestion Microsoft SQL Server 2008 (disponible à partir here). Cette DLL particulière est installée dans le GAC, c'est pourquoi vous ne pouvez probablement pas le trouver en utilisant une recherche.

Étant donné que vous utilisez un fournisseur d'hébergement, il semblerait qu'ils ne l'aient pas installé. Vos choix sont de le faire installer par eux (ce qui est probablement improbable), ou de déployer la DLL manuellement (ce qui peut être sur un terrain de licence douteuse).

+0

Lorsque j'essaie d'installer SMO, le programme d'installation indique que j'ai déjà installé une version supérieure. Comme je suis capable de référencer Microsoft.SqlServer.Smo de mon projet, je suppose que cela le confirme. –

+1

@Nicolas: oui, vous l'aurez installé localement.Il n'est cependant pas installé sur votre hébergeur, d'où le problème que vous rencontrez. – adrianbanks

+0

L'appel de gacutil/l me montre que batchparser est dans le GAC, mais la boîte de dialogue de références dans VS2010 ne me le montrera pas. Aller manuellement dans le GAC pour extraire l'assembly et il se trouve dans le dossier GAC_32, pas GAC_MSIL. Quoi qu'il en soit, ajouter cela à Reflector montre qu'il a une référence à Microsoft.VisualC .... assez étrange. –

2

Vous devez également installer les composants SMO sur votre fournisseur d'hébergement. Vous pouvez les télécharger here.

+0

Eh bien, évidemment, je ne peux pas installer un msi sur un hôte partagé. Laissez-moi les appeler pour savoir ce qu'ils disent à propos de SMO. –

+0

discountasp ne l'installera pas, cela signifie-t-il que je dois extraire la DLL + sa dépendance (Microsoft.VisualC) et la mettre dans mon dossier bin? –

5

Tout d'abord, vous devez activer la navigation du dossier GAC:

1. Aller à l'Éditeur du Registre (RUN> regedit)
2. Allez dans HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
3. Faites un clic droit Fusion> Nouveau> DWORD
4. Tapez DisableCacheViewer
5. Double-cliquez DisableCacheViewer
6. valeur de consigne à 1

alors vous pouvez le trouver ici
C: \ Windows \ assembly \ GAC_32 \ Microsoft.SqlServer.BatchParser \ 10.0.0.0__89845dcd8080cc91

0

Vous pouvez installer la fonctionnalité de connexion client SQL à partir du DVD SQL Server ainsi. J'ai installé cela ainsi que les composants SDK pour résoudre ce problème lors de l'installation de SolarWinds.

0

J'avais SMO x64 installé, mais SMO x86 était requis sur le serveur de construction.