Please note this post only talks about new installation using slipstreamed build, not updating an existing farm.
In the previous blog post I mentioned the following:
Should I use slipstreamed SharePoint server installation files to deploy SharePoint and its CUs?
Maybe – depending on if you want to use language packs or not. If language packs are not installed when you install SharePoint Server, and you install those LPs after the server has been installed, you may need to reapply SharePoint CU packages to get all those LPs up to date.
Now I got questions about this “maybe”. Let me go deeper in this topic…Slipstream is good – but you have to use it in the right way, with the right order.
A typical slipstreamed SharePoint Server install is like this:
Install SharePoint Server RTM + SP1 + June CU Slipstreamed
Install SharePoint Server Language Packs
Looks simple and clear. But it is wrong – you will have RTM version of Language packs in this way. Why? Think about the table we had in previous post, then think about Cumulative Update concept. If something is not installed when you apply the CU package, then those files of the missing component will not be installed at all. In this case, the language pack updates in the CU server package are the ones missing.
The following screenshot shows what this will look like (Chinese LP in 4763 RTM, but all other components are in June CU 6105)
To fix this issue you need to apply language pack SP1s and June CU again. So the installation order should be changed to something different:
Install SharePoint Server RTM + SP1 + June CU Server Package Slipstreamed
Install SharePoint Server Language Packs
Install SharePoint Server LP SP1(s)
Install June CU Server Package again
This would work. But why install June CU twice? It’s a waste of time so let’s change it again. The other thing is that you can slipstream LP SP1 into language pack installation files (extract and put all files in updates folder):
Install SharePoint Server RTM + SP1 Slipstreamed
Install SharePoint Server Language Packs + Server LP SP1 Slipstreamed
Install June CU Server Package
Now all language packs are updated to latest version.
What can you learn from this? Don’t slipstream CU if you need to install additional language packs. Always apply CU Server Package at the last step.
Microsoft has posted an updated version of SPDisposeCheck which is:
SPDisposeCheck is a tool to helps developers and administrators check custom SharePoint solutions that use the SharePoint Object Model in identifying correctly disposing of SharePoint objects to help you follow published best practice.
One of the updates includes a list of updated “do not check” rules. I’d suggest integrating this as part of your build process such as a CI setup.
From SharePoint Joel Blog – http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=460
Everything is fine or so you think, but then the CPU spikes and the other Web Front ends are fine, so what’s up? Do you know how to dig in and figure out what’s up?
Here are a few things I’d do…
So a worker process goes crazy, first need worker process id for w3wp.exe, for the app pool
1. Add the Process ID to your Task Manager.
Start Task Manager:
You’re likely already in it since you’ve identified it’s a worker process that’s taking all your CPU.
Click view | Select Columns | Check “PID (Process Identifier)”
(See more details on “Identifying worker processes II6 & IIS 7 for debugging and look at Remote debugging)
2. Next get a list of all of your worker processes
You can use the WP (worker process) object to list running worker processes in appcmd.exe from IIS 7:
%systemroot%\system32\inetsrv\APPCMD list wps
You’ll get a list of the running app pools and their names
WP “3577” (apppool:DefaultAppPool)
WP “9823” (apppool:Team)
WP “7235” (apppool:My)
WP “533” (apppool:G32c2cd87s235sd3f2ub9sads3234)
3. Once we have the app pool we can look at running requests and connections.
If you can take the box out of rotation (assuming it’s being load balanced) you can go into IIS and stop the non-problematic app pools. Then look at the inbound requests.
%systemroot%\system32\inetsrv\APPCMD list requests
REQUEST “fb0000238022230e” (url:GET /wait.aspx?time=10000,time:4276 msec
You can narrow this list by requesting just the particular failing app pool.
%systemroot%\system32\inetsrv\APPCMD list request /apppool.name:Team
4. If the machine is still connected, running a netstat will give you a list of connections that are current connections with the server. As an example, is it an indexer or a client connecting to web services that’s causing CPU to spike. More likely it could be a timer job on one of your own boxes. If it’s a busy box you may see tons of connections so you may need to PIPE or Output to a text file.
netstat [-a] [-e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval]
Displays active TCP connections, ports on which the computer is listening, Ethernet statistics, the IP routing table, IPv4 statistics (for the IP, ICMP, TCP, and UDP protocols), and IPv6 statistics (for the IPv6, ICMPv6, TCP over IPv6, and UDP over IPv6 protocols). Used without parameters, netstat displays active TCP connections.
-a : Displays all active TCP connections and the TCP and UDP ports on which the computer is listening.
-e : Displays Ethernet statistics, such as the number of bytes and packets sent and received. This parameter can be combined with -s.
-n : Displays active TCP connections, however, addresses and port numbers are expressed numerically and no attempt is made to determine names.
-o : Displays active TCP connections and includes the process ID (PID) for each connection. You can find the application based on the PID on the Processes tab in Windows Task Manager. This parameter can be combined with -a, -n, and -p.
-p Protocol : Shows connections for the protocol specified by Protocol. In this case, the Protocol can be tcp, udp, tcpv6, or udpv6. If this parameter is used with -s to display statistics by protocol, Protocol can be tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, or ipv6.
-s : Displays statistics by protocol. By default, statistics are shown for the TCP, UDP, ICMP, and IP protocols. If the IPv6 protocol for Windows XP is installed, statistics are shown for the TCP over IPv6, UDP over IPv6, ICMPv6, and IPv6 protocols. The -p parameter can be used to specify a set of protocols.
-r : Displays the contents of the IP routing table. This is equivalent to the route print command.
Interval : Redisplays the selected information every Interval seconds. Press CTRL+C to stop the redisplay. If this parameter is omitted, netstat prints the selected information only once.
/? : Displays help at the command prompt.
I’ve personally used netstat to look at outgoing connections for troubleshooting connections to the gateway or firewall.
If your app pool is shared by multiple web applications, then you will need to narrow this down further. Most will want to either turn on tracing in IIS or dig into your ULS logs. I’d suggest digging into your ULS logs, but don’t forget the easier low hanging fruit of Event Viewer.
5. Dig into the event viewer and look for WWW, W3SVC, HTTP and Worker Process related events in Application Events and system related events. If you’re not seeing events, make sure you’re logging them as IIS application recycling events can be logged, and trace them if you need to.
The IIS 7.0 Health Model has been published on TechNet and containing details about most of the Event Log error codes that are logged for worker process and service (WAS) level conditions. It also includes the suggested diagnostics and workaround steps for each error condition. Understanding these will help you track down the issue as to whether it’s in the application, worker process, or where exactly the issue is.
The following are common:
Failed to start/restart the worker process:
- The configuration is invalid.
- The application pool identity has wrong account name or password.
- The maximum number of worker processes is reached or out of resources.
- Worker process cycles over and over again, starts and fails.
- Process can’t start due to service app pool account password issue
IIS initialization failed:
- The configuration section is invalid
- A module DLL listed in has invalid path, or failed to load
- Web.config related DLL issues
- A module failed to initialize
- A module, or application component has generated a debug break, or memory access violation, causing the process to terminate abruptly.
- Out of memory
- Unexpected error
Developers may want to attach Visual studio for debugging. Learning how to Debug ASP.NET App Issues (Memory Leaks, Crashes, Deadlocks, etc)
Otherwise you want to setup IIS tracing for next time to capture better what’s going on.
Monitoring worker processes feature in IIS lets you monitor sites, application pools, server worker processes, application domains, and requests.
4. Once you have the list you can easily correlate the process ID from task manager and from your app pool to determine the web app or the problem area. You can get a list of all of the details for your app pools and how they correlate to by digging into
Spence Harbar has a great writeup. Here’s his explanation on how to use ULS viewer for troubleshooting including working on the coorelation ID which you might be getting from a page or webpart that’s getting errors.
For SharePoint 2010, by default, ULS log is at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS
You can check the directory and try to read those logs. I was quite used to that, with notepad:)
ULS Viewer can be used in different modes. The log can be read from log files, real time ULS log, or even clipboard. Here’s some examples:
On a machine running SharePoint 2010, run ULS Viewer. Click File, Open From, then choose ULS (This could also be done by simply press Ctrl+U). Immediately the logs will be shown in real-time. You can filter message level by click the icons in the middle. This can tell you what is going on inside SharePoint.
5. Tools – Code leaks can be prevented and detected. The most popular are
FxCop, SPDisposeCheck. I like using the IIS Reskit tool wfetch for HTTP(s) debug and simulate connections (displays the request and the response) and the free Fiddler2 for HTTP(S) debugging (Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic) to simulate and walk through web requests to see what users are doing, but it can also be helpful to try simulators and different browsers. Recently we had an issue with a Win Phone 7 and we downloaded the emulator to track down the issue. If you’re hitting the page with a browser and not getting very good errors make sure you’ve Disabled HTTP Friendly Error Messages in Internet Explorer. Those friendly error messages are not easy to use to troubleshoot at all.
6. Turn the Dev Dashboard to on demand to catch the next one early – Things can go a lot of different ways from here, but debugging in visual studio and FxCop, SPDisposeCheck and other tools and mechanisms to check out the code… In our case we turned the dev dashboard to ondemand in our intranet prod, so we can now tell right from our desktop browser what might be starting to go south. That way we can quickly determine… Is it the webpart, the SQL query, or an app server. Stsadm –o setproperty –pn developer-dashboard –pv ondemand (or “on” or “off”)
From Sharepoint Joel’s blog , http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=462
• The results of the stsadm –o preupgradecheck from each SharePoint 2007 server.
This will give you the dependencies of your SSP, Farm Topology, including features and solutions in the farm.
• The results of the test-spcontentdatabase command that should have been run against each 2007 content DB from a 2010 server, saved to file(s).
This will give you all the missing dependencies including assemblies, webparts, features, XML, themes, etc…
• The output of “stsadm –o enumallwebs –IncludeFeatures –IncludeWebParts –IncludeEventReceivers –IncludeSetupFiles –IncludeCustomListView” (only needs to be run once on the 2007 farm)
This will give you the packages installed in the farm including feature receivers, and additional files added, including custom list views that have changed.
(Joel: I really like the look of that command. I don’t remember seeing those flags anywhere. I wonder when they showed up?)
• The results of the “stsadm –o enumsolutions” command from any 2007 server
This will give you the list of the packages installed on the farm
• The results of the “stsadm –o enumssp –all” command from any 2007 server.
The configuration of any and all SSPs
• Any documentation related to the upgrade, including
Upgrade Execution Plan
- Back-out plan
- Test plan results and remediation steps
- 2010 Build Docs
Central Processing Unit (CPU) counters:
|Total Processor Time||The % Processor Time counter measures the percentage of elapsed time that the processor spends to execute a non-Idle thread||Object: Processor
Counter: %Processor Time
|Processor Privileged Time||Use the % Privileged Time counter to measure the percentage of elapsed time that the process threads spent executing code in Privileged mode||Object: Processor
Counter: %Privileged Time
|Processor User Time||Use the % User Time counter to measure the percentage of elapsed time the processor spends in User mode.||Object: Processor
Counter: % User Time
|Processor Interrupts||Records the number of times processing is stopped to handle a hardware request for disk or memory I/O. Values higher than 1000 may indicate a hardware issue.||Object: processor
|Process – W3WP Processor Time||Measures the % of elapsed time that all process threads use the processor||Object: Process
Counter: %Processor Time
|Processor Queue Length||Logs the number of items waiting to be processed by the CPU. Values higher than 2 indicates the need to add more or faster processors.||Object: System
Counter: Processor Queue Length
|Page Faults per second||Records the number of times that data was not found in memory.||Object: Memory
Counter: Page Faults/sec
|Page Reads per second||Monitors the data written to or read from memory. Values higher than 200 indicates the need to increase RAM.||Object: Memory
Counter: Page Reads/sec
|Available Memory||Monitors the amount of memory available to the system. Values below 10% of total physical memory indicate the need for more RAM.||Object: Memory
Counter: Available Mbytes
|Memory\Pool Nonpaged Bytes\(N/A)||Records the amount of data that cannot be paged on the disk.||Object: Memory
Counter: Pool Nonpaged Bytes
|Available Disk Space||Use the % Free Space counter to calculate the percentage of total usable space||Object: LogicalDisk
Counter: % Free Space
|Disk Request Write Size||Uses the Disk Write Bytes/sec counter to measure the rate at which bytes are transferred to the disk during write operations||Object: PhysicalDisk
Counter: Disk Write Bytes/sec
|Disk Request Write Count||Measures the rate of write operations on the disk||Object: PhysicalDisk
Counter: Disk Writes/sec
|Disk Usage – Disk Time||Use the % Disk Time counter to calculate the percentage of elapsed time that the selected disk drive was busy servicing read or write requests||Object: PhysicalDisk
Counter: %Disk Time
|Disk Block Read Size||Avg. Disk Bytes/Read counter to measure the average number of bytes transferred from the disk during read operations||Object: PhysicalDisk
Counter: Avg. Disk Bytes/Read
|Disk Request Read Size||Measures the rate at which bytes are transferred from the disk during read operations via Disk Read Bytes/sec||Object: PhysicalDisk
Counter: Disk Read Bytes/sec
|Disk Request Read Count||Measures the rate of read operations from the disk||Object: PhysicalDisk
Counter: Disk Reads/sec
|Web Service Bytes Sent/sec||Measures the rate at which data bytes are being sent by the Web service||Object: Web Service
Counter: Bytes Sent/sec
|Web Service Current Connections||Monitors current IIS connections||Object: Web Service
Counter: Current Connections
Instance: _Total (or per Web app)
|Web Service||Use the Total Method Requests/sec counter to measure the rate at which HTTP requests are received||Object: Web Service
Counter: Total method Requests/sec
Instance: _Total (or specific Web apps)
|Web Service Bytes Received/sec||Counter to measure the rate at which data bytes are received by the Web service||Object: Web Service
Counter: Bytes Received/sec
Instance: _Total (or per Web app)
|Web Service Connection Attempts||Measures the rate at which connections to the Web service are being attempted||Object: Web Service
Counter: Connection Attempts/sec
|W3WP Private Bytes||Measures the current size, in bytes, of memory that this process has allocated and that cannot be shared with other processes||Object: Process
Counter: Private Bytes
|W3WP Working Set||The Working Set is the set of memory pages recently touched by the threads in the process||Object: Process
Counter: Working Set
|Committed Memory in use||Use the % Committed Bytes In Use counter to measure the ratio of the Memory\Committed Bytes counter to the Memory\Commit Limit counter||Object: Memory
Counter: % Committed Bytes In Use
|Available Memory||Available MBytes counter to measure the amount of physical memory in MB immediately available for allocation to a process or for system use||Object: Memory
Counter: Available MBytes
|Memory Cache Bytes||Shows the sum of the Memory\System Cache Resident Bytes, Memory\System Driver Resident Bytes, Memory\System Code Resident Bytes, and Memory\Pool Paged Resident Bytes||Object: Memory
Counter: Cache Bytes
|.NET CLR Memory – Bytes||Uses the # Bytes in all Heaps counter to sum the following four other counters: Gen 0 Heap Size; Gen 1 Heap Size; Gen 2 Heap Size, and Large Object Heap Size||Object: .NET CLR Memory
Counter: # Bytes in all Heaps
|.Net CLR Data-SQL client Failed connections||Use the SqlClient: Total # failed connects counter to count the total number of connection open attempts that have failed||Object: .NET CLR Data
Instance: Total # of failed attempts
|.Net CLR Data-SQL client connections||Current number of active SQL connections||Object: .NET CLR Data
Instance: Current # pooled and nonpooled connections
|.Net CLR memory – large Objects||Displays the current size of the Large Object Heap in bytes. Objects greater than 20 KB are treated as large objects by the Garbage Collector and are directly allocated in a special heap||Object: .NET CLR Memory
Counter: Large Object Heap size
|Succeeded Search Queries||Use the Queries Succeeded counter to count the number of queries that produce successful searches||Object: SharePoint Search Indexer Catalogs
Counter: Queries Succeeded
|Search Query Rate||Monitors Query Rate||Object: SharePoint Search Indexer Catalogs
|Search – total # of Documents||Counts the total number of documents in the Index||Object: Indexing Service
Counter: Total # of documents
|Cache Faults per Second||Cache activity is a reliable indicator of most application I/O operations.||Object: Memory
Counter: Cache Faults/sec
|ASP.NET Requests per Second||Counts the number of requests per second||Object: ASP.NET Apps v2.0.50727
|ASP.NET Cache – Hit ratio||Cache Total Hit Ratio counter to sum the ASP.NET application performance counters||Object: ASP.NET Applications
Counter: Cache Total Hit Ratio
|ASP.NET Cache Size||count the total number of entries within the cache (both internal and user added||Object: ASP.NET Applications
Counter: Cache Total Entries
|Memory – pages per second||Measures the rate at which pages are read from or written to disk to resolve hard page faults||Object: Memory
|ASP.NET Worker Process Restart||Measures Worker Process Restarts||Object: ASP.NET
Counter: Worker Process Restarts
|Paging File||Measures the percentage of the Page File instance in use||Object: Paging File
|W3WP Handle Count||This number is equal to the sum of the handles currently open by each thread in this process||Object: Process
Counter: Handle Count
|Publishing Object Cache||Counts the current number of pools that are associated with the process||Object: SharePoint Publishing Cache
Counter: Publishing cache hits/sec
|Total number of ISAPI Connections||Counts the number of ISAPI connections that Windows SharePoint Services is processing simultaneously.||Object: Web Service
Counter: Current ISAPI Extension Requests
|Total number of ISAPI Requests||Number of ISAPI Requests per second||Object: Web Service
Counter: ISAPI Extension Request/sec
|Current Connections||Current number of active connections to the WWW service.||Object: Web Service
Counter: Current Connections
|Maximum Connections||Maximum number of simultaneous connections to the WWW service since service startup.||Object: Web Service
Counter: Maximum Connections
Processor\% Processor Time\_Total
Processor\% Privileged Time\_Total
Processor\% Interrupt Time\_Total
System\Processor Queue Length\
Server\Pool Nonpaged Failures\
Server\Pool Paged Failures\
Server\Pool Nonpaged Peak\
Memory\Pool Nonpaged Bytes\
Cache\MDL Read Hits %\
LogicalDisk\% Free Space\_Total
PhysicalDisk\Avg. Disk Queue Length\_Total
PhysicalDisk\Avg. Disk Read Queue Length\_Total
PhysicalDisk\Avg. Disk Write Queue Length\_Total
PhysicalDisk\Avg. Disk sec/Read\_Total
PhysicalDisk\Avg. Disk sec/Transfer\_Total
Web Service\Current Connections\_Total
Web Service\Maximum Connections\_Total
ASP.NET Apps v2.0.50727\Cache % Machine Memory Limit Used\__Total__
ASP.NET Apps v2.0.50727\Cache % Process Memory Limit Used\__Total__
ASP.NET Apps v2.0.50727\Cache Total Hit Ratio\__Total__
ASP.NET Apps v2.0.50727\Cache Total Misses\__Total__
ASP.NET Apps v2.0.50727\Cache Total Trims\__Total__
ASP.NET Apps v2.0.50727\Cache Total Turnover Rate\__Total__
ASP.NET Apps v2.0.50727\Requests Rejected\__Total__
ASP.NET Apps v2.0.50727\Requests/Sec\__Total__
ASP.NET Apps v2.0.50727\Requests In Application Queue\__Total__
Office 365 is a pretty unique name for a product by Microsoft. The story behind it is that Microsoft will be behind your business 24/7/365 when you need it! And if you experience down time with this product, Microsoft will actually reimburse you in cash for that time (99.9% uptime guarantee!). The Office part of the name is obvious: The main product by Microsoft is still Microsoft Office and is widely used by people all over the world.
Note: This newsletter/article is to give you a conversational perspective of this product. It is not intended to tell you every single detail about it. Microsoft does a fine job of it on their sites and I’ll provide the links to those resources on the web.
What does Office 365 consist of?
Think of what you need to run your business usually: Email, Messaging, ways to create and manage documents and other information for your business, Intranet (or some place where employees can share the info), an external web site. Sounds about right? Well, Office 365 provides you with the following:
- Exchange Online – Each employee in your organization gets a 25GB email inbox. They can use the web browser or the Microsoft Outlook client to manage emails. Very convenient!
- Microsoft Office Professional Plus applications – Most of the Office 365 plans offer the employees to be able to download the office applications to your desktop/laptop as part of the subscription. That’s a huge deal I think because the Office suites by themselves are not cheap. In addition, each person can also work with their documents online using Office Web Apps functionality.
- SharePoint Online – This is my favorite part of it! An almost full fledged SharePoint 2010 experience. More on this a bit later.
- Lync Online – Think of Office Live Messenger or Office Communication Services. If you are familiar with any of these, you have seen parts of what Lync can offer. Instand messaging and live meetings are a snap with Lync.
How much does it cost?
There are a variety of ‘flavors’ that Office 365 offers. The plans are referred to as P1, P2 (for Professionals and Small Businesses) and then E1, E2, E3, E4 (for Enterprise customers). The pricing starts at $6/user/month (isn’t that amazing!). The highest price that I have seen is for E4 which is still only $27/user/month (which is still incredible because this option can help you provide Enterprise voice capability and easily replace your entire PBX system).
How is SharePoint Online different from SharePoint 2010 on-premise?
SharePoint Online provides many of the same SharePoint Server 2010 on-premise Enterprise features. For example, InfoPath Forms Services is included so you can show your InfoPath forms (workflow, form library and list forms) directly in the browser, enterprise search gives you robust search results, My Sites features are also present in SharePoint Online. One notably missing feature from this first release is Business Connectivity Services (BCS). Not to worry! It is in the plans to introduce that soon enough in one of the subsequent releases of Office 365 and since there is no upgrade necessary on your part, it will just magically appear one day and you will be notified about it as a customer.
The main difference you have to keep in mind is that you do not have access to the Central Administration site for SharePoint Online in Office 365. Also, you cannot access the web server files. So basically the SharePoint Server administration is offloaded to Microsoft.
Now here’s a difference you are going to like: In Office 365, you can easily invite others outside your organization to collaborate with you within your site collection. That’s a Big benefit in my mind!
How will I build solutions on top of SharePoint Online?
If you buy into Office 365, SharePoint Designer 2010 is about to become your best friend :-). That’s the main application for making customizations to your SharePoint Online environment. Most of what you can do with SharePoint Designer 2010 in a regular on-premise SharePoint 2010 environment is available with SharePoint Online as well. That’s great news because that provides you tons of customization opportunities.
You will not have access to create farm level solutions using Visual Studio 2010 (VS). VS can still be used by programmers to develop the following types of solutions on top of SharePoint Online:
- Sandboxed Solutions (scoped to a Site Collection)
- Programming against the Client Object Model
- Silverlight and ECMA Script
Check out the SharePoint Online Developers Resource Center to get a better idea of programming opportunities in SharePoint Online.
How do I get started?
That’s the easiest part. It costs nothing to join the Beta program. Start here and you will have a fully functional Office 365 deployment within minutes! Choose the E3 plan if you are a large enterprise (or want to pretend to be to see how it works :-)) or choose P1 for small businesses. Then you can manage your licenses by inviting your personnel to join you in the environment and start using it right away. Within a few months (or sooner), Microsoft will open up the Office 365 offering for sale. At that time you can decide to keep the environment and start paying for it or let it go.
Also note that if you are already a BPOS (Business Productivity Online Services – the older and far less powerful version of Office 365) customer, Microsoft will guide you to transition your content and people to Office 365.
Additional Material/Info on Office 365
Here’s some additional information to keep in mind and get involved. I’ll send more material on it in the future once ready.
I Internet Explorer 8 Microsoft tilføjet en sikkerhedsfunktion for at forhindre script injektion sårbarheder forårsaget af buggy klient software. Denne funktion er aktiveret af et nyt HTTP-header kaldet X-Download-Options, der kan indstilles til “no open”. Når denne header er bestået med en vedhæftet fil Internet Explorer 8 vil ikke give mulighed for direkte at åbne filen, i stedet skal du først gemme filen lokalt og derefter åbne den.
Here are 10 Reasons I believe SharePoint 2010 SP1 will rock your world, or at least improve it…
- Site Recycle bin – new capture the site as it’s deleted. Wohoo! This will save tons of unnecessary large database restores. Hmm maybe 200GB databases should be considered.
- Security enhancements –
- Reliability enhancements – I think alone this one for what it will do to make User profile sync will be worth making time to upgrade worth it.
- Storage Reporting for end users – StorMan the interface users had in 2007 to view storage is back and better!
- Chrome Support for SharePoint & Office Web Apps – Nice! More details on SharePoint 2010 SP1 browser support on TechNet (articles will be updated after release of SP1). You’ll also see better consistency with Project Server browser support.
- RBS (Remote Blob Storage) – Remote storage support for shadow copies ensuring better reliability and recoverability.
- New Powershell cmdlet (Move-spsite) for moving Site Collections between databases without moving content back in the db (when using RBS)
- Project Professional now synchronizes scheduled tasks with SharePoint task lists
- Improved backup / restore functionality for SharePoint Server
- Includes all previous monthly cumulative updates