Sql-Server

MS SQL - CLR 儲存過程以已刪除使用者身份執行

  • April 5, 2020

我有一個 SQL Server 2017 數據庫,其中包含一些 CLR 儲存過程。在嘗試呼叫這些 CLR SP 時,我從 CLR SP 收到“登錄失敗”錯誤。

我的使用者已連接並且工作正常 - 似乎 CLR SP 被編碼為作為另一個特定使用者執行。

我無權訪問 CLR SP 的底層程式碼。我有什麼辦法可以更改它作為哪個使用者執行?

假設 SQLCLR 方法確實試圖以不存在的登錄名登錄到 SQL Server(“使用者”是數據庫級別的),那麼這應該只是由於使用了正常/外部連接(而不是內部的“上下文連接”) “) 並指定 SQL Server 登錄名和密碼(而不是使用受信任的連接/集成安全性)。{仍然,有確切的錯誤資訊總是有幫助的 :-) }

在保持相同的過程方面,您有兩個主要選擇:

  1. 使用新的登錄名和/或密碼重新編譯程式碼:

  2. 原始碼在其中的可能性很小sys.assembly_files(它會是一行 where file_id <> 1),但是在 Visual Studio / SSDT 的早期版本中已經完成了這種做法(至少預設情況下),你真的看不到它了.

  3. 假設原始碼不在該系統視圖中,您將需要導出實際的程序集(相同的視圖,但這次您確實需要WHERE [file_id] = 1),然後您可以使用反彙程式序來獲取原始碼。

  4. 一個更簡單的路徑應該是重新添加已刪除的登錄名。有理由不這樣做嗎?如果您不確定正在使用什麼密碼,則上面提到的用於獲取原始碼的兩個選項也將是您找到密碼的方式。

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