A guy I have known for over 4 years now is going places.
I met Shannon at a contract I was working for a previous employer and quickly noticed that we both had many of the same interests and skills. Since then we have kept in contact and always seem to be pushing each other to one up the other in things like certifications, new technologies, or even interesting client engagements. Recently he came to work with me at Qortex as a Senior Solutions Developer and Microsoft Certified Trainer. Needless to say it was on from day 1.
Well, I think he finally got one up on me that will be very difficult to top. About 6 months ago he was invited to the mothership (Redmond, WA) to help deliver some content to internal Microsoft employees. The event is called Tech Ready. He must have done a good job, because next week he will be flying out again to assist in delivering in-depth SharePoint content to more Microsoft employees. Talk about a dream scenario.
Anyway, I thought I would congratulate him publicly (for which I doubt I will ever live down), and also point some of you to his blog. He has some really good content and also has a good pulse for what is going on in the SharePoint world currently. Not only that but he has a current post on a custom top navigation and side navigation component that we are currently using for a project we are working together.
Check out his blog, I doubt you will regret it.
Michael
It has been a long time since my last post, but I have good reason. I have been terribly busy trying to complete a really cool project for one of my clients. I will post more about it in a later entry, but to say the least it has been quite an adventure.
Anyway that is not the point to this blog. I thought I would put a little ditty together about a course that I am going to be teaching at AmeriTeach here in Denver coming up in September. It is the 50064 Advanced SharePoint Developer course.
You might know from previous posts that I have been teaching the Ted Pattison WSS 3.0 Development course for AmeriTeach and I love it. It by far is some of the best content I have seen for SharePoint Development. I would recommend it for any ASP.NET person that would like to learn the nuances of SharePoint development without all of the headaches of trying to figure them out on your own. But With AmeriTeach expanding it SharePoint curriculum they decided to run the Advanced Development course created by Chris Givens at Architecting Connected Systems. The first surprise that I had was that after they decided to add it to the class roster Chris personally e-mailed AmeriTeach and offered to assist them with any questions or problems they had with the course. Needless to say I was instantly impressed due to the professionalism of getting in touch out of the blue to support the course he created.
Anyhow, I am starting to go through the course content this week in preparation for the forthcoming course and already I am devouring the content. The first couple of modules attack some realistic issues I have seen at many clients that I feel are very important for any SharePoint developer to know and understand. Chris's labs are easy to follow, detailed, and allow the student to see how simple it is to work with SharePoint.
In my courses that I teach I try to train the students in what I call "Thinking in SharePoint". Very similar to the idea of a developer trying to understand and apply object oriented programming principals; students need to understand the concepts of SharePoint to be able to properly use SharePoint as a development platform. I have no doubt that with this course it will further any students understanding of how to "Think in SharePoint" and develop better SharePoint applications.
So if you are interested in getting deeper in to SharePoint and developing in SharePoint to the fullest extent possible, please come checkout the courses I am presenting at AmeriTeach and see just how much fun SharePoint can be.
Happy coding…
Michael
So you have installed SharePoint (WSS or MOSS) and you have been happily using it for a while now. Everyone in the office has been taking part in creating some really cool content or loading their sites up with some very important information.
Now fast forward a few months. Your local administrator of the server gets in touch with you to let you know that your SQL Server is running low on memory. What? How could this be? You start to look for the source of the issue and low and behold you run across a 120 GB database log file. 120 GB???? Yep. 120 GB.
You start to think to yourself, “Man, I didn’t know that the SharePoint databases were going to take up this amount of memory. Maybe I need to purchase an extremely large drive to put the database files on”.
Well you could do that. Or you can modify a few settings and set up a few good maintenance plans and you can reduce that log file down to mere kilobytes. This actually happened to a few clients of mine. The main source of the problem is that when most folks install SharePoint they don’t realize that it creates the databases and sets them to Full Recovery Mode. What this means is the database log (.ldf) file never gets shrunk. Mainly this is so that if something happens to the database they you have a full history of all of the transactions that have taken place. But, this is bad for many reasons as well. Now don’t get me wrong many places have that grumpy DBA that will take care of all of this stuff for you, but I mainly see this in small to medium organizations that don’t have a full time DBA on staff and/or they roll a development farm to production without a lot of forethought on recovery if something goes bad.
Let’s see what we can do about this.
First open up your file explorer on your database server or whatever server your database files are located on and look at the size of the database .mdf and .ldf files. If you have a default install of SQL Server you can find these files under C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data. Usually if you find that the .ldf files are in the high MB or GB you definitely need to continue with this article. If not at least check to verify that you have database backups and/or maintenance plans in place.
STEP 1: Backup all the SharePoint Databases
If you are going to do anything with the databases it is always a great idea to do a Full backup on each database
STEP 2: Change the Recovery Mode of the database
This is a fairly easy thing to do. You log in to SQL Server and navigate your way to each one of the databases you want to take care of. The following screen shot is of the database properties dialog. Just right click the database and select “Properties”.
The red outlined section is the recovery model setting. Currently it is set to FULL. The other selection “Simple” is the selection we need to use. So select “Simple” and click OK.
STEP 3: Shrink that excessive log file!!!
So the database that I am currently using as an example the log file is nearly 2 GB (actually it is 1.795GB). To shrink the database log file, right click the database and select “Tasks”, then select “Shrink”, then select “Files”. You will get this dialog:
The database file type is what we are after. We want to switch it to “Log”.
Notice the red highlight. Look at the log file size and the available free space. You have the ability to recapture nearly 89% of the space that is currently allocated. Make sure that the shrink action is set to release unused space and click OK. Now your log file should shrink to only the needed space and it should end up around a few hundred KB.
The important take away here is that when you set up SharePoint you need to be sure that you are actively maintaining your system or be sure that you have the proper processes in place for the database. I have seen many of my clients that all this comes as a shock to them. I don’t think it is really their fault, but more just a point that they never knew had to be considered. Most clients that have DBA’s on staff will rarely run in to this problem since most DBA’s will be the first to be sure that these database are fully maintained and recoverable.
On a side note, please be sure that you or someone that is qualified in your organization creates maintenance plans for the databases. This will assist you in being sure that the database is backed up and maintained properly. There are many articles out there on how to set these plans up on SQL Server 2005 so I won’t bore you with that. J
HTH.
Michael
Well, Rick White (nutball extraordinaire) is at it again.
Last year on bike to work day for benefit to the US troops he took to the streets with a small trike and rode over 4 miles to work. He gained a lot of attention and raised over $5000 that went to help send care packages to the troops. This year he is upping the ante a bit. Not only does he have a new group of soldiers to help, but he also has a new trike. One that will make most mobile computing technologies look so last decade.
If you would like to know more about what Rick is up to or how you can help, check him out on this YouTube video:
Or go to his website to get more information about how you can help the cause.
Good Luck Rick!
Michael
I ran across a client that was looking to move the SQL Server data files and logs from their SharePoint 2007 installation to another drive. The reason was to free up some space on the drive that SQL Server was installed on. I decided to post the steps that I took so that it might be beneficial for others. Now, with that said, I am not completely positive that my steps are the best possible way; but it did accomplish the task and everything worked when I was done. So I guess the steps I took couldn't have been too bad. J
Here are the steps:
- Quiesce the Farm – This is especially important if you are working on a production system. Pretty much it takes the farm out of commission and doesn't allow any more sessions to be created.
Backup all of the databases that you are looking to move.
- With the client I was working with they were looking to move all of the SharePoint database data and log files. Your needs may vary, but in any case this is another very important step. Be sure you have a current backup of any databases you will be fiddling with.
Turn off SharePoint Services
- This will stop the connections to some of the databases. If you try to detach any of the databases you will find that some will have connections active. In case of the content databases you will probably find that the connections to the have already been taken care of. Either way you will need to stop some of the SharePoint services in order to get the search databases and config database totally disconnected.
You can either stop the services through the Central Administration, or you can do it at the Services Console. I chose the services console since I didn't want to deal with typing in configuring the services again.
To stop the connections to the existing databases stop the following services:
- Office SharePoint Search Service
- Windows SharePoint Services Administration
- Windows SharePoint Services Search
- Windows SharePoint Services Timer
- Windows SharePoint Services Tracing
- World Wide Web Publishing Service
- After the services are stopped, you should be able to detach the databases that you are looking to move.
- After detaching the databases navigate to where the data and log files are being stored and copy them to your destination.
- Reattach your databases.
- Restart your services.
- Un-quiesce the farm.
If everything went well, you should have the ability to get back to your sites and all of your content. If not, you can always roll back to the database data files you previously had in the old location. I would recommend doing a test run on a development machine first to be sure that you not encounter any problems.
Hopefully, you will find this to be helpful in your quest if you run in to the same need.
Happy SharePointing..
Michael
I had a respondent to another one of my posts ask me a very interesting question. I had to pause and think about the answer for a couple of minutes. I guess I had taken for granted my process for explaining when to use one method over another for implenting wiki's.
If you are using SharePoint you realize that you have a couple different ways to implent a Wiki. You can create a Wiki Library in a site, or you can create a Wiki site. So what is the difference? Essentially nothing. You have the same ability to capture tacit knowledge. So when should you use one over the other?
Here is the method I use to decide:
First off, if the information that is being captured only is useful to the a sites members or a team I would use a Wiki Library inside of a team site. Reason being is that it is really specific for only that purpose and usually the content that is being delivered is not of interest outside of that group. So a great example for this would of course be a Team Project Site that needs to share common information or content. So things like jargon, buisness concepts, or even requirements can be captured and quickly shared with the rest of the team.
Now when would I use a Wiki site? Well, this is more of the macro version of the list concept. I would use this when the content is going to be of interest to anyone that is going to a portal. To give you a good example, think of a company that is using SharePoint as a intranet. Departments could use Wiki sites to publish content to the rest of the company that is important to the company as a whole. So lets assume that Human Resources wants to make it easier to publish Policies and Procedures, an Employee Handbook, or even Company Benefit FAQ's then a wiki site can be created to capture the content.
Anything inbetween is just a judgement call, but remember if you decide later you should have gone with one over the other you can always migrate the content.
Hopefully this will be helpful to you in the future when you decide to use wiki's. And Kay (Phoebe), thank you for the idea for the post.
MIchael
In a previous post I mentioned that I recommended using WSS or SharePoint for kick starting the creation of web based applications. With that said, I need to post on another important subject that has come up in regards to that. I have a client which I really enjoy working with. They are a good company and they did see the potential benefit of using SharePoint to get their application a solid foundation. They utilized WSS 3.0 to create their web presence and web application for their customers. However, the company that they first hired to create this application built it out completely with SharePoint Designer 2007.
So now that you have the overview here are some of the details of how this became a tragic situation.
The company that built this application used just a standard ASP.NET developer instead of a person that had any SharePoint experience. How do I know this? Well none of the built in SharePoint functionality was used in the code, and while we are on the topic of the code; since it was all done in SharePoint Designer it is all inline code with no real ability to actively debug. Common code is copied and pasted in close to ever page, and whenever they wanted to get at a SharePoint list or other object they would create the SPSite object utilizing a hard coded url instead of using the SPContext object.
After they finally finished up with the initial consulting company they decided to hire a much larger consulting firm to come in and try to fix the initial implementation that the first company did such a bad job putting together. Well, after a while maintaining and trying to stabilize the product the finally decided to part ways to.
Now it I have it. I am looking at the application and wondering if it is able to be saved. One of the directors I am working with asked when he would finally have an application that he didn't see as needing constant attention and when they would feel like they could stop cursing the first consulting company. My reply was that I really didn't know. I am person that makes decisions based on logic and fact, and from what I have seen I don't accurately think I could even give him an estimate of time to get the application to that point. To fix most of the average issue on the application takes hours or days and usually causes other bugs to surface. I know that most of you have seen this before. So the question is when do you throw in the towel and start over? I know that it can be painful, but usually in the end you come out with a better application and it is usually better built.
Either way, please don't let this dissuade you from using SharePoint for development, but please be sure that if you are not familiar with using SharePoint as an application or as a framework make sure that you have someone that has some experience with it before you just start throwing code together. If that is not an option, please look in to Ted Pattison's Training. I have taught his WSS course and it is the best start to getting in to doing REAL development with SharePoint. If you need are recommendation of the course that would best suite you or would like some advise please don't hesitate to contact me. I would be happy to help.
Until then, happy coding.
Michael
A couple weeks ago I had the opportunity to present on SharePoint at a Wine and Cheese Server 2008 Launch event. It was quite an event. The event itself had over 150 attendees' signup and was very busy. And to hold true to most all events there were some terrific raffle prizes. One guy actually went home with a new Xbox 360 and Guitar Hero III.
It is still amazing to me the acceptance and the challenges people are facing with SharePoint. On one hand companies are implementing SharePoint at a break neck pace, yet many of them are becoming rapidly upset with the implementation because it was implemented carelessly or by someone that just didn't know the nuances of SharePoint. On the other hand I had a couple of attendees that were very excited about the implementation at their office, but the rest of the office was refusing to use it because it was just another new application that was installed and they were never asked if they actually needed it. While others were still in the process of evaluating it and getting their heads around what SharePoint could do for them.
For one thing it was an eye opening experience to see such a wide spectrum of people interested, frustrated, and confused about SharePoint.
Which will lead me to my next post….
Until then, Happy Coding.
Michael
Well it has been quite a while since I last posted, but for good reason. I have been under an avalanche of SharePoint work with the new company I started with while back. When all is said and done I will post more about the project I am working on.
Enough blathering about how busy I am, the main reason I am posting is to mention that I am getting back in the saddle on presenting and teaching.
A while back I started teaching for a fabulous training center here in Denver by the name of Ameriteach. Everyone there is great and best of all I get to teach some of the best SharePoint training content on the market the Ted Pattison Group WSS Development course. If you are interested in SharePoint development you definitely cannot go wrong with this course. It covers all of the basic techniques SharePoint development and by far is the best that I have seen as far as content. Checkout the course and Ameritech if you are looking for a good way to get in to SharePoint and creating best practice SharePoint solutions.
On another note, if you are in the Denver area on the 13th of March and looking for a geeky evening out you should check out the 2008 launch event that is being sponsored by Ameriteach, Qortex, and SoftwareONE. It is an Ask the Experts evening with Wine and Cheese, the new 2008 launch products, and other breakout sessions. It looks like it will end up being an extremely fun evening.
I will post more about the evening after the event.
Until then, Happy Coding.
Michael
Well, I am back again to just make sure that all of you SharePoint developers are not wasting your time. I am not quite sure if this has been posted before or not, but I found it impressive enough to blog about it.
So here is the lead up. I am working on a great new project that requires me to create some Site Columns and Content Types using a SharePoint feature. Well I have a couple of Site Columns that need to be Rich Text multiline text areas. So in an element manifest file, you would type in something like this.
<Field ID="{GUID}"
Name ="ShortDescription"
DisplayName="Short Description"
Type="Note"
RichText="true"
RichTextMode="Compatible"
Sortable="false"/>
So I did that and deployed and enabled the feature, but when I went to the site columns list to verify that my CAML was correct and the column was created as a multiline Rich Text field. Well, low and behold it wasn't. It was still listed as Plain Text.
Notice that I really want the selection to be Rich Text.
So, I went back to my CAML and found that everything looks right. I decided to take Ted Pattison's advise and do some detective work. I created the what column I wanted then used the object model to pull the field from a list to see what the CAML looked like. Low and behold it was the same…. EXCEPT…
<Field ID="{GUID}"
Name ="ShortDescription"
DisplayName="Short Description"
Type="Note"
RichText="TRUE"
RichTextMode="Compatible"
Sortable="false"/>
The RichText Property was set to all uppercase true. I updated my CAML and Bingo.
Just in case it hasn't set in yet. It seems that the true value for this specific property in CAML is case sensitive. Not sure why. I have played around with a few of the properties and it doesn't seem to affect them, but the testing was not very specific and not overly conclusive.
Hope this helps you get past the issue faster than I did.
Michael.
You are really far behind on technology? Even though I am playing with and implementing some really cool stuff with SharePoint and some of the newer technologies, this last trip to NY for the Infusion Sleepless weekend really opened me up to the feeling that I am not doing enough to keep up.
I guess I am going to have to go to the experts and really start paying attention to what is going on and watch what they have to offer. How do you say I need more time to read blogs in 13 different languages?
Another thing that I realized is that I haven't had much time to keep up with the latest titles being produced by Carl and Richard on DNR. In looking at the list I guess there have been a lot of good titles that they have produced. I guess I should start scheduling about an hour or so out of my day to just focus on what is going on out in the world around me.
I guess that will be if I can keep myself from playing myself to death with the new Xbox360 that I won during the course of the weekend. I sure hope they got it shipped. I am hoping to get some serious ass kicking in on Halo 3 when it arrives.
Until another time.
Michael
I know that it has been a while since I last posted, but I have not had a lot to spout off about. That is until now.
I recently went through the process of qualifying for the Sleepless In NY contest that was being put on by DotNetRocks, Microsoft, and Infusion.

I would say that the process didn't seem to be too hard, but it was three different interviews with different people from Infusion. The idea was that if you passed all of the interviews and was lucky enough to make the cut then you would get an all expenses paid trip to New York to get some intense training from some Microsoft and Infusion folks on Silverlight and SharePoint.
Well, I guess I got pretty lucky because I was selected to make the trip. I was very psyched.
Now this was a trip worth writing about. When we got there, we were treated to a quick overview of SharePoint by Kurt from Infusion (talk about a guy that doesn't need any more caffeine….). After the introduction, we were taken to the 17th floor of a building located on Time Square for some kick ass barbeque.
I was out until about 1:00am ET and headed back to the hotel. Now don't get me wrong, we were going to have some INTENSE training, so I wanted to get some shut eye before the real training started.
The next morning when we go there we found out that we would have an all star cast of presenters and judges that would be taking part in the event. We had the likes of Lawrence Liu (Microsoft SharePoint Guru), Sahil Mailik (SharePoint Extraordinaire) , Carl Franklin and Richard Campbell (DotNetRocks.net), Bob Fox (SharePoint MVP), and a list of other really great folks from Infusion.
Anyhow we went through the day with some really great sessions about WPF, Silverlight, and SharePoint. We also had a great presentation by Lawrence about the upcoming additions to SharePoint that were being worked on by the SharePoint Community at CodePlex, called the CKS (Community Kit for SharePoint). I would highly suggest you check it out. The work they are doing is unbelievable and you can get in on the action.
Later that day through contests a few people walked away with some very cool prizes. Things like Tom Binh laptop backpacks, great books on SharePoint, a Microsoft Zune, and even an Xbox360 Elite. There was also an Insomniac Laptop and a Trip to Redmond as some of the larger prizes. The nice part is that the guy who never wins anything won the Xbox. Yep, I got lucky and was awarded the crème of the crop Xbox. I was so shocked, I thought they were talking about someone else when the called my name. It took a bit to figure out that I was the only Mike in the room. J
As the day wore on we were assigned a project to do over night and would have to present in front of the judges the next morning. Needless to say the group I was a part of tried all night to get out project done. It was unfortunate, but we did try pretty hard.
After that I left for home. I would have to say that the gang and Infusion and everyone else that took part did a bang up job of taking care of our every need and definitely over delivered on the weekend. It would be at the very minimum to say that they did an outstanding job. I truly don't think there are any words to describe what a terrific job they did.
Keep an eye out for other contests like this. Infusion mentioned that if this was a success that they would probably be doing more. If they do, do everything you can to get selected. It is a worthwhile investment of your time, and you will not regret it.
Michael
Okay, this might seem like kind of a corny post, but I have run in to a couple of people inquiring about how to enable MySites after they have disabled them by using my previous post.
Pretty much it is the reverse of the article, but for good measure I will just go through the steps here too.
- Go to the Shared Service Provider that is hosting the MySites
- Go to Personalization Services Permissions
-
Add or Edit the user account you want to enable the MySites functionality for.
- If you want to give all authenticated users permissions then edit the NT Authority\Authenticated Users account
- If you previously deleted the Authenticated Users Account then you might have to add it back in if the first part of step 3a remains true.
-
When you get to the permissions screen check these 2 permissions
- Create Personal Site
- Use Personal Features
Now please be aware that this shouldn't be taken lightly. You definitely need to be sure that you have planned for capacity.
Hope this helps.
Michael
So I ran in to an interesting issue doing yet another migration this weekend for my current client.
The client had a department that was utilizing SharePoint through the B2TR period of SharePoint beta testing. I upgraded their server to RTM bits and then proceeded to so the migration to the production team site server using STSADM export. Seems all fine and dandy right?
Not really. Something interesting happened when I tried to import the exported content to the production server. I ran in to an error message telling me it couldn't find the IPFSSiteFeatures. Being that I know where to find the features, I thought I would check it out. I navigated to the Features directory to find that the folder was there that had the feature in it. Hmmmm…
So in doing more research I remembered that the department server that was running the beta SharePoint was utilizing the Enterprise edition. The server that I was migrating the content to was installed with Standard edition. So, in finding that the feature mentioned above was an Enterprise feature it would seem that the export/import commands on STSADM is doing more than just moving content and site information.
I guess this makes since when it is actually trying to recreate the same site that is being moved and a site template might be an Enterprise site. I went back and traversed the sites on the department server to see if they were utilizing any of the Enterprise related features and I couldn't find an instance anywhere on the sites I was exporting.
How did I get passed the problem?
Well, that is a good question. Via STSADM, I installed the features that it asked me to install, meanwhile keeping a list of features I was installing. Seeing as though they were Enterprise features I wanted to be sure to uninstall them after the import since we were not running the Enterprise license. After installing the features, importing the content, and uninstalling the features everything seemed to work just fine.
The moral of the story is that don't expect to be able to export/import content between the standard and enterprise versions of SharePoint.
I guess I also could have tried to use the Content Deployment capability that SharePoint has, but every time I have tried that I always ran in to errors that I couldn't track down or figure out.
Hope this helps.
Michael
So, in review of the event logs on the index server of the medium MOSS 2007 farm that my client is using I keep running across a lot (And I mean A LOT) of error events, some with the Event ID of 7076 and some with 6398. I ran across this interesting blog post by Gayan Peiris.
Now I am not one to just go on a hotfix rampage, but now that I have run in to problems with the last hotfix that I installed at Microsoft's request it didn't go so well. See my last post.
Anyhow, I thought I would just mention that Gayan has put together a very good post, but I also found that if you fallow the links you will eventually end up at Microsoft's DevDiv Hotfix Availability Program page. WHAT? Yep that is right, it is a way to get those Hotfixes that you need to get a hold of Microsoft to get. Now that doesn't make much sense, but either way it looks like you are able to download the hotfix that Microsoft is recommending to Gayan.
Just please be warned by the comment at the top of the page.
WARNING: These fixes have not gone through full Microsoft regression testing. Specifically, these hotfixes have had targeted testing which does not include testing in combination with other hotfixes. You are encouraged to only install the specific hotfixes needed to address the problem you have.
Please carefully review the associated KB article for each hotfix you install to verify that this is the fix you need and that there are no known compatibility or installation issues. You may also want to contact a Microsoft Support Professional.
I would hate to see you go through the same problems I did when I installed the last hotfix.
So I guess, what do I do? Recommend hotfixing the servers? Or just wait it out until Microsoft puts their seal of approval on the hotfix? I think either way it is going to be a tough decision for the customer.
Enjoy, and don't hotfix anything that's not broken. J
Michael