2009-01-13 49 views
1

我试图运行使用SharePoint对象模型的控制台应用程序。控制台应用程序 - 对象模型 - 数据库执行

我收到错误无法打开登录请求的数据库“dbname”。登录失败。用户'DOMAIN \ userid'登录失败。

我读过的一些地方是用户必须拥有内容数据库的权限。

我无法找到解释设置权限的文章。我需要这个弹药去我的系统管理员家伙获得权限设置。

哪里有文章解释?我搜索谷歌,但没有运气。

+0

请您详细说明一下。什么是“对象模型”,它是一个产品,你在做什么?等等。 – 2009-01-13 21:33:04

回答

0

RunWithElevatedPrivileges没有帮助,因为它只是将线程用户更改为进程标识 - 在控制台应用程序中,由于它们相同,因此它没有任何作用。模拟Web上下文中的“高程”起作用,因为进程标识是应用程序池帐户,其内容数据库上具有db_owner。

如果我问我正在使用的帐户是否完全控制,那么在Web应用程序的策略下,应该如何工作?

不按Ishai Sagi:Object model code and stsadm fail with "Access Denied"。总之,似乎内容数据库上的db_owner权限是用户在没有Web上下文的情况下运行对象模型代码(包括STSADM)所必需的。

+0

好的 - 我终于得到了我的控制台应用程序的工作,谢谢你的帮助,我也不得不用[这篇文章] [1]得到我去。 [1]:http://www.sharepoint-tips.com/2007/04/content-query-limitations-and-object.html – 2011-02-12 04:25:16

0

您是否在服务器本身上运行控制台应用程序?我假设如此。

在这种情况下,它很可能是您在服务器上使用的帐户(RDP?)的权限问题。事情的数据库错误方面可能会引起误解,因为您需要在SharePoint本身内部获得权限,然后才会授予数据库权限。

我会让你的系统管理员为你创建一个服务帐户,使用它可以被授予正确的权利。 (网站集管理员通常是需要的,但它取决于控制台应用程序内的代码,但大多数人都假定网站集管理员权限)。你可能会从看应用程序指令(或者如果它是你自己的代码只是去网站收集管理员)得到更多的里程数

运行控制台应用程序是一个主要的,虽然,所以你可能有更好的运气,如果你给系统管理员的应用程序运行和说明...虽然我怀疑你是在prod框上运行这个。

0

您的用户没有权限访问这些列表或网页。您可以通过提高特权来运行代码,但它有时会给您带来意想不到的结果。 可以找到如何使用提升的特权的示例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将不得不尝试

相关问题