Master上集成安全成功,其他數據庫失敗
我對為什麼我的連接字元串選擇性地
master
在 SQL Server 2005 中的數據庫上成功感到有些困惑。以下是我的應用程序的詳細資訊。任何想法在哪裡看?我顯然錯過了一些東西。另請記住,IIS 伺服器和 SQL Server 位於我嘗試實施 Windows 身份驗證的 Intranet 環境中的不同機器上。謝謝。:)連接字元串:
Server=SQLServer;Database=master;Integrated Security=true
–成功Server=SQLServer;Database=other;Integrated Security=true
–失敗失敗錯誤資訊:
Cannot open database "other" requested by the login. The login failed. Login failed for user 'DOMAIN\IIS_SERVERNAME$'.
我的 IIS 伺服器應用程序池和身份驗證設置:
- 應用程序池:.NET 4.0;綜合管道;身份=網路服務
- 身份驗證:模擬=禁用;Windows 身份驗證=啟用;核心模式=啟用;提供商=協商,NTLM
更新:顯然,對於連接到具有集成安全性的 SQL Server 的機器有某種登錄,否則它不會成功連接到
master
數據庫,對嗎?我猜這意味著數據庫級別存在問題,但我無法弄清楚哪個user
帳戶可以訪問它,master
因為它只有少數使用者。
在SQL Server中,只要LOGIN有效,它就可以訪問
public
角色中的 master 數據庫。這既有歷史原因,也有現實原因。例如,以“sp_”開頭的儲存過程首先在 master 數據庫中搜尋並從那裡執行。這意味著使用者首先需要訪問主數據庫。 tempdb是另一個允許使用者通過公共角色訪問的數據庫。使用者數據庫沒有將此作為預設設置,因此除非特別授予登錄權限,或者俱有伺服器範圍的角色(例如“sysadmin”),否則它將無法切換到數據庫上下文,因此會出現錯誤。
您設法使用機器帳戶登錄這一事實意味著它要麼是明確創建的 LOGIN,要麼是在 SQL Server Management Studio 中瀏覽對象資源管理器時出現在“登錄”下的組的成員。
[SERVER\Instance] Security Logins .... here ....
您可以專門為機器帳戶分配角色或授予執行權限:
use other; exec sp_addrolemember db_datareader, [DOMAIN\IIS_SERVERNAME$] GRANT EXECUTE ON sp_myproc TO [DOMAIN\IIS_SERVERNAME$]