<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WebDevStudios.com &#187; Microsoft</title>
	<atom:link href="http://webdevstudios.com/topics/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdevstudios.com</link>
	<description>Open Source Website Development and Design</description>
	<lastBuildDate>Wed, 28 Jul 2010 18:25:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SQL: Script to attach and detach Databases for mass moves</title>
		<link>http://webdevstudios.com/blog/sql-script-to-attach-and-detach-databases-for-mass-moves/</link>
		<comments>http://webdevstudios.com/blog/sql-script-to-attach-and-detach-databases-for-mass-moves/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 14:51:39 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2265</guid>
		<description><![CDATA[I dont know about most of you, but this is something that I have had to do on multiple occasions, moving databases to a new SAN/drive/etc.  And the environments that I normally have to support have WAY too many databases to sit and detach, move, then reattach by hand.  A lot of scripts out there [...]]]></description>
			<content:encoded><![CDATA[<p>I dont know about most of you, but this is something that I have had to do on multiple occasions, moving databases to a new SAN/drive/etc.  And the environments that I normally have to support have WAY too many databases to sit and detach, move, then reattach by hand.  A lot of scripts out there arent very intuitive, and some other blogs I have read can be rather misleading. </p>
<p>The following scripts were originally borrowed from somewhere out there, over the rainbow, and tweak to meet the requirements that make my life easier.  Unlike most scripts you will find, this one actually pulls out the filenames from the system database to help with locating, moving, and reattaching.  (This is sort of important since a lot of applications create thier own databases, and being that there are do many, I would have to sit and document everything).  Obviously, from this script, I only want databases that are on the M: drive, so the script will only pull out those values.  Change that to whatever you want it to be.  @DBPath and @LogPath are the new locations where I will be moving the files to. </p>
<p><code>--Declare variables <br />
DECLARE @DBPath varchar(400)<br />
DECLARE @LogPath varchar(400)<br />
SET @DBPath = 'H:SQLDATA'<br />
SET @LogPath = 'I:SQLLOGS'<br />
use [master]</p>
<p>--You can copy and past these results into a new query window for the re-attach script<br />
Select 'EXEC sp_attach_db @dbname='''+ [name] + ''',',<br />
     '@filename1=''' + @DBPath +  REVERSE(SUBSTRING(REVERSE(filename), 0, CHARINDEX('', REVERSE(filename), 1))) + ''',', + <br />
     '@filename2='''+ @LogPath + [name] +'_Log.ldf''' from sysdatabases <br />
	 	where dbid > 4 AND filename LIKE 'M:%'<br /></code><br />
Now this is only the step for creating the scripts to re-attach the databases.  The following is the detach script.<br /><code>--Code to generate detach script<br />Select 'EXEC sp_detach_db ''' + [name] + '''' from sysdatabases where dbid > 4 AND filename LIKE 'M:%'</code></p>
<p>I hope this helps someone out, it has sure saved my butt some work a few times.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/sql-script-to-attach-and-detach-databases-for-mass-moves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS: Enable versioning from C#</title>
		<link>http://webdevstudios.com/blog/moss-enable-versioning-from-c/</link>
		<comments>http://webdevstudios.com/blog/moss-enable-versioning-from-c/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 17:59:39 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2243</guid>
		<description><![CDATA[ Add a web reference to the Lists.asmx web service.  Call it whatever you want, I used &#8220;PDLists&#8221;.  The following code will access a document library or list, and enable versioning.  Simple, but effective. I use this code in a command line application, saves a lot of time from not logging into a site, finding the [...]]]></description>
			<content:encoded><![CDATA[<p> Add a web reference to the Lists.asmx web service.  Call it whatever you want, I used &#8220;PDLists&#8221;.  The following code will access a document library or list, and enable versioning.  Simple, but effective.</p>
<p>I use this code in a command line application, saves a lot of time from not logging into a site, finding the list or library, opening settings, opening versioning properties, and then enabling.</p>
<blockquote><p>public static void EnableVersioning(string URL, string ListName)</p>
<p>{</p>
<p>PDLists.Lists EnableVersions = new PDLists.Lists();</p>
<p>EnableVersions.Credentials = CredentialCache.DefaultCredentials;</p>
<p>EnableVersions.Url = URL + &#8220;lists.asmx&#8221;;</p>
<p>XmlNode _response = null;</p>
<p>XmlNode ndList = EnableVersions.GetList(ListName);</p>
<p>XmlNode ndVersion = ndList.Attributes["Version"];</p>
<p>XmlDocument xmlDoc = new System.Xml.XmlDocument();</p>
<p>XmlNode ndProperties = xmlDoc.CreateNode(XmlNodeType.Element, &#8220;List&#8221;, &#8220;&#8221;);</p>
<p>XmlAttribute ndVersionAttrib = (XmlAttribute)xmlDoc.CreateNode(XmlNodeType.Attribute, &#8220;EnableVersioning&#8221;, &#8220;&#8221;);</p>
<p>ndVersionAttrib.Value = &#8220;TRUE&#8221;;</p>
<p>ndProperties.Attributes.Append(ndVersionAttrib);</p>
<p>XmlDocument doc = new System.Xml.XmlDocument();</p>
<p>XmlElement batchElement = doc.CreateElement(&#8220;Batch&#8221;);</p>
<p>XmlNode newItemhome = EnableVersions.GetListCollection();</p>
<p>try</p>
<p>{</p>
<p>_response = EnableVersions.UpdateList(ndList.Attributes["ID"].Value, ndProperties, null, null, null, ndVersion.Value);</p>
<p>}</p>
<p>catch (Exception ex)</p>
<p>{</p>
<p>Console.WriteLine(ex.Message + &#8220;\n &#8221; + ex.StackTrace);</p>
<p>}</p>
<p>Console.WriteLine(&#8220;[versioning enabled]&#8220;);</p>
<p>}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/moss-enable-versioning-from-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS: Excessive Sync errors on Sharepoint 2007 Front End Web Server</title>
		<link>http://webdevstudios.com/blog/moss-excessive-sync-errors-on-sharepoint-2007-front-end-web-server/</link>
		<comments>http://webdevstudios.com/blog/moss-excessive-sync-errors-on-sharepoint-2007-front-end-web-server/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 17:55:22 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2232</guid>
		<description><![CDATA[In several MOSS deployments with multiple front ends, I have noticed many sync issues in the event logs. A runtime exception was detected. Details follow. Message: Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'. The statement has been terminated. Techinal Details: System.Data.SqlClient.SqlException: Cannot insert duplicate key row in object 'dbo.UserMemberships' with [...]]]></description>
			<content:encoded><![CDATA[<p>In several MOSS deployments with multiple front ends, I have noticed many sync issues in the event logs.<br />
<code>A runtime exception was detected. Details follow.<br />
Message: Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'.<br />
The statement has been terminated.<br />
Techinal Details:<br />
System.Data.SqlClient.SqlException: Cannot insert duplicate key row in object 'dbo.UserMemberships' with unique index 'CX_UserMemberships_RecordId_MemberGroupId_SID'.<br />
The statement has been terminated.<br />
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)<br />
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)<br />
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)<br />
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)<br />
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)<br />
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)<br />
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)<br />
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)<br />
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()<br />
at Microsoft.Office.Server.Data.SqlSession.ExecuteNonQuery(SqlCommand command)<br />
at Microsoft.Office.Server.UserProfiles.WSSSynchSqlSession.SynchExecuteNonQuery(SqlCommand cmd, Boolean throwOnFail)<br />
at Microsoft.Office.Server.UserProfiles.WSSSynchSqlSession.SynchExecuteNonQuery(SqlCommand cmd)<br />
at Microsoft.Office.Server.UserProfiles.SiteSynchronizer.WriteChangeLogConsumed()<br />
at Microsoft.Office.Server.UserProfiles.SiteSynchronizer.Synch()<br />
at Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException, TryBlock tryBlock, FilterBlock filter, CatchBlock catchBlock, FinallyBlock finallyBlock)</code></p>
<div>Why cant anything ever just work with Microsoft?</div>
<div> </div>
<div>It could be do to backing up and restoring databases to different applications.  It causes the GUID for the content DB to be the same, causing a conflict during synchronization.</div>
<div> </div>
<div>To get a list of all the GUIDs with sync issues you can use the following command from one of the front ends:</div>
<p><code>stsadm -o sync -listolddatabases 0</code></p>
<p>You can then use this information to query SQL and see which databases are having issues.  OR, you can use this VBS script to get the information:<br />
<code>Set Args = WScript.Arguments<br />
Connstr = "Driver={SQL Server};Server=SQL2005;Database=Config_DB"<br />
Set Connect = CreateObject("ADODB.Connection")<br />
Connect.Open Connstr<br />
strInput = Args.Item(0)<br />
Set DB = Connect.Execute("SELECT Id, ClassId, Name, Status, Version, Properties FROM Objects WHERE (Id = '" &amp; strInput &amp; "')")<br />
Do Until DB.Eof<br />
WScript.Echo Db("Id")<br />
WScript.Echo Db("ClassId")<br />
WScript.Echo Db("Name")<br />
WScript.Echo Db("Status")<br />
WScript.Echo Db("Version")<br />
'WScript.Echo Db("Properties")<br />
DB.MoveNext<br />
Loop</code></p>
<div>To help get a baseline in our environment, I just ran:</div>
<p><code><br />
stsadm -o sync -deleteolddatabases 0</code></p>
<div>This doesnt remove the databases, it removes the sync error.  I let the servers run over the weekend, then checked again.</div>
<div> </div>
<div>To fix the issue, we detatched the databases in order to issue the a new GUID.</div>
<div> </div>
<div>Detatching the DB will not delete it, just remove it from the farm.</div>
<div> </div>
<div>To detach:</div>
<p><code>stsadm -o preparetomove -contentdb -contentdb : -site<br />
stsadm -o deletecontentdb -url -databaseserver -databasename </code><br />
To reattach:<br /><code>stsadm -o addcontentdb -url <URL> -databasename <DB Name> -databaseserver <SQL Server></code><br />
<br />
I hope that saves someone else some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/moss-excessive-sync-errors-on-sharepoint-2007-front-end-web-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OCS: Microsoft Communicator Mobile</title>
		<link>http://webdevstudios.com/blog/ocs-microsoft-communicator-mobile/</link>
		<comments>http://webdevstudios.com/blog/ocs-microsoft-communicator-mobile/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 17:38:47 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[Office Communications Server]]></category>
		<category><![CDATA[Office Communicator]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2228</guid>
		<description><![CDATA[After installing and setting up your Communicator mobile, you have probably recieved an error about version compatibility, thanks Microsoft!   The issue is related to the Client Filter.   1.  You need to open up your Pool on your internal OCS.   2.  Open the client version filter properties.   3.  Change the CPE value [...]]]></description>
			<content:encoded><![CDATA[<div>After installing and setting up your Communicator mobile, you have probably recieved an error about version compatibility, thanks Microsoft!</div>
<div> </div>
<div>The issue is related to the Client Filter.</div>
<div> </div>
<div>1.  You need to open up your Pool on your internal OCS.</div>
<div> </div>
<div>2.  Open the client version filter properties.</div>
<div> </div>
<div>3.  Change the CPE value to 2.0.387.* &gt;= Allow</div>
<div> </div>
<div>4.  Restart all services.</div>
<div> </div>
<div>5.  On the Edge server, open the client filter properties, and follo the 3.</div>
<div> </div>
<div>6.  Restart all services on the Edge server.</div>
<div> </div>
<div>You should not be able to connect to OCS from your mobile device.  It worked for us anyway.</div>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/ocs-microsoft-communicator-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS: Shared Service Provider Search Service Error</title>
		<link>http://webdevstudios.com/blog/moss-shared-service-provider-search-service-error/</link>
		<comments>http://webdevstudios.com/blog/moss-shared-service-provider-search-service-error/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 17:37:05 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2225</guid>
		<description><![CDATA[I recently lost a search and index server (virtual server) due to a virtual host server eating dirt.    I had some issues with getting the services transfered, since I also made the mistake of only have central administration running on the same box that was lost.    After moving the services, and hoping it [...]]]></description>
			<content:encoded><![CDATA[<div>I recently lost a search and index server (virtual server) due to a virtual host server eating dirt. </div>
<div> </div>
<div>I had some issues with getting the services transfered, since I also made the mistake of only have central administration running on the same box that was lost. </div>
<div> </div>
<div>After moving the services, and hoping it worked to no avail, i pulled the hard drives out of the old host machine and moved the VM to another host server.</div>
<div> </div>
<div>Even after restoring, there were still some issues. </div>
<div>When I tried to access the Search properties of the SSP to see what was wrong, I received:<em>An indexer is not assigned to the Shared Services Provider.</em></div>
<p>I fixed the problem by assigning an indexer to the SSP. Not exactly sure how it happened that the indexer was never assigned, but here are the steps:</p>
<p>1. Open Central Administration<br />
2. Go to the Application tab<br />
3. Select “Create or Manage this farm’s shared services”<br />
4. Use drop-down list for the SSP, select Edit Properties<br />
5. Assign an indexer server</p>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/moss-shared-service-provider-search-service-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOSS: Installing Adobe PDF Ifilter 6.0 on MOSS 2007 (Now With WSS Support)</title>
		<link>http://webdevstudios.com/blog/moss-installing-adobe-pdf-ifilter-6-0-on-moss-2007-now-with-wss-support/</link>
		<comments>http://webdevstudios.com/blog/moss-installing-adobe-pdf-ifilter-6-0-on-moss-2007-now-with-wss-support/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 17:35:41 +0000</pubDate>
		<dc:creator>Michael Coleman</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://webdevstudios.com/?p=2221</guid>
		<description><![CDATA[Here are the instructions for installing the PDF IFilter 6.0 on a SharePoint 2007 server to allow PDF files to be indexed (full text) by the Search and for the icon to be shown next to PDF documents. Download Adobe PDF IFilter 6.0 from Adobe.  Stop the IIS Admin service: Start -&#62; Run -&#62; services.msc -&#62; IIS [...]]]></description>
			<content:encoded><![CDATA[<p>Here are the instructions for installing the PDF IFilter 6.0 on a SharePoint 2007 server to allow PDF files to be indexed (full text) by the Search and for the icon to be shown next to PDF documents.</p>
<ol>
<li>Download <a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611" target="_blank">Adobe PDF IFilter 6.0</a> from Adobe. </li>
<li>Stop the IIS Admin service: <em>Start</em> -&gt; <em>Run</em> -&gt; <em>services.msc</em> -&gt; <strong><em>IIS Admin Service</em></strong> -&gt; Stop</li>
<li>Run the Adobe PDF IFilter 6.0 Setup program to install the filter on the server.</li>
<li>Copy the ICPDF.GIF file to &#8220;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Images&#8221;</li>
<li>Edit the file C:\Program Files\Common Files\Microsoft Shared\Web server extensions\60\Template\Xml\DOCICON.XML
<ol>
<li>Add an entry for the .pdf extension.<br />
&lt;Mapping Key=&#8221;pdf&#8221; Value=&#8221;icpdf.gif&#8221;/&gt;</li>
</ol>
</li>
<li>Perform an <strong>iisreset</strong> or recycle the SharePoint Application Pools</li>
<li>Add the .pdf file type to the index list:
<ol>
<li>Go to <em>Central Administration</em>, then to the <em>Shared Services Administration</em> Web of the current SSP, go to <em>Search Settings</em> and next to <em>File Type</em></li>
<li>Add a new file type <em><strong>pdf</strong></em></li>
</ol>
</li>
<li>Perform a <strong>Full Update</strong> on the Search content indexes</li>
</ol>
<p>Note: The ICPDF.GIF file is included in the file.</p>
<div>For WSS:  <a href="http://support.microsoft.com/default.aspx/kb/927675">http://support.microsoft.com/default.aspx/kb/927675</a></div>
]]></content:encoded>
			<wfw:commentRss>http://webdevstudios.com/blog/moss-installing-adobe-pdf-ifilter-6-0-on-moss-2007-now-with-wss-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: webdevstudios.com @ 2010-07-29 17:02:47 -->