Sql-Server

Master上集成安全成功,其他數據庫失敗

  • November 13, 2012

我對為什麼我的連接字元串選擇性地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$]

引用自:https://dba.stackexchange.com/questions/28580