Sunday, January 3, 2010

Recommendations for SharePoint Application Pool Settings

Copied from Joel - Thanks again!

Recommendations for SharePoint Application Pool Settings


IIS 6/SharePoint

  • Web Site = IIS Virtual Server = SharePoint Web Application
  • Web Applications have Application Pools... You can manage your web apps in IIS manager.
  • Application Pools have Worker processes... You'll see a section in your IIS manager for managing your app pools.
  • Worker Processes are processes that consume memory and CPU... You'll see them as w3wp.exe (Don't get confused here. By default there is a 1:1 for Application pool to worker processes.
  • You can use IISAPP in CMD to see which one is consuming the memory / cpu

Default Application pool

Just leave it alone, don't use it, and occasionally make sure nothing is using it. Do NOT delete it. Why... Cause IIS doesn't like it when it doesn't exist. You'll find IIS gets mad if this gets deleted. Even if you plan to never use it, just leave it alone. Don't even rename it. You can put something funny in the description field to remind you, but as was the unspoken best practice in the IIS 4 and IIS 5 days with the default web site. Only newbies use it, the more experienced web admins create new web apps and stop or deleted it. Now I'm saying though you may want to delete it. Don't.

If you're sure nothing is using this app pool, there is one setting you can enable to have it shut down if for some reason it ever spins up.

Performance Application Pool Settings

Shudown the application pool after it's been idle for 10 minutes. The first check box is the key to these app pools.

Health Application Pool Settings

Pinging. Turn it off if it's on since this app pool doesn't really need to run except for a short period of time during administration.

Rapid failure. Make sure it's not enabled at all.

Central Admin App Pool, SSP Admin App Pool

Recycling Application Pool Settings

Once per night around 2-4 A.M is typical, but even that shouldn't be necessary if it is getting shut down when not in use (see peformance). Recycling every 120 minutes is not a good idea and is completely unnecessary.

Max Physical and Virtual memory: These app pools typically don't take much memory, and my point with these is to simply let them run when they need to. If you wanted to limit the memory, I'd limit it to 500MB on a typical system. If you need to conserve, you could limit these guys to 200MB. They seriously shouldn't need much memory.

Performance Application Pool Settings

Shudown the application pool after it's been idle for 10 minutes. The first check box is the key to these app pools. You really don't need for these app pools to be running all the time since they are really only used for administration. If you find them cold and slow you could use a warm up script, but on most systems for administration you shouldn't really care since it's only you and your ops folks using it. If you're feeling technical you could shut down this app pool worker process when you're done with it to reclaim memory, but if it's set to shut down when idle as suggested, it's a no brainer to just let it do it's thing.

Don't worry about the CPU. If you do care you can limit it to 5%, but really you're just changing your admin settings... getting in and getting out. Likely if this is a big operations environment you're going to be doing this during a maintenance window anyway.

Web Gardens. Don't even think about using them here. You don't even want the one worker process running very long.

If you're really trying to preserve memory you could really share the central and SSP admin app pools, meaning you go in and configure the SSP to use the Central admin app pool, but only if the SSP & Central administration is done by a common team. For security reasons if you have 2 different groups managing the different interfaces you wouldn't want to do this. Since I'm not listing the steps here, if you don't know how to do this, don't worry about it. Just keep them both shut off when you're not using them and it won't matter.

Health Application Pool Settings

Pinging. Turn it off if it's on.

Rapid failure - uncheck it. Any web applications using this app pool could fail if this gets disabled.

Startup/Shutdown. You don't want these app pools creating unnecessary errors when they start up a bit slow. So I'd recommend increasing the limits for startup and shutdown to 300 each.

Identity Application Pool Settings

This is where your domain account would be for a farm environment. A unique account for these app pools is recommended. You don't need to manage the accounts here since you can either manage it via STSADM or the web UI. If the central admin one goes bad, this might be the first place you'd look if you can't get into anything. Do refer to the KB on resetting your password. In SPS 2003 you would have spent some time on this tab if you ever had to reset your passwords or domain accounts. They've made it easier if you know the commands.

SharePoint App Pool or %Your Content App Pool% (Whatever you call it)

Recycling Application Pool Settings

Worker process in minutes (off) - keep it off

Worker process recycle at a specific time. Once per night around 2-4 A.M is suggested. Recycling every 120 minutes is not a good idea and will cause problems if it happens that often. I do recommend the nightly app pool recycle. If you don't like the time of night you can change it, but I do recommend keeping it different than all other app pool times. So 1:05 is ok on one and 1:25 on another for example. If you turn it off, you're really not taking advantage of reclaiming memory. It's way too common to see people not clean up their objects properly closing, deleting just doesn't happen like it should and many expect .NET to clean up for them. Sad. The nightly recycle is handy to get you back your RAM. I don't recommend doing it more often than once a night. I have heard of 2 like once right at the end of the day and one at the beginning of the day. You know, after the backups, profile imports, crawls, and whatever else went on during the night. I think recycles during the user load (during the day or whenever load is near it's peak) is not recommend is a bit clunky. It is possible to push a warm up to pre cache your most common pages right after a cycle, but not necessary in most environments.

Max Physical and Virtual memory: This setting is a lot of control here. This section is for recycling application pools which consume too much memory. Focusing on physical I typically like to limit app pools around 800MB to 1200 MB max on a 32 bit app with very few app pools depending on the number and amount of memory. On a server with 2 GB RAM I'd set it at around 800MB max. On a 4GB of RAM server around 1GB and more if more with a max around 1200. On a 64 bit web front end with 8-16 GB memory I've heard of settings of 2GB of RAM or even allowing it to let it ride, rather than limiting it. You really need to profile it since these can really grow to process and cache. The greater the amount of memory and the greater the load the higher the worker process will grow. When people ask about configuring the app pool, this is where they are usually asking what the numbers should be. What you are doing here is explicitly limiting the app pool from consuming more memory. Notice this setting is on the recycle tab, there's a reason for that. When an app pool reaches the max it isn't like the max processor setting. It will cycle the worker process which is like a tiny reboot or similar to an iisreset, but not since sometimes we want this to happen so we can release our memory. You really don't want to cycle more than a couple of times per 24 hour period in an ideal world. I've heard of some trying to cycle right before the morning peak occurs so they have the most amount of memory available, then a cycle right at the end of the day before the backups or crawling begins.

Performance Application Pool Settings

Idle timeout - off (unchecked) - Don't shut it down unless you have some web apps that aren't used very often. It will help you reclaim memory if that's the condition. If you have one main web app for example, just leave it off or uncheck it.

Request queue - unchecked

CPU limits - unchecked. You want to allow these main worker processes for the app pool to use the CPU.

Web Gardens. Ok. So this is controversial, more so than the recycling even. It was tough explaining to some that IIS recycles are a feature not a cop out. Web Gardens now feel a bit like that same conversation. Let me start with nearly all environments should NOT need them ever. Even some product and support people would prefer not to see people use these.

From MSDN:

"Because Web gardens enable the use of multiple processes, each process will have its own copy of application state, in-process session state, caches, and static data. Web gardens should not be used for all applications, especially if they need to maintain state. Be sure to benchmark the performance of the application before deciding whether Web garden mode is appropriate.

When using a Web garden, it is important to understand how session state and round robin works. It is also important to consider of how other application pool settings affect the application."

My experience has been that with another worker process I can get more performance out of a single web application. Troubleshooting is more difficult, and process isolation is difficult. Developers don't like em either. So before I say never use em. I say, go with the recommendation listed above. A web garden should always be compared against a baseline. Some may find a web garden gives them better performance. Since this is so controversial, I say, if you are doing your performance tests and trying to squeeze out more perf, start with one, then retest with 2. If you don't see much of an improvement, don't use it. If you find more than 15-20% out of a second worker process then you might find it worth it. It is easy enough to take it back to one. The more CPUs the more likely you will get something here. Feel free to share your comments in the comments section on this one. Man some people are really passionate one way or another about these.

Health Application Pool Settings

Pinging. Keep this enabled. You could ping it every 10-15 minutes this will keep it running and keep it alive if you want it to monitor the app pool to check it to start it if it is found stopped. You don't want to mix the monitor pinging and the stop when idle. If you want it to run turn off stop when idle, and visa versa if you want it to stop, don't ping monitor it.

Rapid failure - uncheck it unless there is only one web application using this app pool and all content is on this app pool. (Joel's recommendation) I'm not a fan of this one. It should help when you're doing isolation to shut down poorly performing or worker process cycling, but doesn't help when you have one main web application with one app pool. You decide if you want to go against this. I'm really not a fan of this setting for SharePoint Applications or in any hosting situation. I've been burned by these default settings. I hate finding a server that's shut down because of some silly startup failure of one worker process that causes everything to go down. I'd rather have a chance to troubleshoot with a warning than finding it all down and finding out that it was this setting that shut everything down.

Startup/Shutdown. You don't want these app pools creating unnecessary errors when they start up a bit slow. So I'd recommend increasing the limits for startup and shutdown to 300-900 each. You should never get close to this. That's a good thing. The more web apps you have, the longer it will take. If you want it to shut down for starting up slow you can reduce these settings. This doesn't dictate how long it will take.

Identity Application Pool Settings

This is where your domain account would be for a farm environment. A unique account for these app pools is recommended. You don't need to manage the accounts here since you can either manage it via STSADM or the web UI. If the central admin one goes bad, this might be the first place you'd look if you can't get into anything. Do refer to the KB on resetting your password. In SPS 2003 you would have spent some time on this tab if you ever had to reset your passwords or domain accounts. They've made it easier if you know the commands. If you ever are on this tab, its to verify that it's not using a local account.

What if I have a bad app pool or web app?

If you have an web application you're trying to isolate, put it in its own app pool, then limit the CPU, limit the memory and cycle often (like every 120 min) and shut it down (using the settings above) when it's not in use. What this will do is limit the exposure of the memory from the other web applications. There are graceful ways of cycling a specific worker process. You can use these same methods for determining for troubleshooting which worker process that's taking up tons of RAM or cycling often what needs to be reconfigured or split out and isolated. Let the developer know his app is in the isolation box and he needs to clean it up before you give it more memory and stop cycling it so much. :)

Can I consolidate Web Application app pools?

Yes you can. If you have a lot of web apps you can use common app pools. You'll be smarter about the memory you consume. If you think one is taking up too much RAM consolidate the good ones and isolate the bad one like I suggest for bad ones.

The coolest free tool ever for worker processes

Spence Harbar has written a tool for cycling and warming up app pools in a simple tray UI. He's very open to feedback if you have any. I know that Andrew Connell uses it. He showed it off without realizing it at the Puget Sound SharePoint User Group this last week.

Feedback from James Blackwell previous IIS CPR (product support) and current Sr. SharePoint PFE. Check out James IIS and now SharePoint blog! Good info on troubleshooting and debugging. One such great example is his post on determining which worker process belongs to which app pool and hence which web app. What Application Pool does this W3WP.EXE belong to?

From his email...

"I am very glad you wrote this up and plan to follow up with one for x64 as well, since there are some pretty big changes to how the .NET framework operates in x64 that would affect apppool recycling suggestions on the x64 platform.

Pinging
This is not a “ping” as you commonly know it – not ICMP and not an HTTP request of any kind. This is an internal mechanism that WAS (IIS Web Admin Service, aka iisw3adm.dll) uses to communicate with the worker process (w3wp.exe) in order to determine whether or not it is hung or not responding for any reason, etc. Thus, this has nothing to do with whether the process will be kept “alive” in the context which you described it above. In fact, if pinging IS enabled and does not receive a response within 60 seconds (coded default , but can be over-ridden with the PingResponseTime metabase entry), then WAS will absolutely force a recycle. You should always absolutely leave pinging on if you care about the health of your application pool.
Web Gardens:
My experience has been that with another worker process I can get more performance out of a single web application.
"This will never be the case, especially in a .NET environment, which SharePoint lives in. The problem here is two fold. 1) Memory and 2) context switching due to inter-process communication of the worker processes. 1) You use more memory with web gardens and it’s especially hurtful in a .NET world because you will load the entire framework in *each* worker process, so you will immediately lose at least 100MB for eash additional worker process you spin up as part of the web garden. 2) Since you have multiple worker processes for a single application pool, you now have extra inter-process communication that must take place and also numerous more context switches that must occur. Both of these, while increasing concurrency, ultimately decreases overall performance as well as requests/sec. the box can fulfill.
The *only* case I have ever run across in which using web gardens was desirable was when the customer’s w3wp.exe’s were consistently reaching the x86 2GB process limit size and would crash. In this case, we turned on web gardens, set the number of flowers (aka worker processes) to 3, which then split the memory load among the three, thus solving the upper limit 2GB process size crash we were experiencing."
Joel: Did I say they were controversial? I've seen it about 4-5 times where people are on x86 systems with 4GB of RAM and people are squeezing more about of their single web app. It's not just me. :) I hear you. With 64 bit systems I hope to not need more worker processes and hope they don't get hung or start paging or crashing. In general I totally agree if you can avoid using web gardens, avoid 'em.
"Rapid Fail Protection:
Rapid failure - uncheck it. Make sure it's not enabled at all. You DO NOT want this app pool dictating the health of all other app pools.
I’m not sure of the logic here. Turning it on or off on one apppool has no relevance to other app pools. Additionally, the reason you always want this turned on is in case of a “rapid fail” (no pun intended J), the server will not fall over completely due to extreme CPU usage, and you will only lose your application pool as opposed to the entire server. I’ve seen numerous cases where when this is turned off, some problem causes the worker process to crash *on startup* and when rapid-fail protection is turned off, it simply attempts to recycle over and over unbounded, which then wedges the server due to high CPU. I always absolutely leave this on so that if there IS a problem, someone’s pager will go off and that will shed light on the problem."
Joel: I think we have a difference of opinion on this one. I've been burned by this one where I've consolidated a number of web applications to use a single application pool. It failed to start up in an expected time or cycled 3 times in a given period and all of a sudden all of those web applications were down HARD and not starting back up. I don't want to get paged for a worker process taking more than 90 seconds to restart. I'm not a fan of this feature. I'd rather it try to get it going anyway and let me know about it without it turning it off. If it's a really poorly performing worker process then there should be some way of indicating it to me/telling me about it without it shutting it off.

Finally, regarding the DefaultAppPool, I would almost recommend disabling it so that if someone accidentally configures a SharePoint webapp to use it, they will get an error and will immediately realize their mistake, whereas, if it is running, they may not realize it immediately.

Monday, November 16, 2009

Change Moss User / Password

Taken from Joel again (http://blogs.msdn.com/joelo/archive/2006/08/22/712945.aspx)


WSS V3

If you know the password before the password change, you can do the following to your machine with WSS on it:


1. Ensure the WSS Administration and WSS Timer services are running on all machines.

2. On machine with central admin (WFE1)
a. stsadm -o updatefarmcredentials -userlogin "domain user" -password "newPassword"
b. iisreset /noforce (optional)

3. On any machine after this completes (wait for the "Administration Application Pool Credential Deployment" job definition to go away on the Timer Job Definitions central admin page)
a. stsadm -o updateaccountpassword -userlogin "domain user" -password "newpassword" -noadmin

Otherwise, after a password change:

Ø Go to the server central admin box:

1. run the command stsadm –o updatefarmcredentials –userlogin -password
2. User must run IISReset /noforce to complete the action.
3. Delete the updatefarmcredentials timer job on central admin page->operations->job definitions page

Ø Go to each other server in the farm:

1. run the command stsadm –o updatefarmcredentials –userlogin -password -local.
o If –local isn’t supplied, it will fail because step (4) created a timer job that locks creating OTHER timer jobs.

Ø On any machine after this completes (wait for the "Administration Application Pool Credential Deployment" job definition to go away on the Timer Job Definitions central admin page)
a. stsadm -o updateaccountpassword -userlogin "domain user" -password "newpassword" -noadmin


More verbose Instructions from MSIT. Note these are not really polished, but a have some integrated tips that should be of value.
Password Changes
WSS WFEs

Central Admin AppPool (First)

Stsadm –o updatefarmcredentials –userlogin -password
Other AppPools
Stsadm –o updateaccountpassword –userlogin -password [-noadmin]
Use –noadmin if the Central Admin AppPool is the same account as other Web AppPools
WSS Search (Special Cases – look for it on Operations\Services on Server)
Central Admin UI -> Operations -> Services on Server -> Windows SharePoint Services Search
Update the Configurable Password In Service Account AND\OR Content Access Account as Needed
Office Server FarmsCentral Admin AppPool (First)Stsadm –o updatefarmcredentials –userlogin -password WFE (other) AppPools
Stsadm –o updateaccountpassword –userlogin -password [-noadmin]
Use –noadmin if the Central Admin AppPool is the same account as other Web AppPoolsOffice Server Search (Special Cases – Look for it on Operations\Services on Server)
Central Admin UI -> Operations -> Services on Server -> Office SharePoint SearchUpdate the Confgurable Password in Service AccountO12 SSP & Excel
Central Admin UI -> Application Management -> Create or Confgure This Farm’s Shared Services -> Hover over SSP in Farm and Edit Properties
Update the SSP Service Credentials as Needed
Office Server Crawl/Index Account
SSP Admin UI -> Search Settings -> Default Content Access Acount
Update Account and PW as needed
NotesStsadm –o updatefarmcredentials and stsadm –o updateaccountpassword should do the trick for everything but the SSPs. Run updateaccountpassword across on specific boxes if you are having NLB or connection issues

Central admin app pool ID (“database access” account):
· stsadm.exe -o updatefarmcredentials -userlogin -password
· Other app pool IDs:
· Stsadm.exe –o updateaccountpassword –userlogin -password [-noadmin]
· SSP Service credentials (2 methods)
1. UI: Central Administration > Application Management > Manage this Farm's Shared Services > access the ECB for the SSP you need to change > click on "Edit Properties" > on "Edit Shared Services Provider" page, in "SSP Service Credentials" set the account/password (also set the account/password for any Process account that need access to the SSP (typically done when configuring IFSS)
2. stsadm.exe -o editssp
-title
[-newtitle ]
[-sspadminsite ]
[-ssplogin ]
[-ssppassword ]
[-indexserver ]
[-indexlocation ]
[-setaccounts ]
[-ssl ]

Search Service credentials:
o UI: Central Administration > Operations > Services on Server > Office SharePoint Server Search > update the creds in the “Service Account” section. OR
stsadm -o osearch -farmserviceaccount -farmservicepassword

· WSS Search Service credentials:
o UI: Central Administration > Operations > Services on Server > Windows SharePoint (help) Search > update the creds in the “Service Account” section and in the “crawl account” section if needed. OR
stsadm -o spsearch -farmserviceaccount -farmservicepassword
· SSO:
o Need to use the SCM to update the password for the SSO service account; resart SSO Service
o Once done, go to Central Administration > Operations > Manage settings for Single Sign-On and update any creds required
· Profile Import account:
o UI: SSP Admin > User profiles and properties > Configure Profile Import > update creds in “default access account” section
· Excel: Should be re-set when you change the creds for the SSP Service account as described above.

Monday, July 20, 2009

Tools and AddOn's for Moss

Just found a cool post related to tools and utilitiesfor Moss.
Some I already know, some I will try :-)
http://techsavygal.wordpress.com/2009/06/30/many-interesting-tools-and-utilities-for-moss-2007-in-codeplex/

Examples:
Import data from Spreadsheet into Sharepoint Lists
Sharepoint Solution Installer
SharePoint Cross-Site Configurator
SharePoint Branding Tool

Tuesday, June 30, 2009

Beware of the SQL rebuild index task in the maintenance plan...

If your SSP Search never Stops crawling and you have the SQL maintenance plan with rebuild index this might be your problem...

Info copied from here - I personally had this problem too.

We recently deployed Microsoft SharePoint Office Server 2007 (MOSS) and ran into an issue with the Office SharePoint Search Service. The Search service was stuck in the "Crawling Full" state. After about 1 week of troubleshooting with Microsoft Product Support, we have resolved our problem. In a nutshell, our Database Maintenance plan included a task to rebuild indexes which had a side effect of removing the ability to allow duplicate keys in the index which SharePoint Search requires. The lesson I learned here is to not include any index maintenance as part of your database back strategy for SharePoint 2007. For more details and how to fix the problem, please read on.


Problem:
The problem appeared when we first noticed that our default Content Source for SharePoint Search was stuck in the "Crawling Full" state. During normal operation, once a crawl is complete, the status should change back to Idle.

The problem occurred because our Database Maintenance plan included a Rebuild Index Task that did not preserve the duplicate keys in the index when it was being rebuilt.

Fix:

To fix the issue, we had to recreate the 2 indexes that were impacted. One is in the Shared Services Search database and the other is in the WSS 3.0 Search database. Please exercise caution when making these changes and make sure to have database backups before your start.

Shared Services Search Database

In the SharedServices Search Database, you must ensure that the IX_MSSAnchorPendingChangeLog index in the MSSAnchorPendingChangeLog table ignores duplicate values:



If this is not enabled, you can follow the steps below to allow duplicate keys:

In SQL Server Management Studio, navigate to the SSP Search database -> dbo.MSSAnchorPendingChangeLog -> IX_MSSAnchorPendingChangeLog index:


Script out the index
Delete the index
Modify the SQL to set IGNORE_DUP_KEY = ON. Here is what our index script looked like (you will need to modify this script to use the appropriate database):
-- TODO: change this to match the name of your SharedServices Search DB!
USE [SharedServices_Search_DB]
GO

CREATE UNIQUE CLUSTERED INDEX [IX_MSSAnchorPendingChangeLog] ON [dbo].[MSSAnchorPendingChangeLog]
(
[CrawlId] ASC,
[TargetDocId] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = ON, ONLINE = OFF) ON [PRIMARY]

WSS 3.0 Search Database
In the WWS 3.0 Search Database, you must do the same as the SSP Search database and ensure that the IX_MSSAnchorPendingChangeLog index in the MSSAnchorPendingChangeLog table ignores duplicate values. If this is not enabled, you can follow the steps below:

In SQL Server Management Studio, navigate to the WSS 3.0 Search database -> dbo.MSSAnchorPendingChangeLog -> IX_MSSAnchorPendingChangeLog index:


Script out the index
Delete the index
Modify the SQL to set IGNORE_DUP_KEY = ON. Here is what our index script looked like:
-- TODO: change this to match the name of your WSS Search Database Search DB!USE [WSS_Search_MOSSWEB01]
GO

CREATE UNIQUE CLUSTERED INDEX [IX_MSSAnchorPendingChangeLog] ON [dbo].[MSSAnchorPendingChangeLog]
(
[CrawlId] ASC,
[TargetDocId] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = ON, ONLINE = OFF) ON [PRIMARY]

The final step, to ensure a clean Shared Services database, we created a new Shared Services Provider and removed the old one. We also removed the offending database maitenance plans

Monday, June 22, 2009

Installing a Solution ended with status "Error"

Today I had a problem with installing a solution... :-)
It may sound silly because all you have to do is use stsadm -o addsolution -filename "Location Of File" and then deploy it thought the central admin but this time I got an "Error" in the solution status instead of the expected "deployed".
I could not re-deploy / remove becouse there was already a timer job related to the solution deploy.
After deleting the timer job the solution got back to not deployed status (and so on again and again...)

In the ULS logs I found this error - Updating SPPersistedObject SolutionOperationStatus Name=SolutionOperationStatus Parent=SPSolutionLanguagePack Name=0. Version: -1 Ensure: 0, HashCode: 38896601, Id: 87c32e71-13f0-4d85-a215-29f1d180d239, Stack: at Microsoft.SharePoint.Administration.SPPersistedObject.Update() at Microsoft.SharePoint.Administration.SPSolutionLanguagePack.SetOperationResult(SPSolutionOperationResult opResult, String msg, SPWebApplication webApp, Int32 updatesPerServer) at Microsoft.SharePoint.Administration.SPSolutionLanguagePack.DeployFilesInstallFeatures(SPWebApplication webApp, Boolean globalInstallWPPackDlls, Boolean installFeatures, Boolean force, Int32 tries) at Microsoft.SharePoint.Administration.SPSolutionLanguagePack.DeployLocalCore(Boolean globalInstallWPPackDlls, Collection`1 webAppl...

After doing some investigation I found that the reason for the error was that the “Windows Share Point Services Administration” was not stated on one of the farm servers. After the service has been started, the deployment worked just fine...

Friday, June 5, 2009

Content Deployment - What you won't find in the books...

I have been dealing with content deployment for some time and I think it's time to share some of my experience, especial tips and tricks and other stuff I found relevant that usually not in the regular documentation...

Content deployment is great but tricky... about the regular problems and errors you can read in the "great" Stefan's blog

Well... Time for the gussy stuff...

Content Deployment Tips from the real world...

1. Since Microsoft allows us to schedule the content deployment jobs only every 15 / 30 / 45 / 60 minutes or once in a day I created a cmd file that runs my content deployment jobs (in specific order one by one using stsadm -o Runcontentdeploymentjob "Job_Name") so this way I can do it whenever I want (4 times a day and one in the weekends for example with the windows scheduler).

2 When you deploy new solution / upgrade / sp / etc you should stop the content deployment, it is easier to do it that way too.

3. If you have a feature in the source and destination, be sure to activate it only in the source, the destination feature should be activated by the content deployment.

4. If you have event receiver / workflow connected to a list remember thagt it will be transferred ti the destination - meaning that usually you will need to remove the workflow / event reciever from the destination lists BUT every time you will do a full deploy it will be transferred again to the destination.

5. Start with blank site from stsadm -o command - don't use the blank template from the gui.

6. You can do 2 way content deployment - use DocAve tool for example.

7. CD is great way to transfer your data between domain's / farms (better then db detach / attach) because it is easier to set up the new permissions and not dealing with "cleaning" them after using db's backup / detach.

8. It's great way to transfer some or all your data from prod to QA if needed. You can script the creation of the new site collection and just get again all the data from scratch if you usually destroy your QA :-)

Thursday, June 4, 2009

STSADM all commands filtered

Hi There,
Just saw cool presentation of using silverlight that shows all STSADM options divided (if you like) to catecories like "not in gui", "new in sp2", "new in sp1" , "search related" etc...
Check it out here.