I've just set up a publication, and I'm attempting to get the snapshot to apply faster. So far the Distribution Agent is respecting the MaxBCPThreads settings, but the Snapshot agent is not. I'm expecting it to split the files so the threads on the distribution agent would go and grab the data. But it doesn't appear to be able to do that any time I snapshot.
Some possible solutions that I've seen online where to update the agent profile (I originally just edited the agent step with the flag, and that worked for the dist agent but not for snapshot).
I tried updating the agent profiles and that hasn't made any difference. I also found people saying that you should have sync_method set to native so I checked my script and I had already created the publication with native mode specified.
I'm wondering if I'm missing a specific setting that MaxBCPThreads needs in order to split all the bcp files into different files each.
Edit: So I believe I may have found my issue. It looks like you have to have a clustered index with a distinct set of ranges to get SQL server to split the files into partitions. But right now my index seems to have 0's for all ranges.
Source: https://troubleshootingsql.com/2013/09/23/maxbcpthreads-not-causing-parallel-export/
Edit 2: After additional testing, I've found that this seems to only work on replicated tables. If you were to replicate based on views then it seems that you only get the 1 bcp file instead of the partitioned stuff you'd get from normal tables.
The question now is: Why doesn't SQL replication partition bcp files for Indexed Views like it does with normal tables?