Serveur lié MSSQL. Performances optimisées 30 fois

Données initiales :





  1. Deux serveurs SQL, qui sont en accès direct l'un à l'autre, dont l'un est configuré avec Linked Server.





  2. 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"

Formulaire principal ImportExportDataSql
Formulaire principal ImportExportDataSql

( CSV Excel) ( CSV). bcp, . "bcp", , .





ImportExportDataSql , . :





ImportExportDataSql :
ImportExportDataSql.exe -ConnectionName="   " -TaskName="  1" -TaskName="  2" [-Log="C:\FolderName\LogFileName.log"]
      
      



:





-ConnectionName - , " " " "





Enregistrer le paramètre de connexion à la base de données

-TaskName -





-Log - . . -, Logs\UserName\ImportExportDataSql.log





ImportExportDataSql

  1. -





  2. ( bcp) - bcp ( bat )





  3. - varbinary





  4. SQL - SELECT SQL





  5. SQL ( INSERT)





  6. SQL ( UPDATE)





  7. SQL





  8. Excel SQL





  9. CSV





  10. CSV SQL





  11. CSV





  12. SQL - SQL





  13. - SELECT





, SQL , . (, ).





Enregistrer de DB à DB

( ) Linked Server, 1 2 . C# System.Data.SqlClient: SqlConnection, SqlDataReader, SqlCommand SqlBulkCopy.





OutOfMemoryException, (). , . , :





  1. SQL - ,





  2. :





    - , " ", . (.) " " , .





    - . , ( , )





    - , . , 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





ImportExportDataSql





Article "Quick Read CSV in C#" qui traite des lacunes de "bcp"





Communauté VK , pour ceux qui veulent discuter avec l'auteur








All Articles