Создайте файл конфигурации, содержащий информацию о соединении, затем укажите ссылку на это соединение - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть лист 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.

1 Ответ

0 голосов
/ 06 декабря 2018

В любом случае, VBA наконец должен получить пароль для подключения.Независимо от того, находится ли он в строке подключения или в файле конфигурации.

И подключение устанавливается Excel через VBA, поэтому пароль (или строка подключения, файл конфигурации и т. Д.) Должен распространяться вместе с Excel.файл листа.

Поэтому, если кто-то получил лист Excel и может использовать его в обычном режиме, я не думаю, что существует эффективный способ предотвратить знание пароля для подключения.

Если вы хотитеЕсли вы не хотите вносить в базу данных пользователей таблицы Excel, вам лучше не назначать им соответствующую привилегию базы данных для пользователя базы данных, который использует код VBA (если система баз данных поддерживает ограничение привилегий пользователя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...