リンクサーバーMSSQL。パフォーマンスを30倍最適化

初期データ





  1. 相互に直接アクセスできる2つのSQLServer。そのうちの1つはリンクサーバーで構成されています。





  2. 次の形式のSQLクエリ:





insert into LocalDatabaseName.dbo.TableName (column1, column2, ..., columnN)
select column1, column2, ..., columnN
from LinkedServerName.RemoteDatabaseName.dbo.TableName
      
      



タスク:あるサーバーから別のサーバーにできるだけ早くレコードをコピーする





同様のクエリが40k(40,000)レコードで1分以上実行されているという事実に直面しました。このようなクエリの数またはレコードの数が増えると、パフォーマンスが大幅に低下し、SQLツールを使用してクエリを最適化する方法がなくなります。ImportExportDataSqlアプリを使用すると、リンクサーバーを使用せずにこのクエリを2秒に高速化できました。





ImportExportDataSqlアプリケーションを自分で作成し、数年間絶えず改良しました。アプリケーションを作成するための主な要件は、移植性、サードパーティライブラリ(NET Framework 3.5を除く)をインストールせずにすべてのバージョンのWindowsで動作すること、シンプルなインターフェイス、および高性能です。





ImportExportDataSql-「bcp」の代わりとなるユニバーサルデータコンバーター

ImportExportDataSqlメインフォーム
ImportExportDataSqlメインフォーム

( 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

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





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





「bcp」の欠点について説明している「C#でのクイックリードCSV」の記事





VKコミュニティ、作者とチャットしたい人のために








All Articles