Sharepoint 控制台应用程序-对象模型-数据库任务

Sharepoint 控制台应用程序-对象模型-数据库任务,sharepoint,Sharepoint,我正在尝试运行使用SharePoint对象模型的控制台应用程序 我收到一个错误,无法打开登录请求的数据库“dbname”。登录失败。用户“域\用户ID”登录失败 我在某个地方读到,用户必须拥有内容数据库的权限 我找不到解释安装权限的文章。我需要这个作为弹药去我的系统管理员家伙获得权限设置 哪里有文章解释这一点?我搜索过谷歌,但运气不好。您是否在服务器上运行console应用程序?我想是的 在这种情况下,您在服务器上使用的帐户(RDP?)可能存在权限问题。数据库错误的一面可能会产生误导,因为您需要

我正在尝试运行使用SharePoint对象模型的控制台应用程序

我收到一个错误,无法打开登录请求的数据库“dbname”。登录失败。用户“域\用户ID”登录失败

我在某个地方读到,用户必须拥有内容数据库的权限

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


哪里有文章解释这一点?我搜索过谷歌,但运气不好。

您是否在服务器上运行console应用程序?我想是的

在这种情况下,您在服务器上使用的帐户(RDP?)可能存在权限问题。数据库错误的一面可能会产生误导,因为您需要在SharePoint本身中获得权限,然后SharePoint将授予数据库权限

我会让您的系统管理员为您创建一个服务帐户,您可以使用该帐户获得正确的权限。(通常需要网站集管理员,但这取决于控制台应用程序中的代码。不过,大多数人都拥有网站集管理员权限)。您可以通过查看应用程序说明获得更多里程数(或者,如果是您自己的代码,请访问网站集管理员)


不过,运行控制台应用程序有点重要,因此如果您向系统管理员提供要运行的应用程序和说明,您的运气可能会更好。。。尽管我怀疑您是否在prod box上运行此功能。

您的用户可能没有访问这些列表或网站的权限。您可以使用提升的权限运行代码,但它有时会给您带来意外的结果。 可以找到如何使用高架特权的示例

或者,您可以将运行帐户控制台应用程序的用户unser设置为网站集管理员

您更新为使用提升权限运行的代码可能如下所示:

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);
    }
}

注意:这段代码是我从头开始写的,所以可能缺少一些东西。您必须尝试使用它

RunWithElevatedPrivileges没有帮助,因为它只是将线程用户更改为进程标识-在控制台应用程序中,这没有效果,因为它们是相同的。模拟web上下文中的“提升”起作用,因为进程标识是应用程序池帐户,其内容数据库中有db_所有者

如果我要求在Web应用程序的策略下对我使用的帐户进行完全控制,那么这是否可行


不根据Ishai Sagi的说法:。简言之,用户在没有web上下文的情况下运行对象模型代码(包括STSADM)似乎需要内容数据库上的db_所有者权限。

您能详细说明一下吗。“对象模型”是什么?它是一种产品吗?你在打什么电话?等等。好吧-我终于让我的控制台应用程序开始工作了。谢谢你的帮助。我还必须使用[本文][1]来启动。[1]: