Sql-Server

SQL Server 登錄以從單個數據庫訪問三個不同數據庫的表

  • June 6, 2014

我在 SQL Server 2008 R2 中創建了一個登錄名,並且只允許訪問在該數據庫中執行儲存過程。但是這個儲存過程實際上是從其他兩個數據庫訪問數據,這個使用者沒有訪問權限,我無法訪問這些數據庫。

如何創建具有單一數據庫訪問權限的使用者,但只能通過此儲存過程對其他兩個數據庫執行查詢?

到目前為止我做了什麼:

  1. 創建登錄並映射到Database1
  2. 右鍵點擊其中的儲存過程Database1並授予該使用者執行該儲存過程的權限
  3. 此儲存過程正在執行查詢以從其他兩個數據庫 (Database2Database3)獲取數據

例如

Select value1, value2, value3 
from Database1.[dbo].table1 
inner join Database2.[dbo].table2 on .... 
inner join Database3.[dbo].table3 on ....

跨數據庫所有權連結是更簡單的解決方案。但正如 Oliver 所指出的,它確實存在一些安全隱患。

如果您想避免跨數據庫所有權連結方法,可以引用 Erland Sommarskog 的話:“當您需要編寫訪問另一個數據庫中數據的儲存過程時,您可以通過使用存在於兩個數據庫。”

Erland 有一篇關於這個主題的長篇文章。我給你連結到使用證書的跨數據庫權限的具體問題:http: //www.sommarskog.se/grantperm.html#certcrossdb

這更安全,但工作量更大。

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