簡短版本:我可以授予對某個角色的外部數據庫訪問權嗎?授予訪問一個數據庫給另一個用戶/角色的權限
龍版本:
我使用水晶被檢索從應用程序的SQL Server實例(database1
)數據的報告工作。
應用程序正在運行報告並覆蓋報告中的連接,我無法訪問應用程序代碼。
我已經向服務器(database2
)添加了一個新的數據庫,它正在從電話交換機收集信息,並且我想將這些信息加入應用數據(database1
)。
我可以在設計器中運行時加入數據和報告(以SA身份登錄),但當報告通過應用程序從外部運行時,它們會以相當普遍的錯誤失敗(無法檢索數據)。
我假設錯誤是由新的數據庫權限造成的,就像我登錄到應用程序中一樣,錯誤消失。
當嚮應用程序數據庫添加表/視圖/ sp(database1
)時,該應用程序對於運行報表的用戶具有特殊的數據庫角色我可以簡單地將選擇/執行授予此角色以允許報表訪問該對象。
現在我有一個不同的數據庫對象,但角色不容易訪問。
有沒有什麼辦法可以通過現有角色引用第二個db(database2
)?
如:
USE [database1]
GRANT EXECUTE ON [database2].[dbo].[CUSTOM_PROCEDURE] TO [applicationrole1]
OR
USE [database2]
GRANT EXECUTE ON [dbo].[CUSTOM_PROCEDURE] TO [database1].[dbo].[applicationrole1]
理想我希望能夠鏈接到角色莫名其妙,而不是重新創建一個新的角色,角色是通過定期,當新用戶添加/配置的應用程序更新。
(未添加,因爲這是不相關的問題,水晶報表)
編輯:
有沒有辦法做這樣的事情:
INSERT INTO Database2.sys.database_principals
SELECT * FROM Database1.sys.database_principals
WHERE [type] = 'S'
要複製用戶(而不是登錄)並添加角色成員?
有沒有一種方法可以爲添加到'database1'的新用戶完成這項工作? – bendataclear
對於任何需要添加的用戶,只需在每個數據庫上使用CREATE USER [用戶名] FOR LOGIN [登錄名]和[exec sp_addrolemember ...]部分(如果您已經可以省略CREATE USER部分通過管理工作室在每個數據庫中創建用戶)。 – HackedByChinese
新用戶非常經常添加,每次運行這些腳本可能都很困難。有什麼方法來鏡像登錄? – bendataclear