Sql-Server

程序未知的使用者/登錄名

  • August 5, 2016

SQL Server 版本為 11.0.5569.0。

伺服器上程序的使用者/登錄名如下:

S-1-9-3-412646706-1242810017-220819094-3312857753

這不是孤立使用者(如下所示),因為我在輸入此文章之前檢查過。

我查看了使用 Ideradm、sp_blitzfirst和執行的項目sp_whoisactive。解釋計劃表明這正在使用它顯然在前面的步驟中創建的幾個臨時表。

當我針對“主要”表執行腳本時,NADA 什麼也沒有。

還有其他建議嗎?

EXECUTE AS USER = 'SomeUser';'SomeUser'伺服器級別沒有連結登錄名的使用者將導致 SQL Server 將登錄名報告為以s-1-9-3.

您可以使用 中的original_login_namesys.dm_exec_sessions來確定誰或什麼在冒充使用者而無需登錄;例如:

SELECT SessionID = des.session_id
   , LoginName = des.login_name
   , OriginalLoginName = des.original_login_name
FROM sys.dm_exec_sessions des
WHERE des.is_user_process = 1;

我在SQL Server Science上寫了一篇博文,展示了這種行為,以及如何辨識正在模擬的數據庫級主體。

對於沒有登錄伺服器的使用者,請點擊此連結:

關於孤兒使用者的技術網文章

失敗使用者報告 - 顯示伺服器上的所有 SQL 使用者

USE [<database>]
EXEC sp_change_users_login  'REPORT'

--SQL 2000 and earlier
USE [<database>]
EXEC sp_change_users_login  'Auto_Fix', 'MyUser'

--SQL 2005 onwards
USE [<database>]
ALTER USER [MyUser] WITH LOGIN = [MyUser]

--to find database users (windows accounts) without Server login
select users.name, logins.name
from master..syslogins logins 
   right join sysusers users on logins.sid = users.sid 
where logins.sid is null 
  and issqlrole <> 1 
  and isapprole <> 1   
  and (users.name <> 'INFORMATION_SCHEMA' 
   and users.name not in ('guest', 'dbo', 'sys', 'system_function_schema'))

一些長時間執行的程序被阻塞並導致其他問題

為此,我推薦名為sp_whoisactive的程序

引用自:https://dba.stackexchange.com/questions/145628