永遠不要給使用者直接存取資料表的權限。 若需讓使用者透過 Access 等工具互動,僅授予檢視表與預存程序的權限。
若預存程序擁有者為 dbo,且其參考的資料表/檢視表擁有者同為 dbo,則授予使用者對預存程序的 EXECUTE 權限即足夠,SQL Server 將不再檢查底層資料表的權限(所有權鏈結機制)。
SELECT/INSERT/UPDATE/DELETE 權限,預存程序僅能授 EXECUTE。執行跨資料庫查詢時,所有權鏈結不跨資料庫生效。若三個資料庫的擁有者不同,即使登入皆為 sysadmin 角色,仍無法直接聯結。解法:
sa)。sp_changedbowner 變更資料庫擁有者。EXECUTE AS 處理跨庫存取。採用「僅授權預存程序/檢視表 + 統一 dbo 擁有權」策略,可大幅簡化權限管理、強化安全性、避免權限鏈斷裂導致的跨庫查詢失敗。