Il existe plusieurs options. Voici les principaux qui me viennent à l'esprit.
SSIS - SQL Server Integration Services: il s'agit de l'outil SQL Server ETL et vous pouvez déplacer des données de pratiquement n'importe quelle source vers à peu près n'importe quelle destination et cela peut être assez rapide.
BCP - Programme de copie en bloc: il s'agit d'un outil de ligne de commande fourni avec SQL Server. Il est très bon pour déplacer des fichiers texte dans SQL Server ou vous pouvez exporter dans un format natif à partir d'un SQL Server et importer en utilisant ce même format dans un autre SQL Server. BCP est également très rapide mais un peu plus limité que SSIS.
INSERT INTO tablename SELECT fieldlist FROM othertable : Cela suppose que vous vous déplacez d'une table SQL à une autre sur le même serveur. C'est le plus rapide, mais à 500 000 lignes, vous envisagez une transaction assez importante ou devez la casser comme vous l'avez dit.
OPENROWSET : Il s'agit d'une fonction SQL Server qui vous permettra d'extraire des données dans une table de différents formats. C'est aussi censé être assez rapide mais je n'y ai pas beaucoup travaillé.
Remarque générale: votre clé primaire est mbr_id. Si c'est quelque chose qui est stocké dans vos données source (par opposition à une colonne d'identité), votre insert ira BEAUCOUP plus rapidement si les données source sont dans l'ordre mbr_id.