SQL Server Я вижу хранимую процедуру с VBA в Excel, но группа пользователей не может - PullRequest
0 голосов
/ 03 января 2019

Я создал хранимую процедуру и могу выполнить ее с VBA ниже. Я дал группе пользователей (членом которой я являюсь) Разрешение на выполнение. Все члены этой группы, кроме меня, получают ошибку «не удалось найти хранимую процедуру» при запуске VBA. Пользователи могут войти в систему через SSMS и выполнить хранимую процедуру, щелкнув ее правой кнопкой мыши.

Когда я смотрю на вкладку «Действующий», где мне предоставлены разрешения «Выполнить», возникает ошибка: не удается выполнить роль участника-сервера, поскольку основной объект «MyUserGroup» не существует, этот тип участника не может быть олицетворен или у вас нет разрешения .

Администратор SQL сказал мне, что у моей группы есть разрешения на уровне DBO. Что мне не хватает? Почему они не могут найти хранимую процедуру при выполнении Excel VBA? Или эта ошибка говорит мне, что я не могу дать им разрешение, когда я смогу?

Excel VBA для вызова хранимой процедуры:

Function Sproc()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim cmd As ADODB.Command
    Dim ConnectionString As String
    Dim StrSproc As String

    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=ThisDatabase;Data Source=ThisSource;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ThisSourceID;Use Encryption for Data=False;Tag with column collation when possible=False"

    cnn.Open ConnectionString
    cnn.CommandTimeout = 900
    Set rst = New ADODB.Recordset
    StrSproc = "ExportListToExcel"
    rst.ActiveConnection = cnn
    rst.Open StrSproc

    For i = 0 To rst.Fields.Count - 1
        Cells(1, i + 1).Value = rst.Fields(i).Name
    Next i

    Cells(2, 1).CopyFromRecordset rst
Exit Function

1 Ответ

0 голосов
/ 03 января 2019

StrSproc = "ExportListToExcel"

Разрешение имен - это первое, что исключает.

Имя без квалификации схемы будет сначала разрешено в схеме пользователя по умолчанию, а затем в схеме dbo.

Таким образом, схема-квалифицирует имя процедуры, чтобы быть уверенным.

...