Données initiales :
Deux serveurs SQL, qui sont en accès direct l'un à l'autre, dont l'un est configuré avec Linked Server.
Requête SQL de la forme :
insert into LocalDatabaseName.dbo.TableName (column1, column2, ..., columnN)
select column1, column2, ..., columnN
from LinkedServerName.RemoteDatabaseName.dbo.TableName
Tâche : copier les enregistrements d'un serveur à un autre le plus rapidement possible
Confronté au fait qu'une requête similaire est exécutée sur 40 000 (40 000) enregistrements pendant plus d'une minute. Avec une augmentation du nombre de telles requêtes ou du nombre d'enregistrements, les performances chutent considérablement et il n'y a aucun moyen d'optimiser la requête à l'aide des outils SQL. En utilisant l'application ImportExportDataSql, j'ai pu accélérer cette requête à 2 secondes sans utiliser le serveur lié.
J'ai créé l'application ImportExportDataSql pour moi-même et l'ai constamment affinée pendant plusieurs années. Les principales exigences pour créer une application sont la portabilité, le fonctionnement sous toutes les versions de Windows sans installer de bibliothèques tierces (sauf pour NET Framework 3.5), une interface simple et des performances élevées.
ImportExportDataSql - convertisseur de données universel, alternative à "bcp"

( CSV Excel) ( CSV). bcp, . "bcp", , .
ImportExportDataSql , . :
ImportExportDataSql :
ImportExportDataSql.exe -ConnectionName=" " -TaskName=" 1" -TaskName=" 2" [-Log="C:\FolderName\LogFileName.log"]
:
-ConnectionName - , " " " "

-TaskName -
-Log - . . -, Logs\UserName\ImportExportDataSql.log
ImportExportDataSql
-
( bcp) - bcp ( bat )
- varbinary
SQL - SELECT SQL
SQL ( INSERT)
SQL ( UPDATE)
SQL
Excel SQL
CSV
CSV SQL
CSV
SQL - SQL
- SELECT
, SQL , . (, ).

( ) Linked Server, 1 2 . C# System.Data.SqlClient: SqlConnection, SqlDataReader, SqlCommand SqlBulkCopy.
OutOfMemoryException, (). , . , :
SQL - ,
:
- , " ", . (.) " " , .
- . , ( , )
- , . , 100 , " " = 10, 10 .
-
" " , . , , , (insert into ... select ...), , tempdb ( " " ).
ImportExportDataSql
ImportExportDataSql . .
, CSV Excel.
CSV ( 1) , CSV. CSV, .
SQL , , "Messages" SQL Server Management Studio.
" SQL" (jobs), , .
C# SqlBulkCopy , Linked Server.
ImportExportDataSql
Article "Quick Read CSV in C#" qui traite des lacunes de "bcp"
Communauté VK , pour ceux qui veulent discuter avec l'auteur