Многие разработчики, как правило, именно начинающие, сталкиваются в своей практике с вопросом, разрешение которого становится большой проблемой.
На самом деле, всё решить можно куда более проще, нежели кажется.
Речь идёт об ошибке, которая формулируется следующим образом: «Could not find stored procedure в MSSQL Server».
Microsoft SQL Server – это система управления реляционными базами данных. В ней используется язык запросов Transact-SQL, который был разработан корпорацией Microsoft совместно с дочерней компанией SAP AG.
Язык Transact-SQL представляет собой реализацию стандарта ANSI/ISO по структурированному языку с расширениями. Применяется для действий с информационными базами данных, размером от небольших, личных, до крупных, задействованных на больших организациях и предприятиях.
Смысл упомянутой ошибки заключается в следующем: имеется определённое клиентское приложение, сообщающееся с информационной базой данных с целью выполнения конкретных действий. Чтобы гарантировать безопасность соединения, создаётся особый пользователь в базе данных MSSQL, у которого возможности для действий полностью ограничены. Исключением является выполнения ряда действий, касающихся сохранённых процедур.
Далее, во время осуществления операции, направленной на выполнение вызова хранимой процедуры, программа выдаёт надпись: «Could not find stored procedure».
В этой ситуации не помогают не изменение прав, ни помещение конкретного пользователя в группы.
Решение возникает оттуда, откуда многие не ждали. И ситуация начинает разрешаться гораздо проще, чем возможно, казалось: происходит это из-за того, что забыли конкретно указать пользователя, к которому относится хранимая процедура.
Вполне возможно, что хранимую процедуру создавал один пользователь, которого обозначим ХХХ – им будет администратор, а второго именуем YYY – он же должен и быть тем самым пользователем, у которого права ограниченны.
Первое, что мы должны сделать, чтобы разрешить эту проблему: предоставить пользователю, которого именовали YYY права на исполнение хранимой процедуры. Это действие можно выполнить посредством MSSQL Management Studio или же воспользовавшись прямым SQL-запросом:
GRANT EXECUTE ON Procedure_Name TO YYY
Вторым нашим действием, которое мы должны выполнить, является то, чтобы в очередной раз не пришлось видеть уже давно знакомое сообщение: «Could not find stored procedure» необходимо всего-то просто указать полный вариант имени хранимой процедуры. Выглядит он примерно так:
EXEC [XXX].[Procedure_Name]
Внимательное изучение этого решения, равно и как его безупречное понимание, позволят Вам в будущем не только избегать подобных неприятных ситуаций, связанных с вышеупомянутыми ошибками, но и решать их, нет затрачивая много времени и сил.
Выполните все описанные действия, и Вы увидите, что всё работает должным образом, и более нет никаких проблем, которые могли бы являться преградой для дальнейшей работы.