我試圖運行使用SharePoint對象模型的控制檯應用程序。控制檯應用程序 - 對象模型 - 數據庫執行
我收到錯誤無法打開登錄請求的數據庫「dbname」。登錄失敗。用戶'DOMAIN \ userid'登錄失敗。
我讀過的一些地方是用戶必須擁有內容數據庫的權限。
我無法找到解釋設置權限的文章。我需要這個彈藥去我的系統管理員傢伙獲得權限設置。
哪裏有文章解釋?我搜索谷歌,但沒有運氣。
我試圖運行使用SharePoint對象模型的控制檯應用程序。控制檯應用程序 - 對象模型 - 數據庫執行
我收到錯誤無法打開登錄請求的數據庫「dbname」。登錄失敗。用戶'DOMAIN \ userid'登錄失敗。
我讀過的一些地方是用戶必須擁有內容數據庫的權限。
我無法找到解釋設置權限的文章。我需要這個彈藥去我的系統管理員傢伙獲得權限設置。
哪裏有文章解釋?我搜索谷歌,但沒有運氣。
RunWithElevatedPrivileges沒有幫助,因爲它只是將線程用戶更改爲進程標識 - 在控制檯應用程序中,由於它們相同,因此它沒有任何作用。模擬Web上下文中的「高程」起作用,因爲進程標識是應用程序池帳戶,其內容數據庫上具有db_owner。
如果我問我正在使用的帳戶是否完全控制,那麼在Web應用程序的策略下,應該如何工作?
不按Ishai Sagi:Object model code and stsadm fail with "Access Denied"。總之,似乎內容數據庫上的db_owner權限是用戶在沒有Web上下文的情況下運行對象模型代碼(包括STSADM)所必需的。
好的 - 我終於得到了我的控制檯應用程序的工作,謝謝你的幫助,我也不得不用[這篇文章] [1]得到我去。 [1]:http://www.sharepoint-tips.com/2007/04/content-query-limitations-and-object.html – 2011-02-12 04:25:16
您是否在服務器本身上運行控制檯應用程序?我假設如此。
在這種情況下,它很可能是您在服務器上使用的帳戶(RDP?)的權限問題。事情的數據庫錯誤方面可能會引起誤解,因爲您需要在SharePoint本身內部獲得權限,然後纔會授予數據庫權限。
我會讓你的系統管理員爲你創建一個服務帳戶,使用它可以被授予正確的權利。 (網站集管理員通常是需要的,但它取決於控制檯應用程序內的代碼,但大多數人都假定網站集管理員權限)。你可能會從看應用程序指令(或者如果它是你自己的代碼只是去網站收集管理員)得到更多的里程數
運行控制檯應用程序是一個主要的,雖然,所以你可能有更好的運氣,如果你給系統管理員的應用程序運行和說明...雖然我懷疑你是在prod框上運行這個。
您的用戶沒有權限訪問這些列表或網頁。您可以通過提高特權來運行代碼,但它有時會給您帶來意想不到的結果。 可以找到如何使用提升的特權的示例here
或者您可以設置用戶未使用誰的帳戶控制檯應用作爲網站集管理員運行。
您的代碼更新,以提升privilegies運行可以是這樣的:
private static void DisplayAllLists(string site, string webToOpen)
{
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite siteCollection = new SPSite(site))
{
try
{
using (SPWeb web = siteCollection.OpenWeb(webToOpen))
{
SPListCollection lists = web.Lists;
foreach (SPList list in lists)
{
Console.WriteLine(string.Format("List Title: {0}", list.Title));
}
}
}
}
finally
{
siteCollection.RootWeb.Dispose();
Console.ReadLine();
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: "+ex.Message);
}
}
注:此代碼從我的頭頂是書面的,所以也許事情是missing..you將不得不嘗試
請您詳細說明一下。什麼是「對象模型」,它是一個產品,你在做什麼?等等。 – 2009-01-13 21:33:04