āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻ° āĻĻā§: āĻ–āĻŋāĻ¤ āĻ—āĻ˛ā§āĻĒ āĻ¨āĻŋāĻŦā§‡āĻĻāĻŋāĻ¤

āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻšāĻšā§āĻ›ā§‡ āĻœāĻŋāĻ°ā§‹ āĻŸāĻžāĻš PROD āĻ†āĻ°āĻĄāĻŋāĻāĻ¸ (āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛) āĻāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻ¨ āĻ—ā§āĻ¨āĻ—ā§āĻ¨ āĻ•āĻ°āĻ›āĻŋāĻ˛, āĻ†āĻŽāĻŋ āĻ…āĻŸā§‹āĻŽā§‡āĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž (āĻĒāĻŋāĻ“āĻ¸āĻŋ - āĻĒā§āĻ°ā§āĻĢ āĻ…āĻĢ āĻ•āĻ¨āĻ¸ā§‡āĻĒā§āĻŸ) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ: āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸāĨ¤ āĻĒā§āĻ°ā§‡āĻœā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡āĻ° āĻĒāĻ°, āĻ¯āĻ–āĻ¨ āĻāĻĄāĻŧā§‹, āĻĻā§€āĻ°ā§āĻ˜āĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤āĻžāĻ˛āĻŋ āĻŽāĻžāĻ°āĻž āĻ—ā§‡āĻ˛, āĻ…āĻŦāĻŋāĻ°āĻžāĻŽ āĻ•āĻ°āĻ¤āĻžāĻ˛āĻŋāĻ¤ā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ˛, āĻ¤āĻžāĻ°āĻž āĻ†āĻŽāĻžāĻ•ā§‡ āĻŦāĻ˛āĻ˛ - āĻāĻ‡ āĻ¸āĻŦāĻ‡ āĻ­āĻžāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻĻāĻ°ā§āĻļāĻ—āĻ¤ āĻ•āĻžāĻ°āĻŖā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻœā§‡āĻ¨āĻ•āĻŋāĻ¨ā§āĻ¸ āĻĻāĻžāĻ¸ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡!

āĻāĻŸāĻž āĻ•āĻŋ āĻ¸āĻŽā§āĻ­āĻŦ? āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœā§‡āĻ° āĻ¨ā§€āĻšā§‡ āĻĨā§‡āĻ•ā§‡ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ‰āĻˇā§āĻŖ, āĻŦāĻžāĻ¤āĻŋ āĻĄāĻŋāĻŦāĻŋāĻ āĻ¨āĻŋāĻ¨ āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ā§‡āĻ° āĻ–ā§āĻŦ āĻ‰āĻ¤ā§āĻ¤āĻžāĻĒā§‡ āĻāĻŸāĻŋ āĻ†āĻŸāĻ•ā§‡ āĻĻāĻŋāĻ¨? āĻāĻŸāĻž āĻ•āĻŋ āĻ¨āĻŋāĻˇā§āĻ ā§āĻ° āĻ¨āĻ¯āĻŧ?

āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻāĻŽāĻāĻ¸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž
āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻāĻ‡ āĻ…āĻĻā§āĻ­ā§āĻ¤ āĻ¸āĻ‚āĻŽāĻŋāĻļā§āĻ°āĻŖā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŽāĻœā§āĻœāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ†āĻŽāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ 30+ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°ā§‡ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻžāĻ° āĻ†āĻļā§āĻšāĻ°ā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻāĻ• āĻ•āĻžāĻ°ā§āĻ¯āĻĻāĻŋāĻŦāĻ¸ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻĒā§āĻ¤ āĻ¸āĻžāĻ§āĻ¨āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ›āĻŋāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻĨā§‡āĻ•ā§‡ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ°āĻļā§‡āĻ˛ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨?

sqlcmd āĻŦāĻ¨āĻžāĻŽ Invoke-SqlCmd

āĻ†āĻŽāĻžāĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•. āĻ­āĻžāĻ˛ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ‡āĻ‰āĻŸāĻŋāĻ˛āĻŋāĻŸāĻŋ sqlcmd āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ…āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻš āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡āĻ“ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻŽāĻ°āĻž -Q āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻŋ, āĻ‡āĻ¨āĻĒā§āĻŸ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ -i āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻŸāĻŋ -o āĻšāĻŋāĻ¸ā§‡āĻŦā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ•ā§‡āĻ¸-āĻ¸āĻ‚āĻŦā§‡āĻĻāĻ¨āĻļā§€āĻ˛ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ -i āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻļā§‡āĻˇā§‡ āĻ˛āĻŋāĻ–ā§āĻ¨:

GO
EXIT

āĻ¯āĻĻāĻŋ āĻļā§‡āĻˇā§‡ āĻ•ā§‹āĻ¨ EXIT āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ sqlcmd āĻ‡āĻ¨āĻĒā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻŦā§‡, āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ†āĻ—ā§‡ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻ¨āĻž GO, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻļā§‡āĻˇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻžāĨ¤ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ¤ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ, āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨, āĻŦāĻžāĻ°ā§āĻ¤āĻž, āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻĨāĻžāĻ•ā§‡āĨ¤

Invoke-SqlCmd āĻāĻ•āĻŸāĻŋ DataSet, DataTables āĻŦāĻž DataRows āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻ†āĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ 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

āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ:

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 āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ•āĻŋāĻ›ā§ āĻ…āĻĒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ, āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ•ā§‡ āĻ…āĻĄāĻŋāĻŸ āĻĒā§āĻ˛ā§‡āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¸ā§ŒāĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻœā§‡āĻ¨āĻ•āĻŋāĻ¨ā§āĻ¸ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻāĻ•āĻ‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛, āĻāĻŸāĻŋ āĻāĻ°āĻ•āĻŽ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛:

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

āĻāĻ‡āĻ­āĻžāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻŦāĻŋāĻ¸āĻŋāĻĒāĻŋ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ—āĻŋāĻ˛ā§‡ āĻĢā§‡āĻ˛āĻŋ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ…āĻĄāĻŋāĻŸ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° nvarchar(āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš) āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ‡āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻ‡ āĻĒā§āĻ°ā§‹ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻŸāĻŋ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡, āĻ•āĻžāĻ°āĻŖ āĻāĻ•āĻŸāĻŋ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻ°āĻĄāĻŋāĻāĻ¸ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻ•āĻšā§‡āĻŸāĻŋāĻ¯āĻŧāĻž āĻ˛āĻ• āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ‡āĻ‰āĻāĻ¨āĻ¸āĻŋ-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻžāĻ˛ā§āĻ• āĻ‡āĻ¨āĻ¸āĻžāĻ°ā§āĻŸ āĻŽā§‹āĻŸā§‡āĻ“ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻ†āĻ°āĻĄāĻŋāĻāĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ§ā§āĻŦāĻ‚āĻ¸ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻļā§āĻ°ā§ āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻ˛āĻžāĻ‡āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻĄāĻŋāĻŸ āĻ˛āĻžāĻ‡āĻ¨ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ›āĻŋ:

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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨