簡體   English   中英

數據庫權限與Windows服務的工作方式不同嗎?

[英]Database permissions work differently from a windows service?

我有一個控制台應用程序,它也可以作為Windows服務運行(請參閱: .NET控制台應用程序作為Windows服務

它運行可在我的本地數據庫上運行的存儲proc,但是在網絡上它只能作為控制台應用程序使用,該服務給出“ SqlException(0x80131904):找不到對象或您沒有權限”。

該用戶帳戶具有數據庫所有者權限。

SP要做的第一件事是禁用表上的觸發器,現在它說要么不存在,要么我沒有訪問權限。

我是Windows服務的新手,是否缺少某些東西? 他們在這方面的工作是否有所不同?

它是本地網絡上另一台開發機上的sqlserver 2012實例。

連接字符串:

 <add name="XYZ_ConnectionString" connectionString="Data Source=PCNAME\sql2012;Initial Catalog=DB_Name;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>

編輯:我注意到服務的較早部分從數據庫表上進行選擇的工作正常,這表明連接正在工作?

謝謝

您正在使用Windows身份驗證(連接字符串的一部分,該消息讀取Integrated Security=SSPI; ),因此,當您將其作為控制台應用程序運行時,它將使用登錄的Windows ID進行身份驗證。

可以將SQL Server配置為使用Windows身份驗證或“混合模式”,該模式支持文本用戶名和密碼( 詳細信息 )。 請注意,默認設置是僅使用Windows身份驗證。

如果您能夠將混合模式身份驗證添加到SQL Server(或已經啟用),則請數據庫管理員創建一個新用戶並替換Integrated Security=SSPI; 連接字符串的一部分,如下所示:

;User ID=*****;Password=*****;

如果您不能在SQL Server上使用混合模式身份驗證(某些DBA會拒絕這樣做),則需要將Windows服務配置為以Windows域帳戶開頭-請注意,它必須是域帳戶,而不是您的PC上的本地Windows帳戶,因為SQL Server需要訪問域控制器以對憑據進行身份驗證。

可以在此處找到有關配置服務憑據的信息,但與在“服務管理器”窗口中打開服務,轉到“登錄”選項卡,然后選擇服務應以其運行的帳戶相比,它要復雜得多。

如果選擇查詢運行正常,這似乎是執行操作的用戶在SQL Server上的權限問題。

假設您要刪除的觸發器確實需要執行select語句所需的一組不同的權限。 我建議您確保正在運行的用戶能夠正確訪問服務,我將在運行應用程序后立即使用SQL Server Profiler將所有查詢和事件記錄到數據庫中。 在這里,我將看到失敗的查詢,並且可以更好地了解錯誤的根源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM