首页 > 解决方案 > 创建一个包含连接信息的配置文件,然后引用该连接

问题描述

我有一个 Excel 表,其中包含分配给按钮的 VBA 代码。

这是我的 VBA 代码的一部分:

Dim ConnectionStr As String
Dim sql As String

ConnectionStr = "Provider=SQLOLEDB.1;Password=ABCDEFG;User ID=xyz;Data Source=MyServer;Initial Catalog=NEW_DB"


With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array("OLEDB;" & ConnectionStr), _
    Destination:=Worksheets("Hidden").Range("$A$2")).QueryTable

       .CommandType = xlCmdSql
       .CommandText = "EXECUTE [dbo].[usp_one]"
       .SavePassword = True
       .SaveData = True
       .AdjustColumnWidth = True
       .ListObject.DisplayName = "Table_in_Hidden"
       .Refresh BackgroundQuery:=False

End With

我不想在 VBA 宏中显示连接字符串,因为有人可能会“窥视”它并发现我们的 SQL Server 密码。

似乎一种解决方案是创建一个包含连接信息的配置文件,然后在 VBA 宏中引用该配置文件。

标签: sql-serverexcelvba

解决方案


无论如何,VBA 必须最终获得连接的密码。无论是在连接字符串还是配置文件中。

并且连接是由 Excel 通过 VBA 建立的,因此密码(或连接字符串、配置文件等)必须与 Excel 工作表文件一起分发。

因此,如果有人拿到了excel表格并且可以正常使用,我认为没有有效的方法可以防止知道连接密码。

如果您不希望excel表格的用户对数据库进行一些更改,最好不要为VBA代码使用的数据库用户分配相应的数据库权限(如果数据库系统支持用户权限限制)。


推荐阅读