2017-02-15 9 views
0

У меня есть хранимая процедура с именем testSP в моей базе данных SQL Server Express.Выполнение хранимой процедуры в SQL Server

Я могу выполнить его, используя

exec [db_owner].[testSP] 

, но если я использую exec testSP он не работает.

В чем причина этого?

У меня есть другие базы данных, которые не проявляют такого поведения.

Благодарим за помощь.

+0

Возможно, у вашего пользователя есть другая схема по умолчанию. Что вы получите, если вы запустите 'SELECT SCHEMA_NAME()'? PS. Это действительно помогает, если вы публикуете фактическую ошибку. Остановит нас догадки. –

+0

для этой команды он возвращает dbo – Zee

+0

Да. 'db_owner' отличается от' dbo'. Каково фактическое сообщение об ошибке? В основном ваш пользователь настроен на использование dbo по умолчанию, поэтому для запуска чего-либо в схеме db_owner вам нужно префикс –

ответ

1

Ваш пользователь настроен с dbo, поскольку это схема по умолчанию. Это довольно нормально

при запуске

exec testSP 

это с помощью схемы по умолчанию, которая dbo, поэтому он работает так:

exec [dbo].[testSP] 

, который не существует.

При запуске

exec [db_owner].[testSP] 

это найти и работает, что хранимая процедура

Я не знаю, фон, но я предполагаю, что кто-то неправильно/случайно создал и использовал схему под названием db_owner

Во всех работах db, я думаю, объекты находятся в схеме dbo, или ваш пользователь настроен на использование правильной схемы. Поищите в браузере объектов и сравнить

Если вы хотите переместить хранимую процедуру в dbo схемы запуска это:

ALTER SCHEMA dbo TRANSFER [db_owner].[testSP]; 

Если вы хотите изменить схему пользователей по умолчанию для данных db_owner запустить это:

ALTER USER [youruser] WITH DEFAULT_SCHEMA = db_owner; 

Я считаю, что схема db_owner является случайностью.

+0

Да, я создал процедуру с помощью '[db_owner]. [testSP]', которая создала настраиваемую схему для этой хранимой процедуры. Я только что исправил это час назад. Спасибо за ваш ник. – Zee

+0

Приятно слышать, что он исправлен. Если бы мой ответ был полезен, отметьте его. –