2010-07-08 28 views
2

J'ai un projet sur lequel je travaille qui me demande de récupérer l'ID CPU de l'ordinateur pour créer une licence logicielle et la vérifier par rapport à la licence actuelle enregistrée. Donc, dit et fait, j'ai fait 2 programmes pour que cela se produise. Ensuite, j'ai besoin de mettre en œuvre cette solution dans mon projet CLR.Comment accéder à WMI dans les projets SQL CLR

Je remarque que je ne peux pas ajouter de référence System.Management dans un projet SQL. Par conséquent, je ne peux pas accéder aux commandes précitées pour récupérer l'ID CPU comme dans mes autres programmes .NET.

S'il vous plaît je cherchais une solution pour cela depuis une semaine maintenant et tous les conseils aideraient vraiment. Ive vu des gens, y compris le System.Management.dll à la création de l'Assemblée SQL, mais je ne peux vraiment pas comprendre comment cela est fait.

Répondre

2

Votre meilleur pari serait probablement de créer un service Web qui fait les choses WMI et renvoie l'ID cpu.

Alternativement, si vous voulez passer du côté obscur, vous pouvez regarder xp_cmdshel et OLE Automation Objects pour accéder aux ressources externes.

+0

Seul le problème avec l'utilisation d'un service Web est que vous devez connaître son chemin. Mon problème est de trouver ce chemin, c'est-à-dire donné un chemin virtuel tel que "/ utilities", obtenir son chemin physique. Oups ... vous avez besoin de WMI pour cela ou d'une chaîne infinie de dépendances besoin d'ajouter pour System.Management.dll qui, finalement, ne peut pas être ajouté à SQL Server. Donc, une adresse codée en dur à un service Web serait hors de question, quand le point d'utilisation de WMI est d'éviter d'utiliser des chemins codés en dur pour rechercher un chemin virtuel. Cela s'applique uniquement à mon problème particulier, pas la question de cette réponse. – Triynko

0

Je pense que vous devez activer l'option 'dangereuse' dans votre projet CLR pour pouvoir ajouter une référence à System.Management.dll. Le System.Management.dll devra ensuite ajouter à la base de données en utilisant CREATE ASSEMBLY.

+0

System.Management.dll ne peut pas être ajouté sans dépendances. La toute première erreur que vous obtiendrez est: Assembly 'system.configuration.install' n'a pas été trouvé dans le catalogue SQL. "Et quand vous essayez d'ajouter cela, vous obtiendrez" Assembly 'system.runtime.serialization' n'était pas Tous ces éléments sont accompagnés de l'avertissement suivant: L'assembly Microsoft '.NET Framework' X 'que vous enregistrez n'est pas entièrement testé dans l'environnement hébergé SQL Server et n'est pas pris en charge. Si vous mettez à niveau ou service cet assembly ou le .NET Framework, votre routine d'intégration CLR peut cesser de fonctionner. – Triynko