Comment définir le “Nom de l'Application” dans la chaîne de connexion ADODB
.NET-je simplement utiliser Application Name = MyApp
à l'intérieur de la chaîne de connexion, mais lors de l'utilisation de connexion ADO par VBA dans le Moniteur d'Activité de SQL Server Management Studio affiche toujours Microsoft Office 2010
dans Processes
sur le Application
colonne peu importe le nom que j'ai mis sur le code VBA.
conn.ConnectionString = "UID=" & UID & ";PWD=" & PWD & ";DSN=" & DSN & _
";Application Name = MyApp"
Comment puis-je mettre le nom de l'application à des fins de surveillance?
Ahh je vois VBA chaîne de connexion ne prend pas en charge, il Demande le Nom de l'attribut. La seule façon que je peux penser de la résolution c'est d'exposer votre propre bibliothèque COM et le référencement de VBA. Votre propre bibliothèque de se connecter à la base de données via .NET framework qui vous permet d'utiliser l'application reposant Nom de paramètre. Envie d'une solution à l'aide d'une bibliothèque COM laissez-moi savoir, je peux répondre que je pense que @SysDragon
Vous pouvez facilement définir le nom de l'application dans la chaîne de connexion via VBA,
Vous pouvez facilement définir le nom de l'application dans la chaîne de connexion via VBA,
Application Name
est juste le mauvais mot-clé. Voir ma réponse.OriginalL'auteur SysDragon | 2013-12-05
Vous devez vous connecter pour publier un commentaire.
Ahh je vois VBA chaîne de connexion ne prend pas en charge la
Application Name
attribut. Il n'est tout simplement pas reconnu quand il est utilisé dans VBA. La seule façon que je peux penser de la résolution de ce au moment où il est de retour d'unADODB.Connection
objet d'un COM C# bibliothèque.Votre propre bibliothèque COM serait le retour d'une ADODB.Objet de connexion avec un prédéfini chaîne de connexion qui semblent fonctionner .NET. Vous devez vous connecter à la base de données à l'aide de VBA ADODB.Objet de connexion, mais avec un substituée la référence d'objet. Au lieu de
Set cn = new ADODB.Connection
vous utilisez unGetConection()
méthode exposée par votre propre bibliothèque.voici les étapes
Télécharger et installer Visual Studio Express pour Windows (FREE)
De l'ouvrir en tant qu'Administrateur et de créer un Nouveau Projet. Sélectionnez
Visual C#
puisClass Library
et le renommer enMyConnection
Dans le l'Explorateur de solutions, renommer
Class1.cs
àServerConnection.cs
Droit de la souris sur votre
MyConnection
projet dans le l'Explorateur de solutions et sélectionnezAdd Reference
Type
activeX
dans la zone de recherche et sélectionnez laMicrosoft ActiveX Data Objects 6.1 Library
De copier et de coller le code ci-dessous dans le
ServerConnection.cs
remplacer la totalité de ce qui est dans le fichier.Recherchez le
cnStr
variable dans le code et de mettre à JOUR votre chaîne de connexion de détails.Remarque: si vous n'êtes pas sûr au sujet de la chaîne de connexion, vous devez utiliser voir TOUTES LES CHAÎNES DE CONNEXION
Cliquez sur Outils dans Visual Studio et CRÉER un GUID
Remplacer le Guid avec votre propre et supprimer les accolades de sorte qu'ils sont dans le même format que ceux que vous voyez maintenant à partir de la copie du code
Clic droit
MyConnection
dans le l'Explorateur de solutions et sélectionnez Propriétés.Cliquez sur le
Application
onglet sur le côté gauche, puisAssembly Info
et les tiquesMake Assembly COM-Visible
Cliquez sur le
*Build*
dans le menu sur la gauche et cochezRegister For COM Interop
Remarque: Si vous êtes en développement pour la version 64 bits d'Office alors assurez-vous de changer la
Platform Target
sur le Construire menu àx64
! Ceci est obligatoire pour les 64 bits d'Office COM bibliothèques afin d'éviter toute ActiveX erreurs liées au.Clic droit
MyConnection
dans le l'Explorateur de solutions et sélectionnezBuild
à partir du menu.Si tout est OK alors votre
MyConnection.dll
etMyConnection.tlb
doit être généré. Aller sur ce chemin maintenantou partout où vous les avez enregistrés
et vous devriez voir vos fichiers.
Maintenant ouvrez Excel et aller à VBE. Cliquez sur
Tools
et sélectionnezReferences
.Cliquez sur le Parcourir bouton et accédez à la
MyConnection.tlb
.Aussi, ajouter des références à
Microsoft ActiveX Object 6.1 Library
- c'est donc vous pouvez utiliser la bibliothèque ADODB.Maintenant, cliquez-droit n'importe où dans le de l'Explorateur de Projet fenêtre et Insérer une nouvelle
Module
de copier et de coller le code ci-dessous à
Ouvrez SQL Server Management Studio, cliquez droit sur le serveur et sélectionnez
Activity Monitor
ne pas fermer cette fenêtre
De revenir à Excel et appuyez sur F5 ou frapper le vert jouer bouton dans le ruban.
maintenant, revenez à SSMS ( SQL Server Management Studio )
et d'attendre pour votre de connexion personnalisée nom de l'! 🙂
Ici nous allons! C'était facile, n'est-ce pas? 🙂
C'est ce qui se passe.
Vous êtes de retour d'une Connexion ADODB objet de vous C# COM bibliothèque à l'aide de
myNetConnection.GetConnection
fonctionC'est presque comme dire
Set cn = new ADODB.Connection
mais avec une chaîne de connexion qui vous l'avez fait dans votre code C#.Vous pouvez utiliser le
cn
objet comme un normal ADODB.Connexion de l'objet à l'intérieur de VBA maintenant.N'oubliez pas de toujours
.Close()
le ADODB.Connexion. Un bon programmeurs pratique est de toujours près tout ce que vous ouvrez - les ruisseaux, les connexions, etc.Vous pouvez compter sur le Garbage Collector pour libre références/mémoire mais j'ai aussi écrit un
Dispose()
méthode pour vous de sorte que vous pouvez forcer le GC à exécuter. Vous pouvez le faire immédiatement se débarrasser de la Connexion afin de ne pas accrocher dans la SSMS ouvert.N'oubliez pas d'utiliser
myNetConnection.Dispose
avec lecn.Close
et vous serez amende.Remarque:
C'est la façon dont je le ferais si quelqu'un pense que c'est à tort ou a besoin d'être mises à jour (comme instable ou dangereux), merci de laisser un commentaire.
Bien, j'espère que ce sera utile à tout le monde dans le futur 🙂
Merci @SysDragon. Êtes-vous réellement aller à l'utiliser?
Je vais essayer, car je n'ai pas de droits d'Administrateur sur cet ordinateur.
"
Object library invalid or contains references to object definitions that could not be found
" surGetConnection
=/quand et comment avez-vous eu cette erreur 😛 ?
OriginalL'auteur
Le bon mot clé pour définir le nom de l'application dans une chaîne de connexion ADODB en VBA est
APP
, pasApplication Name
.Exemple de chaîne de connexion, copiée à partir d'un MS Access application que je suis en train de travailler sur:
OriginalL'auteur Christian Specht