簡體   English   中英

收到錯誤“找不到對象 'XXX',因為它不存在或您沒有權限。” 在 SQL Server 中登錄為 SA

[英]Getting the error "Cannot find the object 'XXX', because it does not exist or you do not have permission." logged as SA in SQL Server

我試圖拒絕對 SQL Server 2016 中的用戶執行選擇的權限,即使我以 SA 身份登錄,它也沒有給我任何權限。

$/opt/mssql-tools/bin/sqlcmd -S localhost -U USER_TEST_0 -P ****** -d TEST_DB -Q 'CREATE TABLE TEST_TABLE (TEST_COLUMN INT)' Msg 2714, Level 16, State 6, Server test -服務器,第 1 行

數據庫中已經有一個名為“TEST_TABLE”的對象。

$/opt/mssql-tools/bin/sqlcmd -I -S localhost -U SA -P ****** -d TEST_DB -Q 'DENY SELECT ON TEST_TABLE TO USER_TEST_0' Msg 15151,級別 16,狀態 1,服務器測試服務器,第 1 行

找不到對象“TEST_TABLE”,因為它不存在或您沒有權限。

經過一番研究,我找到了答案。 看起來要訪問表,我需要指定架構。 我進行了查詢以查看如下所示的表的架構:

/opt/mssql-tools/bin/sqlcmd -I -S localhost -U SA -P ****** -d TEST_DB -Q "SELECT * FROM information_schema.tables"

結果證明模式是 USER_TABLE_0。

所以拒絕 SELECT 的正確方法是:

/opt/mssql-tools/bin/sqlcmd -I -S admin:localhost -U SA -P ****** -d TEST_DB -Q 'DENY SELECT ON [USER_TEST_0].TEST_TABLE TO USER_TEST_0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM