Sql-Server-2016

SQL Server 序列的權限

  • December 19, 2019

我所屬的 AD 組db_owner permissions在數據庫 LandingZone 上。我正在調試的應用程序(在我的 ID 下執行)正在執行SELECT NEXT VALUE FOR ThisSchema.ThatSequence.我收到以下錯誤:

Msg 229, Level 14, State 5, Line 6
The UPDATE permission was denied on the object 'ThatSequence', database 'LandingZone', schema 'ThisSchema'.

我想我遇到了一個Least Privilege問題,但生產 DBA 不同意。

有什麼建議麼?

db_owner 應該擁有給定數據庫中的所有權限,因此您應該能夠毫無問題地更新該序列 - 如果您的應用程序真的在您的 UserID 下執行

1)檢查應用程序正在使用的連接字元串

如果連接字元串不包含Integrated Security = Trueor Trusted Connection = True,那麼您必須將它們添加到連接字元串

2)如果應用程序從某個 Web 伺服器(IIS Web 伺服器等)中執行,並且它包含在某個應用程序池中,您需要確保此應用程序池在您的 Windows 使用者的安全上下文中執行…

  1. 要驗證您的應用程序是否真的在您的 Windows 憑據下連接到 SQL Server,而應用程序連接到 DB,請查看 SQL Server 上的以下 DMV:

從 sys.dm_exec_sessions 中

選擇 * 從 sys.dm_exec_connections 中選擇 *

(這些可以通過 session_id 連結,找到您的應用程序的會話/連接並確保它在您的 Windows 憑據下執行(login_name “YourDomain\YourUserName”)

4)如果應用程序正在執行並使用您的 Windows 憑據連接到數據庫,並且您仍然有此權限問題,那麼您必須確保您的 Windows 使用者是否真的在 AD 組中,並且 AD 組確實添加到給定的 db_owner 角色數據庫…

可能的問題:您確定應用程序正在使用您的登錄名嗎?該應用程序可能使用與您不同的登錄名。檢查 CONFIG 文件以查看應用程序執行時使用的登錄名。如果它不同,那麼該登錄就是需要正確權限的登錄。

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