Sql-Server
目前的安全上下文無法恢復
消息 15199,級別 16,狀態 1,第 29 行目前的安全上下文無法恢復。
請切換到
Execute As
呼叫的原始數據庫,然後重試。execute as login='juno' REVERT DECLARE @User VARCHAR(20) SELECT @USER = SUBSTRING(SUSER_SNAME(), CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME())) SELECT [THE_SERVER]= @@SERVERNAME ,[DB_NAME] =DB_NAME() ,[@USER]=@USER ,[SUSER_SNAME()]=SUSER_SNAME() ,[SYSTEM_USER]=SYSTEM_USER ,[USER_NAME()]=USER_NAME() ,[CURRENT_USER]=CURRENT_USER ,[ORIGINAL_LOGIN()]=ORIGINAL_LOGIN() ,[USER]=USER ,[SESSION_USER]=SESSION_USER
如果我不記得執行時的原始數據庫怎麼
execute as login
辦?有沒有辦法知道我在哪裡?
沒有辦法找出來,但是你可以嘗試該登錄可以訪問的所有數據庫,即在模擬登錄下執行以下程式碼:
select 'use ' + name + '; revert;' from sys.databases where HAS_DBACCESS(name) = 1;
通過這種方式,您可以找到可以模擬此登錄的所有數據庫。然後將輸出複製到查詢視窗並逐行嘗試直到成功。
但是返回自己最簡單的方法就是更改連接(在查詢視窗中點擊滑鼠右鍵)