sql-server – 如何在ADODB连接字符串中设置“应用程序名称”

前端之家收集整理的这篇文章主要介绍了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=SERVER\\DB; 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:\Users\username\desktop\

或者你保存的地方

你应该看到你的文件.

现在打开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)

并等待您的自定义连接名称出现!

猜你在找的MsSQL相关文章