Подключение к MS SQL Server через роль приложения в VBA

#sql #sql-server #vba #stored-procedures #ado

Вопрос:

Я перестраиваю приложение VBA и перемещаю базу данных из Access в среду SQL Server Management Studio.

Я хочу добавить уровень доступа для приложения VBA, а не добавлять каждого пользователя для доступа (приложение выполняет всю проверку пользователей). Может ли кто — нибудь посоветовать, что я делаю не так? Я создал роль приложения SQL, чтобы иметь возможность выбирать из определенных таблиц. Я могу отправить имя пользователя и pw для роли приложения (что дает доступ для чтения к ТАБЛИЦЕ A), однако я не знаю, как впоследствии выполнить SQL-запрос. Кто-нибудь может мне помочь?

Я получаю следующую ошибку:

Аргументы неверного типа, находятся за пределами допустимого диапазона или противоречат друг другу.

 
Dim Cn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim RS As ADODB.Recordset
Dim ssql As String

cmd.ActiveConnection = "Provider=SQLOLEDB; Server=*SERVER*;Database=*DATABASE*;Trusted_Connection=Yes"
cmd.ActiveConnection.CursorLocation = adUseClient
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_setapprole"
cmd.Parameters.Refresh
   cmd(1) = "USERNAME"
   cmd(2) = "PASSWORD"
cmd.Execute

ssql = "SELECT DISTINCT VARIABLE FROM TABLE A  "

Set cmd2 = New ADODB.Command
cmd2.ActiveConnection = cmd.ActiveConnection

Set RS = New ADODB.Recordset
RS.Open ssql, cmd2


cmd.ActiveConnection.Close

End sub ```
 

Комментарии:

1. должны ли быть cmd(1) и т. cmd.parameters(1) Д. ?

2. Примечание: Вы не перемещаете приложение в среду SQL Server Management Studio. Это просто еще одно приложение для доступа к SQL Server. Вы перемещаете базу данных приложения на SQL Server.

3. Ну да, cmd(1) и cmd.parameters(1) работает. @Nathan_Sav Я думаю, что неправильно объяснил @жесткий код. В настоящее время я работаю над проектом, в котором пользователь заполняет форму пользователя в VBA, которая ранее была подключена к базе данных Access. Сейчас я переношу внутреннюю часть формы пользователя в базу данных SQL.