2017-02-15 214 views
0

我的SQL Server Express數據庫中有一個名爲testSP的存儲過程。在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

在所有工作的數據庫中,我猜這些對象是在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

很高興聽到它的修復。如果我的答案是有用的,請勾選它。 –

相關問題