J'aurai une base de données SQL Server 2012 et une table avec 3 millions de lignes et peut-être 50 colonnes. Quel sera le moyen le plus rapide pour un processus .net en arrière-plan sans assistance (peut-être émet une commande SQL ou Powershell) de l'exporter vers un fichier texte, une ligne pour chaque ligne de données? Le processus .net doit savoir quand l'exportation a été terminée ou s'il y a eu une erreur. Le type de données sera tout int
ou nvarchar
.
Je suppose qu'un code C # pur utilisant ado.net pour exécuter une select *
commande et boucler sur le datareader et écrire dans un fichier pour chaque enregistrement sera lent et il n'y a aucun moyen de paralléliser cela.
Dans l'idéal, l'exportation se fera vers un dossier réseau partagé distant et non vers un dossier local sur la machine SQL Server. SQL Server sera un cluster HA. SSIS est-il mieux adapté à cela, aucune transformation de données requise?
Le processus .Net s'exécuterait sur la machine A, SQL Server sur la machine B et la destination de fichier ultime est un partage réseau. Une option est que SQL Server écrit le fichier directement sur le partage réseau. L'autre option est que SQL Server écrit sur la machine A, puis lorsque le fichier est écrit, le processus .net le copie sur le partage réseau. Je n'ai pas de SLA formel mais j'attends 30 minutes - 1 heure pour l'écriture du fichier.
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
- d'où l'application .NET sera-t-elle exécutée? Dans le pire des cas, cela pourrait signifier que les données doivent passer par 2 sauts de réseau, ce qui sera probablement le plus gros goulot d'étranglement. De plus, le nombre de lignes est quelque peu hors de propos - quelle est la taille totale approximative des données? Avez-vous un SLA de performance que vous devez rencontrer pour ce processus?