2013-10-04 72 views
0

我有一個場景,我需要允許用戶在一個數據庫中訪問同一SQL服務器上另一個數據庫中的對象。2個數據庫中的SQL用戶權限

SQL SERVER SETUP:
我有一個SQL Server 2008 Express實例正在運行。

在這一例子中,我有以下幾點:

2數據庫:
DATABASE1
DATABASE2

2登錄:
ADMIN1
ADMIN2

DATABASE1有一個用戶(USER1)上ADMIN1創建並且對SELECT,UPDATE,刪除,插入和GRANT在DATABASE1

存儲過程的執行權限

DATABASE2對ADMIN2創建的用戶(USER2),並且具有對SELECT,UPDATE權限, DELETE,INSERT和格蘭特DATABASE2存儲過程的EXECUTE

問題:
什麼我需要是讓「USER1」 SELECT /在DATABASE2

我曾嘗試EXECUTE權限表和存儲過程幾個帖子的一些片段,但我不知道如何編寫SQL。 我也嘗試過通過右鍵點擊用戶並在管理工作室中登錄來勾選權限複選框的方式手動執行此操作,但我需要SQL在我的腳本中執行。

的原因我的問題
我在DATABASE1和DATABASE2表這是相關的,但顯然我們不能創造跨越不同的數據庫外鍵約束。 我們認爲處理2個表之間關係的最佳方法是在DATABASE1中創建一個存儲過程,以查詢DATABASE2中的 相關表並返回結果。

不能發佈任何示例的道歉,因爲我無法通過與上述場景相匹配的搜索找到任何示例。 如果我可以提供任何進一步的信息,請讓我知道。

非常感謝 千電子伏

+0

只是另一個想法.......當我「跨數據庫」看到了。想法1.在Database1中創建一個引用Database2的視圖。我會把它放在一個新定義的模式名稱下。因此...查詢數據庫1(查看db 2中的數據),您將有「從OtherDatabasesSchema.vwCounty ........ Idea2中選擇A,B,C,在db1中使用代碼中的同義詞,以及這個同義詞可以指向數據庫2中的對象。 – granadaCoder

回答

0

只要你的用戶是在實例級別定義,您可以授予他們,他們中的每個數據庫需要的任何權利。在主服務器下創建用戶,然後將其添加爲每個數據庫的用戶,以授予他們每個特定數據庫所需的權限。

有更詳細的編輯(基於評論):

首先,你需要創建一個數據庫登錄。這是一個登錄名,然後可以將其作爲用戶添加到實例中的一個或多個數據庫。

詳細這裏(包括SQL語法):http://technet.microsoft.com/en-us/library/ms189751.aspx

其次,您需要提供用戶數據庫(數據庫1,的Database2,等...)。您需要將這些用戶添加到安裝的每個產品數據庫中。只要用戶在那裏,您就可以在您的實例上的各種數據庫中進行查詢。

詳細這裏(包括SQL):http://technet.microsoft.com/en-us/library/aa337545.aspx

祝您好運!

+0

感謝您對MystikSpiral的快速​​響應。事情是,DATABASE1是首先創建的,DATABASE2是針對不同的產品的,只有在購買了產品2時纔會創建DATABASE1。的用戶是否已經創建好了,如果用戶已經分配到數據庫,我可以在當前存在的地方編輯他們的權限,而不必在主數據庫下重新創建用戶,有沒有辦法? – Kev

+0

你沒有提到數據庫的存在是可變的,這會使事情發生相當大的變化,你是否可以控制每個數據庫的設置?如果這樣做,在部署數據庫之前,使用正確的權限對它們進行配置。 – MystikSpiral

+0

In本質上可能有一個DATABASE3和一個DATABASE4,可以在將來創建。即:並非所有數據庫都是同時創建的,因此彼此不瞭解。所以我需要DATABASE1中的USER1能夠在某種意義上'適應',以便能夠在將來出現時讀取任何其他數據庫。事情是,USER1存在於DATABASE1中。希望能提供更多的見解。謝謝 – Kev