Sql-Server
MS SQL - CLR 儲存過程以已刪除使用者身份執行
我有一個 SQL Server 2017 數據庫,其中包含一些 CLR 儲存過程。在嘗試呼叫這些 CLR SP 時,我從 CLR SP 收到“登錄失敗”錯誤。
我的使用者已連接並且工作正常 - 似乎 CLR SP 被編碼為作為另一個特定使用者執行。
我無權訪問 CLR SP 的底層程式碼。我有什麼辦法可以更改它作為哪個使用者執行?
假設 SQLCLR 方法確實試圖以不存在的登錄名登錄到 SQL Server(“使用者”是數據庫級別的),那麼這應該只是由於使用了正常/外部連接(而不是內部的“上下文連接”) “) 並指定 SQL Server 登錄名和密碼(而不是使用受信任的連接/集成安全性)。{仍然,有確切的錯誤資訊總是有幫助的 :-) }
在保持相同的過程方面,您有兩個主要選擇:
使用新的登錄名和/或密碼重新編譯程式碼:
原始碼在其中的可能性很小
sys.assembly_files
(它會是一行 wherefile_id <> 1
),但是在 Visual Studio / SSDT 的早期版本中已經完成了這種做法(至少預設情況下),你真的看不到它了.假設原始碼不在該系統視圖中,您將需要導出實際的程序集(相同的視圖,但這次您確實需要
WHERE [file_id] = 1
),然後您可以使用反彙程式序來獲取原始碼。一個更簡單的路徑應該是重新添加已刪除的登錄名。有理由不這樣做嗎?如果您不確定正在使用什麼密碼,則上面提到的用於獲取原始碼的兩個選項也將是您找到密碼的方式。