sql-server – 如何在ADODB连接字符串中设置“应用程序名称”
在.NET中,我只是在连接字符串中使用Application Name = MyApp,但是当通过VBA使用ADO连接时,SQL Server Management Studio的活动监视器始终在应用程序列的进程中显示Microsoft Office 2010,无论我在VBA代码.
conn.ConnectionString = "UID=" & UID & ";PWD=" & PWD & ";DSN=" & DSN & _ ";Application Name = MyApp" 如何设置应用程序名称以进行监视? 解决方法啊,我看到VBA连接字符串不支持Application Name属性.在VBA中使用时,它根本无法被识别.我能想到解决这个问题的唯一方法就是从COM C#库返回一个ADODB.Connection对象.您自己的COM库将返回一个带有预定义连接字符串的ADODB.Connection对象,该字符串似乎在.NET中有效.您将使用VBA ADODB.Connection对象连接到数据库,但使用替换的对象引用.代替 设置cn = new ADODB.Connection,您将使用由您自己的库公开的GetConection()方法. Dim cn as ADODB.Connection Set cn = yourCOMlibrary.GetConnection 这是步骤 下载并安装Visual Studio Express for Windows (FREE) 以管理员身份打开它并创建一个新项目.选择Visual C#,然后选择Class Library并将其重命名为MyConnection 在Solution Explorer中,将Class1.cs重命名为ServerConnection.cs 在Solution Explorer中右键单击MyConnection项目,然后选择Add Reference 在搜索框中键入activeX并勾选Microsoft ActiveX Data Objects 6.1 Library 将以下代码复制并粘贴到ServerConnection.cs中,完全替换文件中的内容. using System; using System.Runtime.InteropServices; using System.IO; using ADODB; namespace MyConnection { [InterfaceType(ComInterfaceType.InterfaceIsDual),Guid("32A5A235-DA9F-47F0-B02C-9243315F55FD")] public interface INetConnection { Connection GetConnection(); void Dispose(); } [ClassInterface(ClassInterfaceType.None)] [Guid("4E7C6DA2-2606-4100-97BB-AB11D85E54A3")] public class ServerConnection : INetConnection,IDisposable { private Connection cn; private string cnStr = "Provider=SQLOLEDB; Data Source=SERVERDB; Initial Catalog=default_catalog; User ID=username; Password=password;Application Name=MyNetConnection"; public Connection GetConnection() { cn = new Connection(); cn.ConnectionString = cnStr; return cn; } public void Dispose() { cn = null; GC.Collect(); } } } 在代码中找到cnStr变量并更新连接字符串详细信息. 注意:如果您不确定应该使用的连接字符串,请参阅ALL CONNECTION STRINGS 单击Visual Studio中的TOOL和CREATE GUID 将GUID替换为您自己的GUID并删除花括号,使它们的格式与您从复制的代码中看到的格式相同 在Solution Explorer中右键单击MyConnection,然后选择Properties. 单击左侧的Application选项卡,然后单击Assembly Info并勾选Make Assembly COM-Visible 单击左侧菜单中的* Build *并勾选Register for COM Interop 注意:如果您正在为64位Office开发,请确保将Build菜单上的Platform Target更改为x64!这对于64位Office COM库是必需的,以避免任何与ActiveX相关的错误. 在解决方案资源管理器中右键单击MyConnection,然后从菜单中选择“构建”. 如果一切正常,那么应该成功生成MyConnection.dll和MyConnection.tlb.现在去这条路 C:Usersusernamedesktop 或者你保存的地方 你应该看到你的文件. 现在打开Excel并转到VBE.单击工具,然后选择参考. 单击“浏览”按钮并导航到MyConnection.tlb. 此外,添加对Microsoft ActiveX Object 6.1库的引用 – 这样您就可以使用ADODB库. 现在右键单击Project Explorer窗口中的任意位置并插入一个新模块 将以下代码复制并粘贴到其中 Option Explicit Sub Main() Dim myNetConnection As ServerConnection Set myNetConnection = New ServerConnection Dim cn As ADODB.Connection Set cn = myNetConnection.GetConnection cn.Open Application.Wait (Now + TimeValue("0:00:10")) cn.Close Set cn = Nothing myNetConnection.Dispose End Sub 打开SQL Server Management Studio,右键单击服务器并选择“活动监视器” 不要关闭这个窗口 返回Excel并点击F5或点击功能区上的绿色播放按钮. 现在切换回SSMS(SQL Server Management Studio) 并等待您的自定义连接名称出现! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |