เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ Powershell เจคเฉ‹เจ‚ MS SQL เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ

เจ‡เจน เจฒเฉ‡เจ– เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจตเจฟเจนเจพเจฐเจ• เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉ‡เจฐเฉ€ เจฆเฉเจ–เจฆเจพเจˆ เจ•เจนเจพเจฃเฉ€ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆ

เจฒเจˆ เจคเจฟเจ†เจฐ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ เจœเจผเฉ€เจฐเฉ‹ เจŸเฉฑเจš PROD RDS (MS SQL) เจฒเจˆ, เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจธเจพเจกเฉ‡ เจธเจพเจฐเฉ‡ เจ•เฉฐเจจ เจ—เฉ‚เฉฐเจœ เจฐเจนเฉ‡ เจธเจจ, เจฎเฉˆเจ‚ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€ (POC - เจชเจฐเฉ‚เจซ เจ†เจซเจผ เจ•เฉฐเจธเฉˆเจชเจŸ) เจ•เฉ€เจคเฉ€: เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸเฅค เจชเฉ‡เจธเจผเจ•เจพเจฐเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจœเจฆเฉ‹เจ‚ เจคเฉ‚เจซเจพเจจเฉ€, เจฒเฉฐเจฎเฉ€ เจคเจพเฉœเฉ€เจ†เจ‚ เจฆเฉ€ เจฎเฉŒเจค เจนเฉ‹ เจ—เจˆ, เจจเจฟเจฐเฉฐเจคเจฐ เจคเจพเฉœเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจ—เจˆ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจนเจพ - เจ‡เจน เจธเจญ เจšเฉฐเจ—เจพ เจนเฉˆ, เจชเจฐ เจธเจฟเจฐเจซ เจตเจฟเจšเจพเจฐเจงเจพเจฐเจ• เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡, เจธเจพเจกเฉ‡ เจธเจพเจฐเฉ‡ เจœเฉ‡เจจเจ•เจฟเจจเจœเจผ เจ—เจผเฉเจฒเจพเจฎ เจฒเฉ€เจจเจ•เจธ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ!

เจ•เฉ€ เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ? เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจคเฉ‹เจ‚ เจ…เจœเจฟเจนเจพ เจจเจฟเฉฑเจ˜เจพ, เจฒเฉˆเจ‚เจช เจกเฉ€เจฌเฉ€เจ เจฒเจ“ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฒเฉ€เจจเจ•เจธ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ เจฆเฉ€ เจฌเจนเฉเจค เจ—เจฐเจฎเฉ€ เจตเจฟเฉฑเจš เจšเจฟเจชเจ•เจพเจ“? เจ•เฉ€ เจ‡เจน เจฌเฉ‡เจฐเจนเจฟเจฎ เจจเจนเฉ€เจ‚ เจนเฉˆ?

เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ Powershell เจคเฉ‹เจ‚ MS SQL เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ
เจฎเฉˆเจจเฉ‚เฉฐ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ‡ เจ‡เจธ เจ…เจœเฉ€เจฌ เจธเฉเจฎเฉ‡เจฒ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจฒเฉ€เจจ เจ•เจฐเจจเจพ เจชเจฟเจ†. เจฌเฉ‡เจธเจผเฉฑเจ•, เจฎเฉ‡เจฐเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ 30+ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพเฅค เจฎเฉ‡เจฐเฉ‡ เจนเฉˆเจฐเจพเจจเฉ€ เจฒเจˆ, เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจ•เฉฐเจฎเจ•เจพเจœเฉ€ เจฆเจฟเจจ เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจ เฉ€เจ• เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจฐเจฟเจนเจพ. เจฎเฉˆเจ‚ เจ—เจฐเจฎ เจ–เจฟเจ†เจฒเฉ€ เจตเจฟเฉฑเจš เจฒเจฟเจ– เจฐเจฟเจนเจพ เจนเจพเจ‚. เจ‡เจธ เจฒเจˆ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจคเฉ‹เจ‚ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจชเจพเจตเจฐเจธเจผเฉˆเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹?

sqlcmd เจฌเจจเจพเจฎ เจ‡เจจเจตเฉ‹เจ•-SqlCmd

เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฎเฉเฉฑเจ– เจ…เฉฐเจคเจฐ เจฆเฉ€ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจฃ เจฆเจฟเจ“. เจšเฉฐเจ—เฉ€ เจชเฉเจฐเจพเจฃเฉ€ เจธเจนเฉ‚เจฒเจค sqlcmd เจ‡เจน เจฒเจ—เจญเจ— เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ‡ เจจเจพเจฒ, เจฒเฉ€เจจเจ•เจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจตเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ -Q เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเจพเจธ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจจเจชเฉเจŸ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ -i เจตเจœเฉ‹เจ‚ เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ -o เจตเจœเฉ‹เจ‚เฅค เจชเจฐ เจซเจพเจˆเจฒ เจฆเฉ‡ เจจเจพเจฎ, เจฌเฉ‡เจธเจผเจ•, เจ•เฉ‡เจธ-เจธเฉฐเจตเฉ‡เจฆเจจเจธเจผเฉ€เจฒ เจฌเจฃเจพเจ เจ—เจ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ -i เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ…เฉฐเจค เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‹:

GO
EXIT

เจœเฉ‡เจ•เจฐ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ EXIT เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ sqlcmd เจ‡เฉฐเจชเฉเฉฑเจŸ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจตเจงเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจชเจนเจฟเจฒเจพเจ‚ เจจเจฟเจ•เจพเจธ เจจเจนเฉ€เจ‚ เจœเจพเจตเฉ‡เจ—เจพ GO, เจซเจฟเจฐ เจ†เจ–เจฐเฉ€ เจ•เจฎเจพเจ‚เจก เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เฉ€เฅค เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ, เจšเฉ‹เจฃ, เจธเฉเจจเฉ‡เจนเฉ‡, เจชเฉเจฐเจฟเฉฐเจŸ, เจ†เจฆเจฟ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ.

Invoke-SqlCmd เจ‡เฉฑเจ• เจกเจพเจŸเจพเจธเฉˆเฉฑเจŸ, เจกเฉ‡เจŸเจพ เจŸเฉ‡เจฌเจฒ เจœเจพเจ‚ เจกเฉ‡เจŸเจพ เจฐเฉ‹เจต เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจคเฉ€เจœเจพ เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจšเฉ‹เจฃ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ sqlcmd, เจ‡เจธเจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เฉเจ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจฒเจ—เจญเจ— เจ…เจธเฉฐเจญเจต เจนเฉˆ: เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ Invoke-SqlCmd. เจชเจฐ เจ‡เจธ เจŸเฉ€เจฎ เจฆเฉ‡ เจ†เจชเจฃเฉ‡ เจšเฉเจŸเจ•เจฒเฉ‡ เจตเฉ€ เจนเจจ:

  • เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ‰เจธ เจฆเฉเจ†เจฐเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ -เจ‡เจจเจชเฉเจŸ เจซเจพเจˆเจฒ, เจซเจฟเจฐ เจจเจฟเจ•เจพเจธ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚, เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน เจ‡เฉฑเจ• เจธเฉฐเจŸเฉˆเจ•เจธ เจ—เจฒเจคเฉ€ เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ
  • -เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจซเจพเจˆเจฒ เจจเจนเฉ€เจ‚, เจ•เจฎเจพเจ‚เจก เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ€ เจนเฉˆ
  • เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹ เจธเฉฐเจŸเฉˆเจ•เจธ เจนเจจ: -เจธเจฐเจตเจฐเจ‡เฉฐเจธเจŸเฉˆเจ‚เจธ -เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ -เจชเจพเจธเจตเจฐเจก -เจกเจพเจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจฆเฉเจ†เจฐเจพ -เจ•เจจเฉˆเจ•เจธเจผเจจเจธเจŸเฉเจฐเจฟเฉฐเจ—. เจ…เจœเฉ€เจฌ เจคเฉŒเจฐ 'เจคเฉ‡, เจชเจนเจฟเจฒเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš 1433 เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจชเฉ‹เจฐเจŸ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉˆเฅค
  • เจŸเฉˆเจ•เจธเจŸ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ, เจชเฉเจฐเจฟเฉฐเจŸ เจŸเจพเจˆเจช เจ•เจฐเฉ‹, เจœเฉ‹ เจ•เจฟ "เจซเฉœเจฟเจ†" เจนเฉˆ sqlcmdเจฒเจˆ Invoke-SqlCmd เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ
  • เจ…เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ: เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจ‡เจน cmdlet เจจเจนเฉ€เจ‚ เจนเฉˆ!

เจ…เจคเฉ‡ เจ‡เจน เจฎเฉเฉฑเจ– เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ. เจธเจฟเจฐเจซ เจฎเจพเจฐเจš เจตเจฟเฉฑเจš เจ‡เจธ cmdlet เจ—เฉˆเจฐ-เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎเจพเจ‚ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจนเฉ‹ เจ—เจฟเจ†, เจ…เจคเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ…เฉฑเจ—เฉ‡ เจตเจง เจธเจ•เจฆเฉ‡ เจนเจพเจ‚!

เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฌเจฆเจฒ

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)

เจ‡เจธ เจฒเจˆ เจ‡เจน เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ. * เจจเจฟเจ•เจธ เจตเจฟเฉฑเจš เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฌเจฆเจฒ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡. เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ -v เจ…เจฃเจกเจฟเฉฑเจ  เจ•เฉ€เจคเจพ. เจฏเฉ‚ Invoke-SqlCmd เจ…เจฃเจกเจฟเฉฑเจ  เจ•เฉ€เจคเจพ - เจตเฉ‡เจฐเฉ€เจเจฌเจฒ. เจนเจพเจฒเจพเจ‚เจ•เจฟ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจœเฉ‹ เจ•เจฟ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจจเฉ‚เฉฐ เจ…เจฃเจกเจฟเฉฑเจ  เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐเจฟเจตเจฐเจคเจจ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ - เจคเฉเจธเฉ€เจ‚ เจธเจผเฉˆเฉฑเจฒ เจคเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฎเฉˆเจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจจเจพเจฐเจพเจœเจผ เจธเฉ€ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ 'เจคเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจจเจฟเจฐเจญเจฐ เจจเจพ เจนเฉ‹เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจฌเฉ‡เจฐเจนเจฟเจฎเฉ€ เจจเจพเจฒ เจ…เจคเฉ‡ เจฎเฉเฉฑเจขเจฒเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ 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"

เจ‡เจน, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจธเจฎเจเจฆเฉ‡ เจนเฉ‹, เจฏเฉ‚เจจเจฟเจ•เจธ เจธเฉฐเจธเจ•เจฐเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจนเฉˆเฅค

เจซเจผเจพเจˆเจฒเจพเจ‚ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพ เจฐเจนเฉ€เจ†เจ‚ เจนเจจ

เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš, เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ†เจกเจฟเจŸ เจธเฉ€: เจ…เจธเฉ€เจ‚ 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() 
  }  

เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉเจฐเจฎ n (เจชเจ›เจพเจฃ) เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจ•เฉ‡, ID เจฆเฉเจ†เจฐเจพ เจšเฉเจฃเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจœเจพเจตเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจน เจธเจญ เจœเฉ‡เจจเจ•เจฟเจจเจœเจผ เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ—เฉฑเจฒเจฌเจพเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹