我的SQL Server Express數據庫中有一個名爲testSP
的存儲過程。在SQL Server中執行存儲過程
我能夠使用
exec [db_owner].[testSP]
執行,但如果我用exec testSP
這是行不通的。
這是什麼原因?
我有其他數據庫沒有表現出這種行爲。
感謝您的幫助。
我的SQL Server Express數據庫中有一個名爲testSP
的存儲過程。在SQL Server中執行存儲過程
我能夠使用
exec [db_owner].[testSP]
執行,但如果我用exec testSP
這是行不通的。
這是什麼原因?
我有其他數據庫沒有表現出這種行爲。
感謝您的幫助。
您的用戶設置爲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模式是一個意外。
是的,我使用'[db_owner]。[testSP]'創建了該過程,該過程爲此存儲過程創建了一個自定義模式。我剛剛在一小時前修好了它。感謝您的輸入暱稱。 – Zee
很高興聽到它的修復。如果我的答案是有用的,請勾選它。 –
你的用戶可能有不同的默認模式。如果你運行'SELECT SCHEMA_NAME()',你會得到什麼? PS。如果你發佈實際的錯誤,它確實有幫助。阻止我們猜測。 –
該命令返回dbo – Zee
是的。 'db_owner'與'dbo'不同。什麼是實際的錯誤信息?基本上你的用戶被設置爲使用dbo,因爲它是默認模式,所以在db_owner模式中運行任何你需要的前綴它 –