2010-06-16 97 views
0

我們使用SQL Server 2008作爲我們的RDBMS,並且我們有一個擁有不同用戶的數據庫,而不是dbo作爲它的所有者。找不到存儲過程

問題是在一臺機器上存儲過程無法運行,除非它的所有者被提及。

如果我們連接到我們的數據庫使用該用戶,並嘗試執行以下操作:

exec ourSP 

我們得到了一個「找不到ourSP」錯誤,但能正常工作:

exec user.ourSP 

不有誰知道什麼會導致這種奇怪的行爲?

+1

你是說你連接到數據庫作爲「用戶」,它沒有看到它?你可能想通過你的連接做一個簡單的測試來調用SELECT USER_NAME()來確保你連接的方式如何(或者在SQL Profiler中檢查它) – 2010-06-16 14:52:21

+0

原來,儘管日誌記錄爲'user 'SELECT USER_NAME()返回'dbo',但我不知道如何做到這一點。我執行sp_change_users_login來自動修復登錄問題,但沒有任何更改。 – Beatles1692 2010-06-19 07:30:50

回答

0

看起來,如果用戶在服務器安全區域被選中爲SysAdmin,那麼在建立到數據庫的連接時,它將具有dbo用戶名,並將其視爲dbo。

0

檢查在其下連接正在取得用戶的默認架構 - 可能使用查詢

select default_schema_name from sys.database_principals where name = '~user_name~' 

對象在用戶的默認模式和DBO然後搜索。除非明確命名,否則不會考慮其他架構,就像在第二個查詢中所做的那樣。

在此基礎上,似乎a)用戶設置不正確或b)您沒有按照您期望的用戶進行連接。