не удалось найти сохраненный процесс - PullRequest
0 голосов
/ 16 мая 2011

Я пытаюсь запустить хранимый процесс на сервере SQL 2008.Я создал однострочный proc, dbo.sp_test_proc.Я могу запустить proc через EXEC на сервере, и он возвращается.Тем не менее, когда я пытаюсь запустить через ADO в Excel / VBA, я получаю сообщение об ошибке «не удалось найти хранимую процедуру sp_test_proc.Я могу запускать хранимые схемы sys-схемы через ADO, но не через dbo.Я в роли db_owner, и код vba выполняется под тем же пользователем Windows, который создал хранимый процесс в студии управления сервером.У кого-нибудь есть идеи?Я в тупике.

Sub storedProcedure()
'This sub-routine defines an ADOBD command to return variables to VBA from SQL Stored Procedures.
'The ADODB command executes a Stored Procedure on the SQL Server (cmd.CommandText = [Stored Procedure Name])
'Input requirements from the Stored procedure are declared as variants at the start of the sub-routine.

Dim cnt As ADODB.connection
Dim rst As ADODB.recordset
Dim cmd As ADODB.Command
Dim stCon As String         'SQL Connection string
Dim stProcName As String    'Stored Procedure name

'Declare variables for Stored Procedure
Dim myVariable As Variant
Dim myReturn As String

'Set ADODB requirements
Set cnt = New ADODB.connection
Set rst = New ADODB.recordset
Set cmd = New ADODB.Command

'Define database connection string
stCon = "Provider=SQLOLEDB.1;"
stCon = stCon + "Data Source=myserver;"
stCon = stCon + "Initial Catalogue=Mmydb;"
stCon = stCon + "Integrated Security=SSPI;"
stCon = stCon + "Persist Security Info=True;"

'Open database connection
cnt.ConnectionString = stCon
cnt.Open

' Defines the stored procedure commands
stProcName = "dbo.my_sp"                'Define name of Stored Procedure to execute."
'stProcName = "sys.sp_stored_procedures"    'Define name of Stored Procedure to execute.
cmd.CommandType = adCmdStoredProc           'Define the ADODB command
cmd.ActiveConnection = cnt                  'Set the command connection string
cmd.CommandText = stProcName                'Define Stored Procedure to run



'Execute stored procedure and return to a recordset
Set rst = cmd.Execute()
'myReturn = rst.Fields("procedure_name").Value
myReturn = rst.Fields("mycolumn").Value

'Call Sub-Routine_That_Uses_The_Returned_Data
MsgBox (myReturn)

'Close database connection and clean up
If CBool(rst.State And adStateOpen) = True Then rst.Close
Set rst = Nothing

If CBool(cnt.State And adStateOpen) = True Then cnt.Close
Set cnt = Nothing

End Sub

1 Ответ

0 голосов
/ 15 июня 2016

Я действительно хочу поблагодарить вас всех, так как этот пост помог мне исправить «проблему 3 часов», почему код ADODB hel * vba не работает!

Я просто добавлю, что в моем случае этоне работал Установите rst = cmd.Execute () Мне нужно изменить это на: Установите rst = cmd.Execute (,, adCmdStoredProc)

ТакжеЯ ошибся в: InitialCatalog = .Правильно одно: Исходный каталог = В этом случае сообщение об ошибке действительно было бесполезным, поскольку в нем говорилось: «Не удалось найти хранимую процедуру ...»

...