![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 小猴 ![]()
![]() |
遇到一個問題,已解決但不知道為何有差異,請教前輩、高手解惑 背景是同一台SQL SERVER上有A、B資料庫 A有個VIEW (VIEW_1),內容是SELECT * FROM B.dbo.VIEW_2 所以我會建立一個LOGIN[TEST_USER]和在A、B資料庫各建立一個使用者[TEST_USER]及GRANT VIEW的SELECT權限 USE [master] GO CREATE LOGIN [TEST_USER] WITH PASSWORD=N'123456', DEFAULT_DATABASE=[A], DEFAULT_LANGUAGE=[繁體中文], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [A] GO CREATE USER [TEST_USER] FOR LOGIN [TEST_USER] WITH DEFAULT_SCHEMA=[dbo] GO USE [B] GO CREATE USER [TEST_USER] FOR LOGIN [TEST_USER] WITH DEFAULT_SCHEMA=[dbo] GO USE [A] GO GRANT SELECT ON [dbo].[VIEW_1] TO [TEST_USER] USE [B] GO GRANT SELECT ON [dbo].[VIEW_2] TO [TEST_USER] 我使用POSTMAN呼叫API (API內容就是連向VIEW_1,使用帳號TEST_USER) 可以成功抓取VIEW_1的資料 但是如果是使用SSMS 下語法查詢SELECT * FROM VIEW_1 卻會出現錯誤訊息 ""伺服器主體 "TEST_USER" 在目前的安全性內容下無法存取資料庫 "B"。 解決方法是執行語法,讓使用者TEST_USER對應到B資料庫 USE [B] GO ALTER USER [TEST_USER] WITH LOGIN = [TEST_USER] GO 為何會有這樣的差異?
搜尋相關Tags的文章:
[ 在目前的安全性內容下無法存取資料庫 ] ,
本篇文章發表於2020-02-04 15:10 |