You can use the csplit tool for this:
pattern='DROP TABLE IF EXISTS `captcha_log`CREATE TABLE IF NOT EXISTS `captcha_log`'
csplit infile /"$pattern"/
If you really want to use sed, you could do it in two steps:
pattern='DROP TABLE IF EXISTS `captcha_log`CREATE TABLE IF NOT EXISTS `captcha_log`'
sed -n "/$pattern/q;p" infile > outfile1
sed -n "/$pattern/,\$p" infile > outfile2
-n prevents printing as the default action; /$pattern/q exits as soon as the pattern line is reached, and p is executed for each line before that.
The second command just uses an address range, from the pattern line to the last one $. Because the command is double quoted to get $pattern in, the $ for the last line has to be escaped, \$.
Or you could do a single pass with awk:
pattern='DROP TABLE IF EXISTS `captcha_log`CREATE TABLE IF NOT EXISTS `captcha_log`'
awk -v pattern="$pattern" '$0 == pattern { ++flag }
flag { print > "outfile2"; next }
{ print > "outfile1" }' infile
The first pattern checks if the line matches our split line and increments a flag if so; the second line checks if the flag if set, and if so, prints to the second output file and skips the last pattern/action; the third action is executed if the flag is not set and prints to the first output line.