Linux-เตฝ Powershell-เตฝ เดจเดฟเดจเตเดจเต MS SQL-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดˆ เดฒเต‡เด–เดจเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดตเตเด‚ เดŽเดจเตเดฑเต† เดธเด™เตเด•เดŸเด•เดฐเดฎเดพเดฏ เด•เดฅเดฏเตเด•เตเด•เต เดธเดฎเตผเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฃเต

เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเด•เตเด•เตเดจเตเดจเต เดธเต€เดฑเต‹ เดŸเดšเตเดšเต PROD RDS (MS SQL) เดจเต เดตเต‡เดฃเตเดŸเดฟ, เดžเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เด•เดพเดคเตเด•เดณเตเด‚ เดฎเตเดดเด™เตเด™เตเดจเตเดจ, เดžเดพเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดทเดจเตเดฑเต† เด’เดฐเต เด…เดตเดคเดฐเดฃเด‚ (POC - เดชเตเดฐเต‚เดซเต เด“เดซเต เด•เตบเดธเต†เดชเตเดฑเตเดฑเต) เดจเดŸเดคเตเดคเดฟ: เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดชเดตเตผเดทเต†เตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ. เด…เดตเดคเดฐเดฃเดคเตเดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เตŠเดŸเตเด™เตเด•เดพเดฑเตเดฑเตเดณเตเดณ, เดจเต€เดฃเตเดŸ เด•เดฐเด˜เต‹เดทเด‚ เดจเดฟเดฒเดšเตเดšเดชเตเดชเต‹เตพ, เดจเดฟเดฒเด•เตเด•เดพเดคเตเดค เด•เดฐเด˜เต‹เดทเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดชเตเดชเต‹เตพ, เด…เดตเตผ เดŽเดจเตเดจเต‹เดŸเต เดชเดฑเดžเตเดžเต - เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดจเดฒเตเดฒเดคเดพเดฃเต, เดชเด•เตเดทเต‡ เดชเตเดฐเดคเตเดฏเดฏเดถเดพเดธเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดฎเดพเดคเตเดฐเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เดœเต†เด™เตเด•เดฟเตปเดธเต เด…เดŸเดฟเดฎเด•เดณเตเด‚ เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต!

เด‡เดคเต เดธเดพเดงเตเดฏเดฎเดพเดฃเต‡เดพ? เดตเดฟเดจเตเดกเต‹เดธเดฟเดจเต เดคเดพเดดเต† เดจเดฟเดจเตเดจเต เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดŠเดทเตเดฎเดณเดฎเดพเดฏ เดฒเดพเดฎเตเดชเต เดกเดฟเดฌเดฟเดŽ เดŽเดŸเตเดคเตเดคเต เดฒเดฟเดจเด•เตเดธเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดชเดตเตผเดทเต†เดฒเตเดฒเดฟเดจเตเดฑเต† เดšเต‚เดŸเดฟเตฝ เด’เดŸเตเดŸเดฟเด•เตเด•เดฃเต‹? เด‡เดคเต เด•เตเดฐเต‚เดฐเดคเดฏเดฒเตเดฒเต‡?

Linux-เตฝ Powershell-เตฝ เดจเดฟเดจเตเดจเต MS SQL-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต
เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เดณเตเดŸเต† เดˆ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดฎเตเดดเตเด•เต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดŽเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ 30+ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเดฟ. เดŽเดจเตเดจเต† เด…เดคเตเดญเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเด•เตเด•เตŠเดฃเตเดŸเต, เด’เดฐเต เดชเตเดฐเดตเตƒเดคเตเดคเดฟ เดฆเดฟเดตเดธเด‚ เด•เตŠเดฃเตเดŸเต เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเด•เตเด•เดพเตป เดŽเดจเดฟเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต. เดžเดพเตป เดšเต‚เดŸเตเดณเตเดณ เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดฒเดพเดฃเต เดŽเดดเตเดคเตเดจเตเดจเดคเต. เด…เดคเดฟเดจเดพเตฝ, เดตเดฟเตปเดกเต‹เดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดฟเดจเด•เตเดธเดฟเดฒเต‡เด•เตเด•เต เดชเดตเตผเดทเต†เตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเต เด…เดชเด•เดŸเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเดพเดจเดพเด•เตเด‚?

sqlcmd vs เด‡เตปเดตเต‹เด•เตเด•เต-SqlCmd

เด…เดต เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เดŸเตเดŸเต†. เดจเดฒเตเดฒ เดชเดดเดฏ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ sqlcmd เดเดคเดพเดฃเตเดŸเต เดธเดฎเดพเดจเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดคเดฏเต‹เดŸเต† เด‡เดคเต Linux-เดจเตเดฑเต† เด•เต€เดดเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. -Q เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดšเต‹เดฆเตเดฏเด‚, เด‡เตปเดชเตเดŸเตเดŸเต เดซเดฏเตฝ -i เด†เดฏเดฟ, เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต -o เดŽเดจเตเดจเดฟเด™เตเด™เดจเต†. เดŽเดจเตเดจเดพเตฝ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเตเด•เตพ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด•เต‡เดธเต เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เด†เดฃเต. เดจเดฟเด™เตเด™เตพ -i เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดซเดฏเดฒเดฟเตฝ เด…เดตเดธเดพเดจเด‚ เดŽเดดเตเดคเตเด•:

GO
EXIT

เด…เดตเดธเดพเดจเด‚ เดŽเด•เตเดธเดฟเดฑเตเดฑเต เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด‡เตปเดชเตเดŸเตเดŸเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเตป sqlcmd เดคเตเดŸเดฐเตเด‚, เดฎเตเดฎเตเดชเดพเดฃเต†เด™เตเด•เดฟเตฝ เดชเตเดฑเดคเตเดคเต เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ GO, เด…เดชเตเดชเต‹เตพ เด…เดตเดธเดพเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฟเดฒเตเดฒ. เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดซเดฏเดฒเดฟเตฝ เดŽเดฒเตเดฒเดพ เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต, เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดต, เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ, เดชเตเดฐเดฟเดจเตเดฑเต เดฎเตเดคเดฒเดพเดฏเดต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

Invoke-SqlCmd เด’เดฐเต DataSet, DataTables เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ DataRows เด†เดฏเดฟ เดซเดฒเด‚ เดจเตฝเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดชเตเดชเดฟเดจเตเดฑเต† เดซเดฒเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ sqlcmd, เด…เดคเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตโ€Œเดคเดพเตฝ, เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเต เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต: เด‡เดคเดฟเดจเดพเดฏเดฟ เด‰เดฃเตเดŸเต Invoke-SqlCmd. เดŽเดจเตเดจเดพเตฝ เดˆ เดŸเต€เดฎเดฟเดจเต เด…เดตเดฐเตเดŸเต‡เดคเดพเดฏ เดคเดฎเดพเดถเด•เดณเตเด‚ เด‰เดฃเตเดŸเต:

  • เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดซเดฏเตฝ เด…เดตเตพเด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ -เด‡เตปเดชเตเดŸเตเดŸเต เดซเดฏเตฝ, เดชเดฟเดจเตเดจเต† เดชเตเดฑเดคเตเดคเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด‡เดคเต เด’เดฐเต เดตเดพเด•เตเดฏเด˜เดŸเดจ เดชเดฟเดถเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต
  • -เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดซเดฏเตฝ เด‡เดฒเตเดฒ, เด•เดฎเดพเตปเดกเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดซเดฒเด‚ เด’เดฐเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจเต
  • เด’เดฐเต เดธเต†เตผเดตเตผ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฐเดฃเตเดŸเต เดตเดพเด•เตเดฏเด˜เดŸเดจเด•เดณเตเดฃเตเดŸเต: -ServerInstance -Username -Password -Database เดตเดดเดฟเดฏเตเด‚ -เด•เดฃเด•เตเดทเตปเดธเตเดŸเตเดฐเดฟเด‚เด—เต. เดตเดฟเดšเดฟเดคเตเดฐเดฎเต†เดจเตเดจเต เดชเดฑเดฏเดŸเตเดŸเต†, เด†เดฆเตเดฏ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ 1433 เด…เดฒเตเดฒเดพเดคเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเต‹เตผเดŸเตเดŸเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.
  • เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต, เดชเตเดฐเดฟเดจเตเดฑเต เดŽเดจเตเดจเต เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•, เด…เดคเต "เดชเดฟเดŸเดฟเดšเตเดšเต" sqlcmdเด•เดพเดฐเดฃเด‚ Invoke-SqlCmd เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเดพเดฃเต
  • เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ: เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† Linux-เดจเต เดˆ 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 เดฒเดญเดฟเดšเตเดšเต, เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดซเดฏเดฒเดฟเตฝ เดŽเด•เตเดธเตเด•เตเดฒเต‚เดธเต€เดตเต เดฒเต‹เด•เตเด•เต เดŽเดŸเตเด•เตเด•เดพเดจเตเดณเตเดณ เดถเตเดฐเดฎเด‚ เด•เดพเดฐเดฃเด‚ เดฌเตพเด•เตเด•เต 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 (เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ) เดŽเดจเตเดจ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•.

เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดœเต†เตปเด•เดฟเตปเดธเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เด‡เดŸเดชเดดเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเต‹เด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•