์ƒˆ ๋ฒ„์ „์˜ MS SQL Server์—์„œ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ฐฑ์—… ๋ฐ์ดํ„ฐ ์ „์†ก

์„ ์‚ฌ ์‹œ๋Œ€

ํ•œ ๋ฒˆ์€ ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐฑ์—…์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋†€๋ž๊ฒŒ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„์— ๋ถ€๋”ชํ˜”์Šต๋‹ˆ๋‹ค.

  1. ๋ฒ„์ „์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SQL ์„œ๋ฒ„ 2016 ๋‚ด ๊ฒƒ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. SQL ์„œ๋ฒ„ 2014.
  2. ๋‚ด ์—…๋ฌด์šฉ ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉํ•œ OS๋Š” ์œˆ๋„์šฐ 7๊ทธ๋ž˜์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค SQL ์„œ๋ฒ„ 2016 ๋ฒ„์ „๊นŒ์ง€
  3. ์ง€์›๋˜๋Š” ์ œํ’ˆ์€ ๊ธด๋ฐ€ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๋ ˆ๊ฑฐ์‹œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋Š” ๋” ํฐ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€์˜€์œผ๋ฉฐ ๋‹ค๋ฅธ ์ œํ’ˆ ๋ฐ ๊ธฐ๋ฐ˜๊ณผ๋„ ํ†ต์‹ ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์Šคํ…Œ์ด์…˜์— ๋ฐฐํฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋น„ํ‘œ์ค€ ์†”๋ฃจ์…˜์˜ ๋ชฉ๋ฐœ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—…์—์„œ ๋ฐ์ดํ„ฐ ๋ณต์›

๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ผํด VM ๋ฒ„์ถ”์–ผ Windows 10 ์‚ฌ์šฉ(Edge ๋ธŒ๋ผ์šฐ์ €์šฉ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€ ์ดฌ์˜ ๊ฐ€๋Šฅ) ๋”ฐ๋ผ์„œ). SQL Server 2016์ด ๊ฐ€์ƒ ๋จธ์‹ ์— ์„ค์น˜๋˜์—ˆ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐฑ์—…์—์„œ ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ต์ˆ˜).

๊ฐ€์ƒ ๋จธ์‹ ์—์„œ SQL Server์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ตฌ์„ฑ

๋‹ค์Œ์œผ๋กœ ์™ธ๋ถ€์—์„œ SQL Server์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐฉํ™”๋ฒฝ์˜ ๊ฒฝ์šฐ ํฌํŠธ ์š”์ฒญ์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. 1433.
  2. ์„œ๋ฒ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋Š” Windows ์ธ์ฆ์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋กœ๊ทธ์ธ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” SQL์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค(์•ก์„ธ์Šค ์„ค์ •์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ SQL Server ์†์„ฑ์—์„œ SQL ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํƒญ์˜ SQL Server ์‚ฌ์šฉ์ž ์„ค์ •์—์„œ ์‚ฌ์šฉ์ž ๋งคํ•‘ ๋ณต์›๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์—ญํ•  ์ง€์ • db_securityadmin.

๋ฐ์ดํ„ฐ ์ „์†ก

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก ์ž์ฒด๋Š” ๋‘ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์ „์†ก(ํ…Œ์ด๋ธ”, ๋ทฐ, ์ €์žฅ ํ”„๋กœ์‹œ์ € ๋“ฑ)
  2. ๋ฐ์ดํ„ฐ ์ž์ฒด ์ „์†ก

๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์ „์†ก

๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์„ ํƒ ์ž‘์—… -> ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ ํœด๋Œ€์šฉ ๋ฒ ์ด์Šค์šฉ.
  2. ์ „์†กํ•ด์•ผ ํ•˜๋Š” ๊ฐœ์ฒด๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ƒ์„ฑ๋จ).
  3. ์Šคํฌ๋ฆฝํŠธ ์ €์žฅ์„ ์œ„ํ•œ ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์œ ๋‹ˆ์ฝ”๋“œ ํŒŒ์ผ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ €์žฅ๋˜๋ฉด ์›๋ณธ SQL Server(์ด์ „ ๋ฒ„์ „)์—์„œ ์‹คํ–‰ํ•˜์—ฌ ํ•„์š”ํ•œ ๊ธฐ๋ฐ˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  : ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ๋ฐฑ์—…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •๊ณผ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋Œ€์‘ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์Šคํฌ๋ฆฝํŠธ์— COLLATE์— ๋Œ€ํ•œ ์„ค์ •์ด ์—†์–ด์„œ ๋ณด์™„๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์žฌ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ํƒฌ๋ฒ„๋ฆฐ๊ณผ ์ถค์„ ์ถ”๋Š” ๋ฐ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์†ก

๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ œํ•œ ์‚ฌํ•ญ ํ™•์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'

๋ฐ์ดํ„ฐ ์ „์†ก์€ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž‘์—… -> ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” SQL Server์—์„œ:

  1. ์†Œ์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(๊ฐ€์ƒ ๋จธ์‹ ์˜ SQL Server 2016). ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. SQL Server ๋„ค์ดํ‹ฐ๋ธŒ ํด๋ผ์ด์–ธํŠธ ๊ทธ๋ฆฌ๊ณ  ์•ž์„œ ์–ธ๊ธ‰ํ•œ SQL ์ธ์ฆ.
  2. ๋Œ€์ƒ(ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์˜ SQL Server 2014)์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ์œผ๋กœ ๋งคํ•‘์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ์ด ์•„๋‹˜ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์˜ต์…˜์œผ๋กœ ์„ ํƒ "ID ์—ด์— ์‚ฝ์ž… ํ—ˆ์šฉ"๊ทธ๋Ÿฌํ•œ ๊ฒƒ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ.
    ์ฐธ๊ณ  : if, ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•˜๊ณ  ์†์„ฑ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ "ID ์—ด์— ์‚ฝ์ž… ํ—ˆ์šฉ" ์„ ํƒํ•œ ํ…Œ์ด๋ธ” ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์— ๋Œ€ํ•ด ์†์„ฑ์ด ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์„ ํƒํ•œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์†์„ฑ์ด ์ด๋ฏธ ์„ค์ •๋˜์—ˆ์Œ์„ ๋Œ€ํ™” ์ƒ์ž์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์‹ค์€ ํ˜ผ๋™์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์˜ค๋ฅ˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ „์†ก์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ณต์› ์ œ์•ฝ ๊ฒ€์‚ฌ:
    EXEC sp_msforeachtable 'ALTER TABLE ? CHECK CONSTRAINT all'

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„ค์ •์„ ํ™•์ธํ•˜๊ณ  ์˜ค๋ฅ˜๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์—ฌ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ด ์ž‘์—…์€ ๋งค์šฐ ๋“œ๋ฌผ๋ฉฐ ์œ„์˜ ์ œํ•œ ์‚ฌํ•ญ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ SQL Server๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ์›๊ฒฉ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋„ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์™€ ์ €ํ’ˆ์งˆ ๊ฐœ๋ฐœ์˜ ๋น„๋šค์–ด์ง„ ์†์—์„œ ์ž์œ ๋กญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ง€์นจ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ผ์ง€๋งŒ ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์‹ ๊ฒฝ์„ ์ ˆ์•ฝํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ์šฉ ๋œ ์ถœ์ฒ˜ ๋ชฉ๋ก

์ถœ์ฒ˜ : habr.com