<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Paul wrote!</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/bpaulblog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/bpaulblog/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:27:28 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>LocalDB - I keep forgetting</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/localdb-i-keep-forgetting</link>
      <pubDate>Sat, 28 Sep 2013 10:33:00 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2013/09/28/localdb-i-keep-forgetting/</guid>
      <description><![CDATA[Oh my my...my little brain keeps forgetting the set of commands to play with LocalDB. Today I again...]]></description>
      <content:encoded><![CDATA[<p>Oh my my...my little brain keeps forgetting the set of commands to play with LocalDB. Today I again forgot so decided that enough&nbsp;is enough. I am going to document them. So as we know,&nbsp;LocalDB was introduced in SQL 2012 with SQL Express (An Express Engine&nbsp;itself who doesn't understand networking with rest all constraints/features as it is). So where is the difference? Well the difference is the benefits of this engine.</p>
<ul>
<li>It doesn't allow you to&nbsp;install same version of LocalDB multiple times on the same machine&nbsp;which means you save lot of space/memory.</li>
<li>Also, it switches off&nbsp;when you don't use it. So saves resources as well.</li>
<li>It reduces management as you don't have many instances.</li>
</ul>
<p>So how to&nbsp;go about it? Simple, just select LocalDB while installing SQL Express. But that's it? Well no...now time is to play with it. Different from standard SQL Express engine, by default LocalDB doesn't register a service on registry so you will not see a SQLSrvr.exe running on Task Manager.&nbsp;To start with LocalDB, start with a Command Prompt and browse to your SQL Server Installation directory.</p>
<p>-&gt; CD C:\Program Files\Microsoft SQL Server\110\Tools\Binn</p>
<p>-&gt; You will find SQLLocalDB.exe in the folder. This executable supports many parameters. Common ones are:</p>
<ul>
<li>c&nbsp;- Creates a new instance</li>
<li>s&nbsp;- Starts&nbsp;an instance</li>
<li>d - Deletes an instance</li>
<li>p - Stops an instance</li>
<li>i -&nbsp;Lists all instances &nbsp;</li>
<li>There are few other parameters which you may not use but you can access them with&nbsp;/? parameter.</li>
</ul>
<p>-&gt; Now the biggest problem is how to connect with it. Well the Server Name in Connection String is bit different to connect to LocalDB. Just use (LocalDB)\&lt;instance_name&gt;</p>
<p>That's it. You are connected. Keep in mind that this is Local so you can't connect to this instance from another server. Also, if you don't use this instance for more than 10 minutes, it will switch off automatically. So you need to start it again from above command and "s" parameter. Hope you will enjoy LocalDB and next time I will not forget them ;) Not writing much about LocalDB but if you are interested, let me know. I can write a little more formal post of usage with few screenshots too :)</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Clustering [WSFC]</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/windows-clustering-wsfc</link>
      <pubDate>Tue, 29 Jan 2013 03:07:46 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2013/01/29/windows-clustering-wsfc/</guid>
      <description><![CDATA[One of the videos on Windows Server Failover Clustering.[Video]]]></description>
      <content:encoded><![CDATA[<p>One of the videos on Windows Server Failover Clustering.</p>[Video]]]></content:encoded>
    </item>
    <item>
      <title>Migrating a SQL Cluster across Domains</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/migrating-a-sql-cluster-across-domains</link>
      <pubDate>Sun, 27 Jan 2013 06:33:14 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2013/01/27/migrating-a-sql-cluster-across-domains/</guid>
      <description><![CDATA[In my recent visit to New Delhi, one of my good friend told me that he is planning for a SQL Cluster...]]></description>
      <content:encoded><![CDATA[<p>In my recent visit to New Delhi, one of my good friend told me that he is planning for a <strong>SQL Cluster Migration from one domain to another</strong>. I was really concerned to hear that. In my previous engagements, we had similar requests and it’s very clear that “We don’t support WSFC migration from one domain to another”. Let’s see some key facts here:</p>  <p><strong>Important: <a title="https://support.microsoft.com/kb/269196" href="https://support.microsoft.com/kb/269196">https://support.microsoft.com/kb/269196</a></strong></p>  <p><strong>Microsoft does not support moving an already installed and configured Windows Server 2008 or Windows Server 2008 R2 failover cluster from one domain to another.</strong></p>  <p>So what’s the way out? </p>  <p>- Script out the SQL User Account from Current SQL Cluster - <a href="https://support.microsoft.com/kb/246133">https://support.microsoft.com/kb/246133</a></p>  <p>- Script out the Jobs from SQL Server.</p>  <p>- Take a backup of your all production user databases.</p>  <p>- Shutdown SQL Cluster</p>  <p>- Remove the Disk Dependency from SQL Cluster Resource</p>  <p>- Un-mount the LUN from Cluster/Nodes</p>  <p>- Destroy the Cluster</p>  <p>- De-active/Delete Computer Accounts listed in Active Directory Users &amp; Computers for Windows Cluster and SQL Cluster.</p>  <p>- Complete your ADMT Migration.</p>  <p>- Configure New Windows and SQL Cluster with same names and temporary LUN for SQL Server.</p>  <p>- Restore all the logins generated from Step 1.</p>  <p>- Attach the old SQL LUN and set the dependency.</p>  <p>- Attach the databases.</p>  <p>- Restore all the Jobs generated from Step 2.</p>  <p>Now what if they have the SSRS also hosted on Cluster? Well we first need to clarify what’s the approach followed. Different organizations follow different approach such as one might go for a separate server hosting RS components or not so good approach of hosting RS components on Cluster nodes (also RS is not cluster aware). If they have SQL Enterprise, they might go for RS on each node on scaled-out mode (<strong>keep in mind that Cluster Nodes should not be configured with NLB – Not Supported</strong>), the approach should be:</p>  <p>Backup the Encryption Key from RS Configuration Wizard and that should be enough. You will follow normal SQL migration steps mentioned above and configure RS on new environment with existing databases. Restore the Key backup. That’s it!!</p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Server 2012 AlwaysOn</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/sql-server-2012-alwayson</link>
      <pubDate>Thu, 06 Dec 2012 21:34:15 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2012/12/06/sql-server-2012-alwayson/</guid>
      <description><![CDATA[Extracts from my last SQL AlwaysOn Delivery...
]]></description>
      <content:encoded><![CDATA[<p>Extracts from my last SQL AlwaysOn Delivery...</p>
<p><iframe src="https://www.youtube.com/embed/5xk5IZfGTJA" frameborder="0" width="420" height="315"></iframe></p>]]></content:encoded>
    </item>
    <item>
      <title>MOF v4.0 Foundation Course</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/mof-v4-0-foundation-course</link>
      <pubDate>Thu, 29 Nov 2012 23:20:00 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2012/11/29/mof-v4-0-foundation-course/</guid>
      <description><![CDATA[Here is one of the recent assignments on which I was working last...]]></description>
      <content:encoded><![CDATA[<p>Here is one of the recent assignments on which I was working last month.</p>
<p><a href="https://blogs.technet.com/b/ptsblog/archive/2012/10/02/microsoft-operations-framework-mof-4-0-fundamentals.aspx">https://blogs.technet.com/b/ptsblog/archive/2012/10/02/microsoft-operations-framework-mof-4-0-fundamentals.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Merge Replication–Web Synchronization with FTP Snapshot</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/merge-replicationweb-synchronization-with-ftp-snapshot</link>
      <pubDate>Sat, 06 Aug 2011 11:52:30 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2011/08/06/merge-replicationweb-synchronization-with-ftp-snapshot/</guid>
      <description><![CDATA[This week I spent a good number of hours to review and assist a Web Synchronization lab setup for a...]]></description>
      <content:encoded><![CDATA[<p>This week I spent a good number of hours to review and assist a Web Synchronization lab setup for a Customer. We tried to look for all possible resources but unfortunately there is almost no Step-by-Step guide available on Web Sync. Thus, thought of making it available on the Web for rest of the world.</p>  <p><u><strong>Pre-requisites for Web Sync (IIS)</strong></u></p>  <ul>   <li>Install the Internet Information Services 6.0 (IIS 6.0) management compatibility components (all). </li>    <li>Install ISAPI Extensions and CGI</li>    <li>FTP Server Components ( In case no separate FTP Server and Web Server need to be used as FTP Server as well)&#160; <ul>       <li>FTP Server </li>        <li>FTP Management Console (Windows Server 2008) </li>     </ul>   </li>    <li>Install Replication Components (In case SQL Server and Web Servers are two separate box) - <a title="https://msdn.microsoft.com/en-us/library/ms172376(SQL.100).aspx" href="https://msdn.microsoft.com/en-us/library/ms172376(SQL.100).aspx">https://msdn.microsoft.com/en-us/library/ms172376(SQL.100).aspx</a></li> </ul>  <p><u><strong>Steps for Web Sync Setup</strong></u></p>  <ul>   <li>Create a new FTP Site from IIS Management Console with appropriate Physical Path and expected Alias.</li>    <li>Enable Anonymous Read access </li>    <li>Give NTFS Write Permissions to Publisher SQL Server Service Account </li>    <li>Configure Merge Publication (Follow the GUI wizard)</li>    <li>Right Click on Publication and select <strong>Configure Web Synchronization </strong></li>    <li>Select Subscription Type </li>    <li>Select the Name of IIS Server</li>    <li>Create a new Virtual Directory      <ul>       <li>Give Alias and Physical Path </li>        <li>Replication ISAPI would be copied in the folder. </li>        <li>Select Basic Authentication and select Default Domain and Realm from Browse option </li>        <li>Select Users/Groups who need access to Virtual Directory (Give the Service Account details) </li>        <li>Give the UNC path for FTP physical folder </li>        <li>Finish the wizard. </li>     </ul>   </li> </ul>  <p><u><strong>Web Server Configuration Check</strong></u></p>  <ul>   <li>Check ISAPI and CGI restriction – The Replication ISAPI components should be allowed. </li>    <li>Application Pool should be set to <strong>Enable 32 bit Application</strong>. </li>    <li>Disable Anonymous Authentication and enable Basic Authentication in IIS. </li>    <li>Make sure that Local Computer/IIS_IUSRS have Read, Read &amp; Execute and List permissions in Virtual Directory created above. </li>    <li>Add IIS and SQL Publisher Computer Accounts to IIS_IUSRS group with same permissions as above. </li>    <li>SQL Service Account should have full permissions on this folder. </li>    <li>Create a Self Signed Certificate in IIS and bind your Web Sync virtual directory to use it. </li>    <li>Configure SSL Settings and Select Require SSL and Client Certificate to Ignore. </li>    <li>Access <font color="#0000ff">https://&lt;iisboxfqdn&gt;/&lt;websyncfolder&gt;/replisapi.dll</font> and that should give you certificate warning. On acceptance, it would prompt for User Account/Password. On proper authentication, page should show SQL Server WebSync ISAPI in message. </li>    <li>Install the Certificate in Trusted Root CA. </li>    <li>Export the Certificate and install in trusted Root CA of Subscriber box. </li> </ul>  <p><strong><u>Publisher Steps</u></strong></p>  <ul>   <li>Change the Publisher Snapshot Folder location to FTP sites Physical UNC Path (If not set yet) </li>    <li>Select Allow Subscribers to download Snapshot file using FTP and type in proper FTP server name, Path (ftp). </li>    <li>Select Allow Subscribers to synchronize by connecting to Web Server and type in Web Server URL with Virtual Directory (https) as above. </li> </ul>  <p><em>Note: Defining alternate Snapshot Folder would always create a subfolder named FTP inside the UNC path. You need to make sure that you mention this in your FTP snapshot location.</em></p>  <p><strong><u>Subscriber Steps</u></strong></p>  <ul>   <li>For Connected subscribers (LAN), create subscription using wizard and change the default snapshot location to FTP. </li>    <li>In the wizard make sure to select Use Web Sync and it would pick up Web Sync URL as mentioned in above step automatically. </li>    <li>Type in User Name/Password on basic authentication section. </li>    <li>For remote subscribers, you can create a script from subscriber created from above step and execute the same on remote subscribers </li> </ul>  <p>Please refer to below two articles for more details on security settings:</p>  <ul>   <li><a href="https://msdn.microsoft.com/en-us/library/ff714039.aspx">https://msdn.microsoft.com/en-us/library/ff714039.aspx</a></li>    <li><a href="https://blogs.technet.com/b/mdegre/archive/2010/06/16/configuring-web-synchronization-on-windows-2008-64bit-for-merge-replication-with-sql-ce-subscribers-on-iis7.aspx">https://blogs.technet.com/b/mdegre/archive/2010/06/16/configuring-web-synchronization-on-windows-2008-64bit-for-merge-replication-with-sql-ce-subscribers-on-iis7.aspx</a></li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>Web Application on Merge Publisher?</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/web-application-on-merge-publisher</link>
      <pubDate>Sat, 30 Jul 2011 15:10:05 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2011/07/30/web-application-on-merge-publisher/</guid>
      <description><![CDATA[Problem Statement:  Referring back to two my previous posts on Merge Replication with SQL Server,...]]></description>
      <content:encoded><![CDATA[<p><u>Problem Statement:</u></p>  <p>Referring back to two my previous posts on Merge Replication with SQL Server, there are few concerns as well with Merge Pub on few specific scenarios such as:</p>  <p>- Merge Pub always wins so writing directly on the publisher is not recommended for proper conflict resolution practices</p>  <p>- Data issue could fail entire merge topology in case data is written directly on the publisher than the subscribers</p>  <p>- Excessive locking could be an issue at the publisher end in case we have more subscribers</p>  <p>- Application performance which completely relying on publisher apart from merge partners could be impacted due to lower priority</p>  <p><u>Possible Solution: </u></p>  <p>In case you are facing any of the scenarios/issues, we recommend you to have a separate subscriber from where you can perform all the application specific read/write operations. Depending upon the server configuration, you might want to setup a separate subscriber hosted on separate box or it could be hosted on the publisher itself as the local subscriber with a new DB. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/4503.clip_image001_434F4779.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/4503.clip_5F00_image001_5F00_434F4779.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/1351.clip_image001_thumb_5F9C8999.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/1351.clip_5F00_image001_5F00_thumb_5F00_5F9C8999.png" width="305" height="246" /></a></p>  <p>But we need to make sure that we don’t have any resource bottleneck on the publisher box otherwise the architecture wouldn’t really help but create more problems. Primarily we suggest you to review CPU and IO usage during peak usage hours on the publisher box using perfmon counters. Please refer to <a href="https://technet.microsoft.com/en-us/library/cc722414.aspx">https://technet.microsoft.com/en-us/library/cc722414.aspx</a> for more information on how to collect the performance data using perfmon. Also, <a href="https://pal.codeplex.com/">https://pal.codeplex.com/</a> would help in assessing perfmon data.</p>]]></content:encoded>
    </item>
    <item>
      <title>Few more Merge Replication Scenarios &amp; Questions….</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/few-more-merge-replication-scenarios-questions</link>
      <pubDate>Sat, 30 Jul 2011 14:33:35 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2011/07/30/few-more-merge-replication-scenarios-questions/</guid>
      <description><![CDATA[Centralized DB with Merge Replication:   Problem Description - In this scenario Customer wanted to...]]></description>
      <content:encoded><![CDATA[<p><b>Centralized DB with Merge Replication</b>: </p>  <p><u>Problem Description</u> - In this scenario Customer wanted to setup a centralized DB with two location offices. They wanted to make sure that location specific data stays either in the particular location or on central server but it should not traverse across other locations. They had location identified in the table.</p>  <p>Customer had done some research on centralized replication topics on external sites but that made him more confused as he did not have any prior experience of replication topology.</p>  <p><u>Solution</u> - We recommended them to go for a publication on central DB with two publisher. Each publisher with filtered articles based on location data and bi-directional subscriptions. With this approach, only location specific (filter specific) data could traverse between location and central DB and on central DB contains all data.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/7776.clip_image002_5DF5497A.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/7776.clip_5F00_image002_5F00_5DF5497A.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/0116.clip_image002_thumb_7467E801.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/0116.clip_5F00_image002_5F00_thumb_5F00_7467E801.jpg" width="188" height="131" /></a></p>  <p><b>Error while setting up Merge:</b></p>  <p><u>Problem Description</u> – This is one of the common error when you try to setup merge pub on the same DB where you removed previous merge pub:</p>  <p><i>Msg 20092, Level 16, State 1, Procedure MSmerge_disabledml_314BFF6E71E546EBA2994DC09C6C0CCF, Line 8</i></p>  <p><i>Table '[dbo].[Table_1]' into which you are trying to insert, update, or delete data is currently being upgraded or initialized for merge replication. On the publisher data modifications are disallowed until the upgrade completes and snapshot has successfully run. On subscriber data modifications are disallowed until the upgrade completes or the initial snapshot has been successfully applied and it has synchronized with the publisher.</i></p>  <p><i>Msg 3609, Level 16, State 1, Line 1 The transaction ended in the trigger. The batch has been aborted.</i></p>  <p><u>Solution</u> - This is typically expected when few of the merge triggers remains in the database from the previous merge configuration (which was earlier removed). Look for and remove any triggers in sys.triggers where the name is like MSmerge%. Also verify Database Roles and Schemas for the same trigger name (MSmerge%) and if it does exist, remove the same as well.</p>  <p><b>Setting up Merge Sync to near Real-time:</b></p>  <p><u>Problem Description</u> – Customer wanted to setup Merge Sync near real time. By default, merge sync (on continuous setup) polling interval is set to 60 seconds.</p>  <p><u>Solution</u> – This can be achieved by following below steps:</p>  <p>1. Open Replication Monitor.</p>  <p>2. Select the Publication</p>  <p>3. Under All Subscription, your subscription would be listed for each subscriber.</p>  <p>4. Right Click on the subscriber one by one.</p>  <p>5. Select Agent Profile.</p>  <p>6. Click on New and Default Agent Profile.</p>  <p>7. Give a Name and scroll in Profile Parameters.</p>  <p>8. Change the Value for Polling Interval (should be in INT) as per your expected duration.</p>  <p>9. Click OK and select the new profile</p>  <p><i>Note: This could cause excessive lock in merge replication db. Also, this could cause high resource utilization as well.</i></p>  <p><i></i></p>  <p><b>Maintenance Recommendation of Merge System Tables:</b></p>  <p><u>Problem Description</u> – Customer wanted to know the best practices for Merge System Tables as they had high fragmentation on those tables.</p>  <p><u>Solution</u> - As part of maintenance for merge replication, occasionally check the growth of the system tables associated with merge replication: MSmerge_contents, MSmerge_genhistory, and MSmerge_tombstone. Periodically re-index these tables by running DBCC Transact-SQL commands. To re-index these system tables, execute the following commands on the publication database: </p>  <ul>   <li>DBCC DBREINDEX ('MSmerge_contents')</li>    <li>DBCC DBREINDEX ('MSmerge_genhistory')</li>    <li>DBCC DBREINDEX ('MSmerge_tombstone')</li> </ul>  <p>Additionally, one should minimize the size of the merge system tables (specifically MSmerge_history) by using sp_mergecleanupmetadata. Reference from below articles/posts:</p>  <p><a href="https://msdn.microsoft.com/en-us/library/aa256294(v=sql.80).aspx">https://msdn.microsoft.com/en-us/library/aa256294(v=sql.80).aspx</a></p>  <p><a href="https://msdn.microsoft.com/en-us/library/aa237440(v=sql.80).aspx">https://msdn.microsoft.com/en-us/library/aa237440(v=sql.80).aspx</a></p>  <p><a href="https://technet.microsoft.com/en-us/library/cc966386.aspx">https://technet.microsoft.com/en-us/library/cc966386.aspx</a></p>  <p><a href="https://blogs.msdn.com/b/repltalk/archive/2010/02/23/collection-of-merge-replication-best-practices.aspx">https://blogs.msdn.com/b/repltalk/archive/2010/02/23/collection-of-merge-replication-best-practices.aspx</a></p>  <p><b>Subscription Priority:</b></p>  <p><u>Problem Description</u> – Customer wanted to know the concept of Scubscription Priority as whatever the priority they define while setting up Subscriber, always the publisher was winning.</p>  <p><u>Solution</u> – Reference <a href="https://msdn.microsoft.com/en-us/library/ms152513.aspx">https://msdn.microsoft.com/en-us/library/ms152513.aspx</a> and <a href="https://msdn.microsoft.com/en-us/library/aa237187.aspx">https://msdn.microsoft.com/en-us/library/aa237187.aspx</a></p>  <ul>   <li>To manage the conflict resolution, Merge follows Publisher win when any changes happen within a minute (Polling Interval)</li>    <li>If the changes happen beyond the polling interval, last change would win.</li>    <li>Priority setting is applicable when we use multiple subscribers.</li>    <li>By design, Publisher would always have 100% priority (higher than the max subscription priority 99.99%)</li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>A Merge Replication Scenario..</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/a-merge-replication-scenario</link>
      <pubDate>Thu, 28 Jul 2011 16:53:50 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2011/07/28/a-merge-replication-scenario/</guid>
      <description><![CDATA[One of my recent engagements on Merge Replication, I faced a scenario as below diagram:    Scenario...]]></description>
      <content:encoded><![CDATA[<p>One of my recent engagements on Merge Replication, I faced a scenario as below diagram:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/7271.clip_image002_2B701382.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/7271.clip_5F00_image002_5F00_2B701382.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/3157.clip_image002_thumb_071B0933.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/3157.clip_5F00_image002_5F00_thumb_5F00_071B0933.png" width="378" height="241" /></a></p>  <p><b><u>Scenario Details:</u></b></p>  <ul>   <li>Single copy of database at the publisher end which is working as the Publisher DB</li>    <li>Database is the backend of Custom ERP application.</li>    <li>Database size is very small (4-5 GB)</li>    <li>They have written custom SP which can write in backend apart from the FE application.</li>    <li>Subscribers have Push subscription and running with SQL Express (On Demand /Custom Logic)</li>    <li>More than 100+ subscribers.</li>    <li>Users can write text using special characters such as ‘%&amp;/*’ etc. in the application.</li>    <li>Similarly the custom SP would process from remote files and write data in the application backend publisher db.</li> </ul>  <p><b><u>Issue Description:</u></b></p>  <p>When Publisher finds a special character in the replication articles, it fails. This causes entire environment failure. To fix this, they manually clean those special characters and they need to reinitialize the replication. They don’t want to have re-initialization and address the issue by some other way.</p>  <p><b><u>RCA Performed:</u></b></p>  <p>In the past, in most cases special characters were inserted either from FE application or through the custom SP based job which is actually processing some exported file and inserting data straight to database. But when a similar issue occurs at the subscriber level, only that subscriber fails and not the entire replication topology.</p>  <p><b><u></u></b></p>  <p><b><u></u></b></p>  <p><b><u></u></b></p>  <p><b><u></u></b></p>  <p><b><u></u></b></p>  <p><b><u></u></b></p>  <p><b><u>Solution Recommended:</u></b></p>  <p>Considering various facts such as Licensing Cost, TCO, and Administration overhead, we recommended the customer to setup a local subscription on the same server. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/7776.clip_image004_313A914E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/7776.clip_5F00_image004_5F00_313A914E.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/1732.clip_image004_thumb_66EFD6A8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/1732.clip_5F00_image004_5F00_thumb_5F00_66EFD6A8.png" width="394" height="317" /></a></p>  <p>In this architecture, we recommended:</p>  <ul>   <li>A Staging DB where there will not be any direct write operations.</li>    <li>ERP App and Custom SP based write operations would be happening to ERP Live DB.</li>    <li>This DB would be a bi-directional subscriber with Staging DB with separate Publisher.</li>    <li>This subscription would be running on regular frequency (automatic).</li>    <li>Another publisher which would address remote subscribers’ requirement such as one way replication for few articles.</li> </ul>  <p><strong><u>Benefits with this architecture:</u></strong></p>  <ul>   <li>Consistency would be managed at the subscriber level.</li>    <li>Subscription failure would not impact the rest of the replication topology.</li>    <li>There will not be any locking issue at ERP App tier due to isolated remote subscriber sync process.</li> </ul>  <p><strong><u>Challenges with this architecture: </u></strong></p>  <ul>   <li>Extra storage might be required depending upon DB size.</li>    <li>Separate maintenance jobs would be needed for staging DB as well.</li>    <li>Higher CPU/Memory usage might be a concern. </li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>SQL–Partition SPLIT takes forever to create new empty partition</title>
      <link>https://docs.microsoft.com/archive/blogs/bpaulblog/sqlpartition-split-takes-forever-to-create-new-empty-partition</link>
      <pubDate>Mon, 16 May 2011 12:22:41 GMT</pubDate>
      <dc:creator><![CDATA[ms-bpaul]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/bpaulblog/2011/05/16/sqlpartition-split-takes-forever-to-create-new-empty-partition/</guid>
      <description><![CDATA[&#160;  This is one of those recent crazy cases where I was working.  Issue Description  Customer...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>This is one of those recent crazy cases where I was working.</p>  <p><b><u>Issue Description</u></b></p>  <p>Customer had a table of 1.5 TB in size with multiple partition (yearly partitioning strategy). Even though Microsoft always recommends that the last partition should be empty, they could not follow the strategy and added data in the last partition and it was more than 100GB at the time of call. </p>  <p>When they further tried using SPLIT function to create a new empty Partition so that they can move the 2011 data to a new partition, it was taking lot of IO and it was completing after almost 20+ hours. They wanted to know what was actually happening in the Partition Split and how to reduce the long processing time.</p>  <p><strong><u>Research Outcome</u></strong></p>  <p>Well this was one of those requests where recommendations were not followed and when there is an issue, explanation are expected. I really did not have any other option except looking at some internals. Mainly I referred few articles written by:</p>  <p>Kimberly Tripp: <a href="https://msdn.microsoft.com/library/ms345146.aspx">https://msdn.microsoft.com/library/ms345146.aspx</a></p>  <p>Kalen Delaney: <a href="https://sqlblog.com/blogs/kalen_delaney/archive/2009/08/16/altering-a-partition-function.aspx">https://sqlblog.com/blogs/kalen_delaney/archive/2009/08/16/altering-a-partition-function.aspx</a></p>  <p>I even looked at all the documentations which could help but alas, there is not much which could be shared. So here all what I could find:</p>  <p>&#160;</p>  <ul>   <li>When you create Partition on one of your tables in SQL Server, primarily it keeps :</li>    <ul>     <li>Partition ID</li>      <li>Partition Number</li>   </ul>    <li>Partition SPLIT or Partition MERGE will not do anything with First or Last Partition but would change the Partition Number (Sequence Number) depending upon the activity. In simple words, SQL would create new Partition and move the pointers so that it becomes part of the table:</li> </ul>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/0741.image_70BBCF75.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/0741.image_5F00_70BBCF75.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/56/18/metablogapi/3806.image_thumb_14284E0E.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-56-18-metablogapi/3806.image_5F00_thumb_5F00_14284E0E.png" width="482" height="141" /></a></p>  <ul>   <li>This process seems to be simple when the last partition is empty and we are creating a new in range partition where data is not in the table. (Scenario of last partition empty) where what max is happening is update in Partition Sequence Number.</li>    <li>But when you have data in your last partition and you create new partition using partition SPLIT, it definitely follows the basic steps such as:</li>    <ul>     <li>Creating a new empty Partition. </li>      <li>Update all the sequences numbers</li>      <li>But at the end, the most important activity is, moving the data what was earlier sitting in the last partition due to no range definition (if that is the intent of defining the partition) but now has to move in new partition based on your new range. </li>   </ul>    <li>The above step is a time consuming process as physically we are moving the data pages from one location to another. And for sure, more the data, more the time it’s going to consume. </li> </ul>  <p><strong><u>Summary </u></strong></p>  <p>Overall to summarize, we commented on their approach. We mentioned that splitting the data partition is wrong and particularly with huge amount of data in the last partition, it is expected to give high IO usage and it would take longer time. We recommended them to go for Sliding Windows Approach with Partition Switch and follow archival strategy than keeping all the data in one table. Another alternate option what we suggested them to review is documented in <a href="https://download.microsoft.com/download/D/B/D/DBDE7972-1EB9-470A-BA18-58849DB3EB3B/PartTableAndIndexStrat.docx">Partitioning White Paper</a> (Page 51).</p>]]></content:encoded>
    </item>
  </channel>
</rss>