แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ MS SQL-แƒ—แƒแƒœ Powershell-แƒ˜แƒ“แƒแƒœ Linux-แƒ–แƒ”

แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒฌแƒ›แƒ˜แƒœแƒ“แƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ“แƒ แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ แƒฉแƒ”แƒ›แƒก แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก

แƒ”แƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ Zero Touch PROD RDS-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (MS SQL), แƒ แƒแƒ›แƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘แƒแƒช แƒ›แƒ—แƒ”แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒงแƒฃแƒ แƒ˜ แƒ–แƒฃแƒ–แƒฃแƒœแƒ”แƒ‘แƒ“แƒ, แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ” แƒžแƒ แƒ”แƒ–แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ (POC - Proof Of Concept) แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘: powershell แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜. แƒžแƒ แƒ”แƒ–แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒชแƒ แƒ›แƒจแƒคแƒแƒ—แƒ•แƒแƒ แƒ”, แƒ’แƒแƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒšแƒแƒ“แƒ˜แƒกแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒฉแƒแƒฅแƒ แƒ, แƒ’แƒแƒœแƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ”แƒš แƒแƒžแƒšแƒแƒ“แƒ˜แƒกแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“ แƒ’แƒแƒ“แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ, แƒ›แƒ˜แƒ—แƒฎแƒ แƒ”แƒก - แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ“แƒ”แƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒฏแƒ”แƒœแƒ™แƒ˜แƒœแƒกแƒ˜แƒก แƒ›แƒแƒœแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Linux-แƒ–แƒ”!

แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ? แƒแƒ˜แƒฆแƒ”แƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒ—แƒ‘แƒ˜แƒšแƒ˜, แƒœแƒแƒ—แƒฃแƒ แƒ DBA Windows-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ แƒ“แƒ แƒ’แƒแƒแƒฉแƒ”แƒ แƒ”แƒ— แƒ˜แƒก Powershell-แƒ˜แƒก แƒกแƒ˜แƒชแƒฎแƒ”แƒจแƒ˜ Linux-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ? แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒกแƒขแƒ˜แƒ™แƒ˜?

แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ MS SQL-แƒ—แƒแƒœ Powershell-แƒ˜แƒ“แƒแƒœ Linux-แƒ–แƒ”
แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒแƒ› แƒฃแƒชแƒœแƒแƒฃแƒ  แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒฉแƒแƒซแƒ˜แƒ แƒ•แƒ. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฉแƒ”แƒ›แƒ›แƒ 30+ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ›แƒ แƒจแƒ”แƒฌแƒงแƒ•แƒ˜แƒขแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ. แƒฉแƒ”แƒ›แƒ“แƒ แƒ’แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒแƒ“, แƒ”แƒ แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒฆแƒ”แƒจแƒ˜ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ” แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ. แƒ•แƒฌแƒ”แƒ  แƒชแƒฎแƒ”แƒš แƒ™แƒ•แƒแƒšแƒ–แƒ”. แƒ›แƒแƒจ, แƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒฎแƒ•แƒ“แƒ”แƒ— Powershell แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก Windows-แƒ“แƒแƒœ Linux-แƒ–แƒ” แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒกแƒแƒก?

sqlcmd vs Invoke-SqlCmd

แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒ”แƒชแƒ˜แƒ— แƒจแƒ”แƒ’แƒแƒฎแƒกแƒ”แƒœแƒแƒ— แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ. แƒ™แƒแƒ แƒ’แƒ˜ แƒซแƒ•แƒ”แƒšแƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ sqlcmd แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Linux-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒชแƒ”แƒ›แƒ— แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก -Q-แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก -i แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก -o. แƒ›แƒแƒ’แƒ แƒแƒ› แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฎแƒ“แƒ”แƒ‘แƒ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒก แƒ›แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ˜แƒแƒ แƒ”แƒ“. แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— -i, แƒ›แƒแƒจแƒ˜แƒœ แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ‘แƒแƒšแƒแƒก:

GO
EXIT

แƒ—แƒฃ แƒ‘แƒแƒšแƒแƒก แƒแƒ  แƒแƒ แƒ˜แƒก EXIT, แƒ›แƒแƒจแƒ˜แƒœ sqlcmd แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒก, แƒ“แƒ แƒ—แƒฃ แƒแƒ“แƒ แƒ” แƒ’แƒแƒกแƒ•แƒšแƒ แƒแƒ แƒ GO, แƒ›แƒแƒจแƒ˜แƒœ แƒ‘แƒแƒšแƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก, แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒก, แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ‘แƒ”แƒญแƒ“แƒ•แƒแƒก แƒ“แƒ แƒ.แƒจ.

Invoke-SqlCmd แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒก แƒ แƒแƒ’แƒแƒ แƒช DataSet, DataTables แƒแƒœ DataRows. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ—แƒฃ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒจแƒ”แƒ แƒฉแƒ”แƒ•แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒก แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— sqlcmd, แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒขแƒแƒœแƒ: แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก Invoke-SqlCmd. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒ’แƒฃแƒœแƒ“แƒก แƒแƒกแƒ”แƒ•แƒ” แƒแƒฅแƒ•แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒฎแƒฃแƒ›แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜:

  • แƒ—แƒฃ แƒคแƒแƒ˜แƒšแƒก แƒ’แƒแƒ“แƒแƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒ›แƒแƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— -InputFile, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒกแƒ•แƒšแƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ, แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒ˜แƒก แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒฃแƒ  แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก
  • - OutputFile แƒแƒ แƒ, แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜
  • แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜ แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜แƒ: -ServerInstance -แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ -แƒžแƒแƒ แƒแƒšแƒ˜ -แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ“แƒ แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— -ConnectionString. แƒฃแƒชแƒœแƒแƒฃแƒ แƒแƒ“ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ, แƒ แƒแƒ› แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ 1433-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ.
  • แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜, แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— PRINT, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ "แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ" sqlcmdแƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Invoke-SqlCmd แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ
  • แƒ“แƒ แƒ แƒแƒช แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ: แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“ แƒ—แƒฅแƒ•แƒ”แƒœแƒก Linux-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ”แƒก cmdlet!

แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ. แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ แƒขแƒจแƒ˜ แƒ”แƒก cmdlet แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒแƒ แƒ Windows แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒ“แƒ แƒ‘แƒแƒšแƒแƒก แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒกแƒ•แƒšแƒ!

แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ

sqlcmd แƒแƒฅแƒ•แƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ -v-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ แƒแƒกแƒ”:

# $conn ัะพะดะตั€ะถะธั‚ ะฝะฐั‡ะฐะปะพ ะบะพะผะฐะฝะดั‹ sqlcmd
$cmd = $conn + " -i D:appsSlaveJobsKillSpid.sql -o killspid.res 
  -v spid =`"" + $spid + "`" -v age =`"" + $age + "`""
Invoke-Expression $cmd

SQL แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก:

set @spid=$(spid)
set @age=$(age)

แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒฅ แƒแƒ แƒ˜แƒก. * nix-แƒจแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก... แฒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ -v แƒฃแƒ’แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒงแƒ. แƒฃ Invoke-SqlCmd แƒฃแƒ’แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒงแƒ -แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ—แƒแƒ•แƒแƒ“ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒก, แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜ Shell-แƒ“แƒแƒœ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒ” แƒ’แƒแƒœแƒแƒฌแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒงแƒแƒ•แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”, แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒ•แƒงแƒแƒคแƒ˜แƒšแƒ˜แƒงแƒแƒ•แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ–แƒ” แƒ“แƒ แƒ•แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ” แƒฃแƒฎแƒ”แƒจแƒแƒ“ แƒ“แƒ แƒžแƒ แƒ˜แƒ›แƒ˜แƒขแƒ˜แƒฃแƒšแƒแƒ“, แƒ แƒแƒ“แƒ’แƒแƒœ SQL แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ™แƒšแƒ”แƒ:

# prepend the parameters  
"declare @age int, @spid int" | Add-Content "q.sql"
"set @spid=" + $spid | Add-Content "q.sql"
"set @age=" + $age | Add-Content "q.sql"

foreach ($line in Get-Content "Sqlserver/Automation/KillSpid.sql") { 
  $line | Add-Content "q.sql" 
  }
$cmd = "/opt/mssql-tools/bin/" + $conn + " -i q.sql -o res.log"

แƒ”แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒ”แƒกแƒ›แƒ˜แƒ—, แƒแƒ แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜ แƒฃแƒ™แƒ•แƒ” Unix-แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ“แƒแƒœ.

แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ

Windows-แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜, แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒก แƒ—แƒแƒœ แƒแƒฎแƒšแƒ“แƒ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜: แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜แƒ— sqlcmd, แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒจแƒ”แƒฃแƒ แƒแƒชแƒฎแƒงแƒแƒคแƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒ›แƒ˜แƒ•แƒแƒ›แƒแƒ’แƒ แƒ”แƒ— แƒ”แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒคแƒ˜แƒ แƒคแƒ˜แƒขแƒแƒ–แƒ”. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, SQL แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒฏแƒ”แƒœแƒ™แƒ˜แƒœแƒกแƒ˜, แƒแƒกแƒ” แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ:

CREATE procedure AuditUpload
  @id int, @filename varchar(256)
as
  set nocount on
  declare @sql varchar(max)

  CREATE TABLE #multi (filer NVARCHAR(MAX))
  set @sql='BULK INSERT #multi FROM '''+@filename
    +''' WITH (ROWTERMINATOR = '' '',CODEPAGE = ''ACP'')'
  exec (@sql)
  select @sql=filer from #multi
  update JenkinsAudit set multiliner=@sql where ID=@id
  return

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ•แƒงแƒšแƒแƒžแƒแƒ•แƒ— BCP แƒคแƒแƒ˜แƒšแƒก แƒ“แƒ แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒ›แƒแƒก แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก nvarchar(max) แƒ•แƒ”แƒšแƒจแƒ˜. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ”แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ“แƒแƒ˜แƒจแƒแƒšแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ SQL แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ›แƒ” แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ” RDS, แƒ“แƒ BULK INSERT แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก UNC-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒคแƒแƒ˜แƒšแƒ–แƒ” แƒ”แƒฅแƒกแƒ™แƒšแƒฃแƒ–แƒ˜แƒฃแƒ แƒ˜ แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ“แƒ RDS-แƒ˜แƒ— แƒ”แƒก แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ’แƒแƒœแƒฌแƒ˜แƒ แƒฃแƒšแƒ˜แƒ. แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœแƒ•แƒ”. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ›แƒ” แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜, แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒฎแƒ แƒแƒฃแƒ“แƒ˜แƒขแƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜:

CREATE TABLE AuditOut (
  ID int NULL,
  TextLine nvarchar(max) NULL,
  n int IDENTITY(1,1) PRIMARY KEY
  )

แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒแƒ› แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒแƒกแƒ”:

function WriteAudit([string]$Filename, [string]$ConnStr, 
     [string]$Tabname, [string]$Jobname)
{
  # get $lastid of the last execution  -- ะฟั€ะพัะบะธะฟะฐะฝะพ ะดะปั ัั‚ะฐั‚ัŒะธ
	
  #create grid and populate it with data from file
  $audit =  Get-Content $Filename
  $DT = new-object Data.DataTable   

  $COL1 =  new-object Data.DataColumn; 
  $COL1.ColumnName = "ID"; 
  $COL1.DataType =  [System.Type]::GetType("System.Int32") 

  $COL2 =  new-object Data.DataColumn; 
  $COL2.ColumnName = "TextLine"; 
  $COL2.DataType =  [System.Type]::GetType("System.String") 
  
  $DT.Columns.Add($COL1) 
  $DT.Columns.Add($COL2) 
  foreach ($line in $audit) 
    { 
    $DR = $dt.NewRow()   
    $DR.Item("ID") = $lastid
    $DR.Item("TextLine") = $line
    $DT.Rows.Add($DR)   
    } 

  # write it to table
  $conn=new-object System.Data.SqlClient.SQLConnection 
  $conn.ConnectionString = $ConnStr
  $conn.Open() 
  $bulkCopy = new-object ("Data.SqlClient.SqlBulkCopy") $ConnStr
  $bulkCopy.DestinationTableName = $Tabname 
  $bulkCopy.BatchSize = 50000
  $bulkCopy.BulkCopyTimeout = 0
  $bulkCopy.WriteToServer($DT) 
  $conn.Close() 
  }  

แƒ™แƒแƒœแƒขแƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ แƒฉแƒ”แƒ•แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— ID-แƒ˜แƒ—, แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒ— แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ— n (แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒแƒ‘แƒ).

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฏแƒ”แƒœแƒ™แƒ˜แƒœแƒกแƒ—แƒแƒœ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ