台灣最大程式設計社群網站
線上人數
1874
 
會員總數:245964
討論主題:189547
歡迎您免費加入會員
討論區列表 >> MS SQL >> AP讀取VIEW和使用SSMS讀取VIEW的差異
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
AP讀取VIEW和使用SSMS讀取VIEW的差異
價值 : 30 QP  點閱數:227 回應數:1
樓主

小猴
初學者
40 11
1217 24
發送站內信


遇到一個問題,已解決但不知道為何有差異,請教前輩、高手解惑

背景是同一台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
1樓
作者回應

小猴
檢舉此回應
搞烏龍了
應該是DBA沒有置換新的帳號,導致有差異...
本篇文章回覆於2020-02-04 15:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.