Visual Studio 11 beta 版中的SharePoint 开发人员工具 — — 第三部分:在 SharePoint 列表设计器中的提示和技巧

[原文发表地址] SharePoint Developer Tools in Visual Studio 11 Beta – Part III: Tips and Tricks in SharePoint List Designer

[原文发表时间] 2012-04-19 9:07 AM

在这一系列的第一部分中,我们高兴地宣布,SharePoint 列表设计器是 Visual Studio 11 beta 版中引入的新功能之一。通过使用列表设计器,你可以快速和直观地在Visual Studio 中创建一个SharePoint 列表,而无需首先在SharePoint设计器中创建一个列表,然后将其导入到 Visual Studio 中。

在这一系列的第一部分中,为了让你熟悉列表设计器,我们提供了一个 MSDN 帮助主题的链接,它将引导你使用列表设计器来创建一个列表和一个内容类型。如果你已使用过列表设计器,你可能希望了解其功能的更多详细信息。这篇文章提供了有关它的详细信息。

深入 SharePoint 列表设计器页面和它们背后的文件

你可能已经看到当你添加一个新的列表项到 SharePoint 项目中时,可视化设计器打开了三个选项卡:视图列表.

clip_image002

1 SharePoint 列表设计器页面

此外,还在Solution Explorer中创建了一个List节点,包括两个文件 (Schema.xml 和 Elements.xml) 和ListInstance节点 (其节点下面有一个 Elements.xml 文件)。

clip_image003

2 Solution Explorer中的 SharePoint 列表项

如果你以前使用 Visual Studio 2010 创建过列表,这一切对你来说很熟悉。但是有了设计器的支持,你可能想知道"每个xml 文件代表什么?"或者"它们如何与列表设计器交互?"。

· 设计器页面如何与 XML 文件相关联?

在设计器中的视图页面分别允许你在你的列表中自定义列和视图。这些页面中的所有的内容都来自 Schema.xml,它位于Solution Explorer中的List节点下。列表架构可以重复使用来创建不同的列表实例。

列表页面能够让你指定大多数情况下所使用的列表属性。属性的值来源于List Instance 节点(位于List节点下) 下的 Elements.xml 文件。

· 在设计器中何时页面被启用和禁用?

你可以通过点击List节点或List Instance节点来打开 SharePoint 列表设计器。不过,视乎于情况,设计器中将会启用不同的页面:

·如果在 SharePoint 项目中,只有一个列表实例引用了一个特殊的列表架构(在 Schema.xml 文件中被定义了),无论你是通过点击List节点还是List Instance节点来启动设计器的,列表设计器将启用所有的三个页面。

·如果在SharePoint 项目中,多个列表实例引用了同一个列表架构,当你从List节点中启动设计器时,页面将被禁用。如果你将鼠标移至List选项卡上,这会出现一个工具提示,并解释它为什么被禁用。

clip_image005

3 禁用页面时的工具提示

同样地,当从你List Instance节点启动设计器时,仅会启用列表页面。

如果对应的架构列表或列表实例不存在于项目中,相应地,, 视图列表页面就会被禁用。

高效地添加和配置列

你可能享受过在设计器的页面中为列表和内容类型添加列,这多亏了列显示名称的下拉列表中的筛选功能.

事实上,通过设计器中可过滤的下拉列表,有两种方法可以将列添加到列表中: 重新使用网站列,或创建新的列表列。

· 重新使用网站列

若要快速查找到一个网站列来重复使用它,键入网站列的显示名称的任何部分。下拉列表中显示了所有包含该显示名称的列。下面的示例显示了当你键入"name"时,下拉列表中出现的内容:

clip_image007

4 可筛选下拉列表

若要重新使用现有的网站列,在下拉列表中突出显示它,然后按ENTERTab键。该列然后就被添加到列表中了。请注意不能更改网站列的类型。

· 创建新的列表列

列表列是只存在于列表范围中的列。创建列表列是相当容易的。在页面中,键入显示名称到网格中,确保未选中下拉列表中的任何一项,然后按tab .

· 配置列属性

将列添加到列表中之后,你可能想要配置列的属性。属性选项卡显示了部分最常用的列属性。对于其他的列属性,你可以点击列,然后查看属性窗口。

有些属性只对特定的数据类型才有效。你可以通过展开属性窗口中的类型属性来查看这些属性。

clip_image008

5:在属性窗口中的列属性

新建 / 编辑 / 显示Forms时所显示的列

在新建/编辑/显示form时,所显示的列表列取决于添加到列表中的默认内容类型 (在列表架构中第一个定义的或引用的内容类型)。为确保你添加到列表中的列显示在这些窗体中 (在大多数情况下,你可能希望),设计器生成了一个称为ListFieldsContentType的内容类型来引用列表中的所有列,然后将此内容类型设置为默认的内容类型。如果此内容类型不存在的话,无论你是添加还是移除列时,此内容类型都会在架构列表中被定义,并生成它。

clip_image010

图 6: 在内容类型设置对话框中生成内容类型

如果你不需要此内容类型,你可以在你完成添加和移除列后,在内容类型设置对话框中删除它 (它可以通过列表设计器中的页面来启动)。

摘要

在本文中,我们深入了解了 SharePoint 列表设计器,以及使用设计器时幕后所发生的事情。我们希望SharePoint 列表设计器可帮助使你的工作更容易,能够让你更高效地构建列表。如果你对此设计器有任何意见或问题,请让我们知道。我们期待着收到你的来信 !

希望大家喜欢 !

 

Visual Studio 11 测试版中的SharePoint 开发人员工具 — — 第 2 部分: 功能增强来支持 SharePoint Online开发

[原文发表地址] SharePoint Developer Tools in Visual Studio 11 Beta – Part 2: Feature Enhancements to Support SharePoint Online Development

[原文发表时间] 2012-03-22 9:58

关于Visual Studio 11 测试版中的SharePoint 开发人员工具,本系列的第 1 部分概述了所有的新功能。这篇文章更侧重于功能,包括支持构建远程 SharePoint Online解决方案,同时此文也为这一领域的新工具的增强功能提供一个概述。

你可能已经知道, Office 365提供了安全、 全局访问电子邮件和日历、 Office Web 应用程序、 web 会议、 和文件共享。SharePoint Online, Office 365的一个组件,可用于创建远程 SharePoint站点来分享你的文档和信息,这样更容易与客户和同事一起工作。Visual Studio 11 测试版为创建 SharePoint 应用程序提供了改进的支持,它使用了 SharePoint Online,是远程的沙盒环境。为安全起见,在 SharePoint Online 中运行的 SharePoint 解决方案必须是沙盒解决方案。

这里是新的和改进的功能的列表,这些功能旨在让你使用更好的 SharePoint Online开发体验:

· 发布解决方案到远程 SharePoint 服务器中
当你在 Visual Studio 11 测试版中创建一个沙盒SharePoint 解决方案之后,你可以选择将其 SharePoint 解决方案 (.wsp) 文件部署到本地的 SharePoint 服务器中,(正如你可以在早期的Visual Studio版本中所做的一样) 或发布到远程服务器站点。发布是指上传一个沙盒SharePoint 解决方案文件到远程SharePoint 站点中,比如在另一个系统中,或在云中,比如在 SharePoint Online 种。有关详细信息,请参阅部署、 发布和升级SharePoint 解决方案包.

·使用新的 Silverlight Web 部件项目访问外部数据
Visual Studio 11 测试版包括新的 Silverlight Web 部件项目模板,可用于创建基于 Silverlight 的 web 部件。Silverlight Web 部件项目能够让你将精美的、 有用的 Silverlight 控件添加到你的沙盒SharePoint 解决方案中。你可以创建一个新的 Silverlight 项目或利用现有的 Silverlight 项目。当添加到你的 SharePoint 解决方案中时,该模板会添加所有必需的文件,包括 Silverlight web 部件,你可以自定义它们。通过使用
OData,WCF 服务,.NET程序集或Silverlight支持的其他数据源,Silverlight Web 部件项目还提供了简单的方法来连接到外部数据源。当你正在开发一个在沙盒环境中运行的SharePoint Online应用程序时, Silverlight 应用程序能让你连接到你的 SharePoint 解决方案内部的外部数据源。有关使用 Silverlight web 部件和 OData 来访问 SharePoint 数据的示例,请参见演练: 为 SharePoint 创建一个显示 OData的 Silverlight Web 部件.

· SharePoint Online解决方案中使用Visual Web 部件
Visual Studio 11 测试版现在完全支持在沙盒 SharePoint 解决方案中(如在 SharePoint Online中)使用Visual Web部件,这样你的解决方案有了额外的功能,而无需使用加载项。

·在沙盒解决方案中查看筛选过的IntelliSense
大多数 Visual Studio 开发人员发现IntelliSense在查找 API 功能、 语法和用法方面极其有用。但它并没有那么有用,如果它显示了你的项目不能使用的API。当开发远程解决方案来显示只适用于沙盒解决方案的 ApI时,IntelliSense的功能得到了改善。此外,红色波浪线和编译错误会显示,如果你的代码包含任何在沙盒解决方案中不能使用的 API的引用。

· 确定farm-only限制的项目模板
在早期的 Visual Studio版本中,很难辨别哪些项目模板都支持沙盒和farm解决方案,哪些只支持farm解决方案。在 Visual Studio 11 测试版中,仅支持farm解决方案的项目项模板具有明显的标签(仅适用于Farm解决方案),让你更易于选择正确的模板。

对于Visual Studio 11 测试版中的新 SharePoint 功能的完整列表,请参阅 Visual Studio 11 测试版中 SharePoint 开发的新功能。有关 Office 365 和 SharePoint Online的详细信息,请参阅Office 365 和 SharePoint Online。有关SharePoint的详细信息,请参阅SharePoint 2010.

VS 11中的SharePoint开发人员工具——第一部分:VS 11 测试版中SharePoint 开发人员工具的新功能

[原文发表地址] SharePoint Developer Tools in Visual Studio 11 – Part I: What’s New in SharePoint Developer Tools for Visual Studio 11 Beta

[原文发表时间] 2012-03-01 08:27 AM

Visual Studio 11 测试版引入了一套新功能,并增强了在SharePoint 2010中的SharePoint 开发人员工具的现有功能,这能帮助你提高 SharePoint 开发效率。你可能已经尝试了Visual Studio 11 开发人员预览版本中的这些新功能。为了确保你在此更新中获取最多好处,我们SharePoint 开发工具团队计划在接下来的几周里发布一系列文章向你展示所有令人兴奋的新工具的功能。下面是一个关于计划主题的列表,如果你有兴趣知道其他任何特定的主题,请让我们知道:

1. VS 11 测试版中SharePoint 开发工具的新功能(本篇文章)

2.更好地支持 O365 开发

3.在列表设计器中的提示和技巧

4. 在 Visual Studio 11 SharePoint 开发工具中的ALM

作为这一系列的第一篇文章,我们将简要地去浏览测试版中所有的主要功能:

针对 SharePoint 列表和内容类型的SharePoint 列表设计器

现在你可以通过使用新的设计器可视化地创建 SharePoint 列表和内容类型。SharePoint 列表设计器包括针对 SharePoint 列表和内容类型的设计器。

· 网站栏项模板

创建一个网站栏变得比以往更容易了。新的网站栏项模板是一个为你创建网站栏的好起点。它为网站栏生成GUID,并显示了你常用的可能想要设置的属性。

· Silverlight Web 部件

现在将丰富的互联网应用程序(RIA)体验引入到你的 SharePoint 解决方案中变得更加容易了。新的 Silverlight Web 部件项处理了所有的布线,所以你可以专注于设计和编码 Silverlight 部分。它帮助你添加Silverlight 应用程序到你的 SharePoint 解决方案中,并一步将其部署到你的 SharePoint 服务器中。

· 可视化 web 部件支持沙盒解决方案

可视化web 部件将不再仅局限于场解决方案。现在,你可以在场或沙盒解决方案中构建可视的web 部件,而不用任何加载项!

· 新的发布对话框发布 SharePoint 解决方案到远程的SharePoint 服务器中

现在你可以通过Visual Studio将你的 SharePoint 解决方案发布到远程服务器中!新的发布对话框可以让你将SharePoint解决方案发布到任何 SharePoint 服务器上,而不管它是基于前提的还是Office 365的,远程的还是本地的。这还使你能够从你在本地文件系统中指定的位置获取 SharePoint 包。

·针对SharePoint 解决方案性能测试的性能分析工具支持

它能更容易找出什么减慢了你的 SharePoint 解决方案的性能。现在Visual Studio SharePoint 开发工具为性能分析提供充分的支持。

· 沙盒解决方案中更好的智能支持

现在,你可以充分信任沙盒解决方案中的智能,因为智能只显示与你的 SharePoint 项目相关的 API。你不必弄清楚,例如,什么 API 可以在沙盒解决方案与场解决方案中使用。

· 更好地支持JavaScript 调试和智能

现在你可以在你的 SharePoint 解决方案中使用完全的智能支持来编写 JavaScript,另外,在 Visual Studio 中你还能获得更好的JavaScript调试支持。增强的 URL 解析支持使你能够引用 JavaScript 文件,这些文件位于你的 SharePoint 解决方案中的 SharePoint 内容数据库中。

· 简化的 SharePoint 项目模板和项模板

同样地,SharePoint 项目模板和项模板被更好地组织了以便你可以更高效地找到你想要的。

如果你想知道更多这些功能,查看此MSDN 文档,它提供了更多的详细信息以及演练。应当指出的是,SharePoint 2007项目模板(针对工作流的)从 Visual Studio 11 中移除了,如果你想要继续使用 Visual Studio 11 中的那些项目,你需要将这些项目迁移到 SharePoint 2010中。这篇文章是一个学习如何去做到这一点的好起点:迁移2007 工作流到 Visual Studio和 SharePoint 2010中.

现在,请继续尝试Visual Studio 11 测试版中的这些功能。也不要忘记与我们分享你的反馈意见。

希望大家喜欢 !

用SharePoint对象模型更新用户个人设置(Guru Pratap Ketepalli)

[原文发表地址] Update User Personal Settings with the SharePoint Object Model (Guru Pratap Ketepalli)

[原文发表时间] 2011-06-23  14:43

每个用户对其网站集都有自己的个人设置。你可以点击登录用户链接,选择My Settings查看详情。

clip_image002[8]

选中My Settings之后,你会被引导到显示你的个人信息。SharePoint重定位userdisp.aspx以下列形式显示用户详情:http://sitecollection/_layouts/userdisp.aspx?Force=True&ID=XXX

clip_image004[4]

SharePoint在站点Content DB中的“UserInfo”表中储存用户数据。当你导航至:http://sitecollection/_layouts/people.aspx,它就会以SharePoint列表形式显现。这些字段可以添加或删除,以适应团队的需要。如果你初次访问网站时,用户文件服务应用不可用,你的数据则会在Active目录中被检索,并储存在目录数据库“用户信息列表”中。于是下次登录时,目录数据库会搜索你的信息,如果找到,就会显示出来。

通过以下的步骤,用SharePoint对象模型可以实现信息的更新。

1. 为拥有所有易扩展属性的用户设置创建实体。

   1: public struct UserSettingsEntity

   2:  

   3: {

   4:  

   5: public string Url;

   6:  

   7: public string LoginName;

   8:  

   9: public string Title;

  10:  

  11: public string Department;

  12:  

  13: public string SipAddress;

  14:  

  15: public string MobilePhone;

  16:  

  17: public string Name;

  18:  

  19: public string Notes;

  20:  

  21: public string Picture;

  22:  

  23: public string FirstName;

  24:  

  25: public string LastName;

  26:  

  27: public string WorkPhone;

  28:  

  29: public string UserName;

  30:  

  31: public string WebSite;

  32:  

  33: public string SPSResponsibility;

  34:  

  35: public string Office;

  36:  

  37: }

2. 为网站集Url创建SPSite对象,检索SPUser以更新用户数据。

   1: private UserSettingsEntity userSettings = new UserSettingsEntity();

   2:  

   3: userSettings.Title = "Title"

   4:  

   5: userSettings.Department = "Dept";

   6:  

   7: userSettings.SipAddress = "sipAddr";

   8:  

   9: userSettings.MobilePhone = "Mobile";

  10:  

  11: userSettings.Name = "Name";

  12:  

  13: userSettings.Notes = "AboutMe";

  14:  

  15: userSettings.Picture = "http://xyz/abc.jpg";

  16:  

  17: userSettings.FirstName = "FirstName";

  18:  

  19: userSettings.LastName = "LastName";

  20:  

  21: userSettings.WorkPhone = "WorkPhone";

  22:  

  23: userSettings.UserName = "UserName";

  24:  

  25: userSettings.WebSite = "http://xyz.com/";

  26:  

  27: userSettings.SPSResponsibility = "AskMeAbout";

  28:  

  29: userSettings.Office = "Office";

  30:  

  31: SPSecurity.RunWithElevatedPrivileges(delegate

  32:  

  33: {

  34:  

  35: using (SPSite site = new SPSite(commandLineArguments["Url"]))

  36:  

  37: {

  38:  

  39: SPWeb web = site.RootWeb;

  40:  

  41: Console.WriteLine("Updating User for {0}", site.Url);

  42:  

  43: // Ensure to get a valid SPUser object for a given login name.

  44:  

  45: SPUser user = web.EnsureUser(userSettings.LoginName);

  46:  

  47: if (null == user)

  48:  

  49: {

  50:  

  51: Console.WriteLine("Failed : Not a valid user");

  52:  

  53: }

  54:  

  55: else

  56:  

  57: {

  58:  

  59: Console.WriteLine("Got SPUser #{0}", user.ID);

  60:  

  61: try

  62:  

  63: {

  64:  

  65: Console.WriteLine("Attempting to update User Information for SPUser #{0}:", user.ID);

  66:  

  67: user.UpdateUserInformation(userSettings);

  68:  

  69: Console.WriteLine("Success : Updated User Information Successfully!.");

  70:  

  71: }

  72:  

  73: catch (Exception ex)

  74:  

  75: {

  76:  

  77: Console.WriteLine("Failed.\r\nError: {0} : {1}",

  78:  

  79: user.ID, ex.Message);

  80:  

  81: }

3. 用SPUserExtension类扩展SPUser来更新用户数据

   1: /// <summary>

   2:  

   3: /// SPUserExtension class which contains 2 extension methods.

   4:  

   5: /// </summary>

   6:  

   7: public static class SPUserExtension

   8:  

   9: {

  10:  

  11: /// <summary>

  12:  

  13: /// Get the User Information for a particular user.

  14:  

  15: /// </summary>

  16:  

  17: /// <param name="user"></param>

  18:  

  19: /// <returns></returns>

  20:  

  21: public static SPListItem GetUserInformation(this SPUser user)

  22:  

  23: {

  24:  

  25: return user.ParentWeb.SiteUserInfoList.GetItemById(user.ID);

  26:  

  27: }

  28:  

  29: /// <summary>

  30:  

  31: /// Update the user information with given title, department, 

  32:  

  33: /// sipAddress and Mobile Phone.

  34:  

  35: /// </summary>

  36:  

  37: public static void UpdateUserInfo (this SPUser user, 

  38:  

  39: UserSettingsEntity userSettings)

  40:  

  41: {

  42:  

  43: SPListItem userInfo = user.GetUserInformation();

  44:  

  45: userInfo["JobTitle"] = userSettings.Title;

  46:  

  47: userInfo["Department"] = userSettings.Department;

  48:  

  49: userInfo["SipAddress"] = userSettings.SipAddress;

  50:  

  51: userInfo["MobilePhone"] = userSettings.MobilePhone;

  52:  

  53: userInfo["Title"] = userSettings.Name;

  54:  

  55: userInfo["Notes"] = userSettings.Notes; // "Its about Me...";

  56:  

  57: userInfo["Picture"] = userSettings.Picture; // "http://xyz/abc.jpg/";

  58:  

  59: userInfo["FirstName"] = userSettings.FirstName;// "FirstName";

  60:  

  61: userInfo["LastName"] = userSettings.LastName; // "LastName";

  62:  

  63: userInfo["WorkPhone"] = userSettings.WorkPhone; // "WorkPhone";

  64:  

  65: userInfo["UserName"] = userSettings.UserName; // "UserName";

  66:  

  67: userInfo["WebSite"] = userSettings.WebSite; // "http://xyz.com/";

  68:  

  69: userInfo["SPSResponsibility"] = userSettings.SPSResponsibility; // "SPSResponsibility";

  70:  

  71: userInfo["Office"] = userSettings.Office; // "Office";

  72:  

  73: userInfo.Update(); //write changes to SharePoint

  74:  

  75: } 

  76:  

  77: }

此代码如UI中显示的每个域一样创建实体类,userinfo对象(用户信息列表)显示了所有含有SharePoint内部域名的域。

FILESTREAM 和 SharePoint 2010

[原文发表地址] FILESTREAM with SharePoint 2010

[原文发表时间] 3 May 2011 7:00 AM

FILESTREAM是SQL Server 2008中的一个新功能,它使得非结构化的数据能在NTFS文件系统中进行存储。在 sharepoint2010中支持FILESTREAM(本地或者远程)通过在内容可寻址或商业存储中存储大型的二进制非结构化数据,从而减少资金花费.

非结构化数据

非结构化数据指的是没有绑定到已定义的模型或不能很好适用于SharePoint关系表的信息,它可以是Microsoft Office文档文件格式,视频,音频,和相关的文件类型。

结构化数据

SharePoint中的结构化数据指的是和它对应的非结构化数据或BLOB相关联的元数据。关系数据库经常被作为结构化数据的例子。

SQL Server和非结构化数据存储

在SQL Server有三种方法用来存储非结构化数据,它们是 RBS,SQL BLOB和FILESTREAM:

· 远程BLOB存储器(RBS),在这个方法中SharePoint依赖SQL Server中的一个新层来读写存储于数据库之外的独立BLOB存储器(文件系统或专用的BLOB存储器)上的BLOB数据。

· SQL BLOB指的是SharePoint中传统的BLOB存储器, BLOB 数据与结构化的元数据一起被保存在内容数据库

  • FILESTREAM

FILESTREAM概述

FILESTREAM在varbinary(max)数据类型上实现,它告知数据库引擎在文件系统中存储非结构化的数据要通过包含有文件系统目录的FILESTREAM文件组,而不是文件本身(也称为数据容器)。数据容器是数据引擎存储器和文件系统存储器之间的接口。二进制数据类型varbinary是针对存储在SharePoint 2010内容数据库中的大型二进制对象而设计的,它指向 是可变长度二进制数据。(MAX)指的是最大值,即允许存储的最大值2^31-1字节或2GB。远程BLOB存储器并没有提供一种机制超出SharePoint限制的2GB文件大小。在SharePoint中,远程BLOB数据被RBS中的内容数据库中的唯一标识所引用(详见说明)。

clip_image001

FILESTREAM在性能方面有如下优点1)FILESTREAM使用NT系统缓存来缓存文件数据,从而减少对数据库引擎性能的影响2)没有使用SQL Server缓冲池;因此内存可被用于查询操作。

在用SharePoint存储大的BLOB数据时FILESTREAM的价值会得到体现,如视频文件或超过1MB的BLOB数据会从FILESTREAM中获益。

特殊考虑

FILESTREAM及业务可持续型管理

数据库镜像不支持FILESTREAM,这是由于不能在主服务器上创建FILESTREAM文件组,而且数据库镜像不能为包含FILESTREAM文件组的数据库配置。如果FILESTREAM提供程序被用来本地存储BLOB数据(在相同的内容数据库中),那么此数据库就不能配置为数据库镜像。

如果FILESTREAM提供程序用以在独立的SQL数据库或使用第三方BLOB存储器中存储BLOB数据,则内容数据库可以被镜像;然而,数据库镜像只应用在内容数据库中,而不用在BLOB数据中. BLOB数据需要被单独处理,并和对应的相关元数据(内容数据库中)保持同步。对于FILESTREAM BLOB数据库,可以通过日志传送来实现。

想了解FILESTREAM和SQL Server远程BLOB存储器之间的不同之处请查阅

http://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.

FILESTREAM Office Web 应用程序缓存

Word和PowerPoint Web使用Office Web应用程序缓存来创建一个基于浏览器的文档版本,通过文档的缓存版本增加性能和减少服务器机器上的资源开销,或者使用Office Web应用程序缓存使得对相同文档进行多个请求得以实现。

Office Web应用程序缓存出现在两个不同层次,在服务器文件系统和基于每个网站应用程序的“特定的”站点集合上。正如图片呈现给用户的过程一样,文档和演示文稿请求要通过Office Web应用程序的两个缓存来实现。 当Office Web应用程序功能被启用时,Web应用程序中的所有网站集合都使用这两个缓存存储单元。

配置了FILESTREAM的内容数据库将会在配置文件指定的位置存储文档和演示文稿的副本。推荐在没有配置FILESTREAM的数据库上配置Office Web应用程序缓存。

SharePoint 2010配置FILESTREAM

下面的指导说明是用于以演示为目的的单服务器部署和实现本地FILESTREAM提供程序的。

在目标SQL Server实例上启用FILESTREAM

1.在开始菜单上,指向所有程序,指向Microsoft SQL Server 2008 (R2),指向配置工具,然后点击SQL Server配置管理器。

2.在服务清单中右击SQL Server服务,然后点打开

3.在SQL Server配置管理器嵌入式管理单元中,指出你想启用FILESTREAM的SQL Server实例的位置。

4.右击那个实例,选择属性

5.在SQL Server属性对话框中,点选FILESTREAM选项卡。

6.选择Enable FILESTREAM for Transact-SQL access复选框。

7.如果想要从Windows中读写FILESTREAM数据,点击Enable FILESTREAM for file I/O streaming access。在Windows Share Name框中输入Windows共享名字。

8.如果远程客户需要访问保存在这个共享上的FILESTREAM数据,选择允许远程客户访问FILESTREAM数据的权限。

9.点击应用。

10.点击开始,所有程序,Microsoft SQL Server 2008 (R2),然后点SQL Server Management Studio.

11.在SQL Server Management Studio中,点新查询打开查询编辑器。

12. 在查询编辑器中输入下面的Transact-SQL代码:

EXEC sp_configure filestream_access_level, 2

在查询编辑器中输入下面的Transact-SQL代码:RECONFIGURE

设置RBS数据存储器

1.点击开始,所有程序,Microsoft SQL Server 2008 (R2),然后点SQL Server Management Studio.

2.展开数据库。

3.选择你想创建BLOB存储器的内容数据库,然后点击新查询。

4.在SQL Server Management Studio中点击新查询打开查询编辑器。

5.在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

if not exists (select * from sys.symmetric_keys where name = N’##MS_DatabaseMasterKey##’) create master key encryption by password password = N’Admin Key Password !2#4′

在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

if not exists(select groupname from sysfilegroups where groupname=N’RBSFilestreamProvider’)alter database [Database Name] add filegroup RBSFilestreamProvider contains filestream

在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

alter database [Database Name] add file (name = RBSFilestreamFile, filename = ‘c:\BlobStore’) to filegroup RBSFilestreamProvider

安装Microsoft SQL Server 2008 R2 Remote Blob Store

在Microsoft SQL Server 2008 R2功能包处http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en下载Microsoft SQL Server 2008 R2 Remote Blob Store x64包,

以管理员权限打开命令行提示符,执行下面的命令来安装之前下载的RBS.MSI:

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Database Name>" DBINSTANCE="<Instance Name>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

备注

在上面的声明中给RBS.MSI指定完整路径,即C:\Users\Administrator\Desktop\RBS.MSI。根据你需要的环境修改DBNAME 和DBINSTANCE的值。

启用远程BLOB存储器

1.在开始菜单上点击所有程序。

2.点击Microsoft SharePoint 2010 Products

3.点击SharePoint 2010 Management Shell

4.在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来设置将要配置的内容数据库: $database=Get-SPContentDatabase –Identity “Database Name”

在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来获取决定内容数据库如何使用Microsoft SQL Server Remote Blob存储器的执行环境的对象:

$rbs=$database.RemoteBlobStorageSettings

在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来决定是否已经为选中的内容数据库安装了RBS:$rbs.Installed()

备注

$rbs.Installed()的结果应该是True,如果结果是False的话,可以通过审核rbs_install_log.txt来验证RBS.MSI是否已经成功地安装了。确保安装语句运行在SharePoint 2010 Management Shell下,输入下面的语句来为选中的内容数据库启用RBS:$rbs.Enable()

在SharePoint 2010 Management Shell中输入Windows PowerShell语句来为选中的内容数据库设置RBSprovider:$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])

$rbs

备注

$rbs的结果是:

clip_image002

表1

表1的附件

Enabled指定对于选中的内容数据库RBS是否已启用。

ActiveProviderName是将要存入SQL Remote Blob存储器的新文件的名字。如果新文件没有用SQL Remote Blob存储器保存的话该项将会为空。

MinimumBlobStorageSize指的是考虑是否值得使用RBS存储的BLOB的最小尺寸,超出了指定的MinimumBlobStorageSize的BLOB数据将被保存到RBS。

FILESTREAM性能数据显示了超过1MB的BLOB数据具有最高效的流性能。请查看http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx

clip_image003

配置MinimumBlobStorageSize:

1.在开始菜单点击所有工程。

2.点击Microsoft SharePoint 2010 Products

3.点击SharePoint 2010 Management Shell

4.在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来配置MinimumBlobStorageSize为1MB:

$database = Get-SPContentDatabase “Database Name”

$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

$database.Update()

UpgradePersistedProperties指被删除或更改了的字段名或值的集合。

验证安装

验证FILESTREAM配置和RBS安装:

1.点击开始,点所有程序,接着点Microsoft SQL Server 2008,然后点SQL Server Management Studio

2.展开数据库。

3. 选择想要创建BLOB存储器的内容数据库,然后点击新查询。

4.在SQL Server Management Studio中,点击新查询打开查询编辑器。

5.在查询编辑器中输入下面的Transact-SQL代码:

USE [Database Name]

SELECT * FROM dbo.DatabaseInformation

保证RBSCollectionId和RBSProvider两行都可用。

测试RBS数据存储器

1.在一个网站的已配置好的内容数据库中选择一个想要的文档库。

2.上载一个大于1 MB的文件。

3.在有数据存储器的计算机上点击打开,然后点计算机。

4.浏览RBS数据存储器目录。

5.浏览文件并打开最近修改(而不是$FSLOG)的文件夹。在那个文件夹下打开最近修改的文件。验证这个文件和你上载的文件有相同的大小和内容。如果不同,请确认RBS已经正确安装并启用。

数据存储器 目录结构与下面的图例相似。

clip_image004

备注

当在上传一个大于MinimumBlobStorageSize的文档

出现事件错误:“ The URL ‘<Document Library>/File’ is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web.”时,请打开SQL Server Configuration Manager,启用Enable FILESTREAM for file I/O streaming access并重新启动SQL Server (MSSQLSERVER)服务。

附加资源