Das Problem in dem Fall ist, dass eigentlich genau ein Zeichen abgetrennt werden müsste, um die URL sauber zu umbrechen. Das passiert aber nicht, weil bei der Trennung nie ein Zeichen alleine stehen darf und nicht. Ein Grund dafür ist, dass Du nach Großbuchstaben den Umbruch an Großbuchstaben gar nicht aktiviert erlaubt hast. Ein anderer Grund besteht darin, dass das Paket den Umbruch über den Mathemodus steuert. Dabei werden die Zeichen, die per `\UrlBreaks` definiert werden, als *binary operator* deklariert. Das sind Operatoren, bei denen vor dem Operator und nach dem Operator ein Operand erwartet wird. Der Operator schafft damit eine Bindung zum Zeichen (eigentlich Token) danach. Die Stärke dieser Bindung wird (bzw. die Strafpunkte für das Zerreißen der Bindung) wird über `\binoppenalty` bestimmt. Man könnte nun erwarten, dass das Hinzufügen aller Großbuchstaben via `\do\A\do\B`…`\do\Z` das Problem löst. Das ist aber nicht so, wie man bereits mit
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z\do\A\do\K} %definiert die Umbruchstellen, hier alle Kleinbuchstaben + A und K, nicht aber andere Zeichen!
\begin{document}
Das ist ein Text mit URL: \url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots
\end{document}
feststellen kann. Als zusätzliches Problem ergibt sich, dass die Zeile dann *untervoll* bleibt, weil die Abstände der einzelnen mathematischen Elemente der URL fest sind. Erst, wenn man erlaubt, dass diese Abstände vergrößert werden können, funktioniert der Umbruch:
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z\do\A\do\K} %definiert die Umbruchstellen, hier alle Kleinbuchstaben + A und K, nicht aber andere Zeichen!
\begin{document}
{\setlength{\emergencystretch}{1.3pt}%
Das ist ein Text mit URL:
\url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots
\par}
\end{document}
Im Beispiel genügen dafür 1,3 pt, was ungefähr der Unterschied zwischen der Länge des URL-Teils der Zeile und der Zeilenlänge ist.
Aber, das ist leider nur die halbe Wahrheit. Denn fügt man nun das `J` als weiteren Großbuchstaben hinzu, dann funktioniert es plötzlich nicht mehr:
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z\do\A\do\J\do\K} %definiert die Umbruchstellen, hier alle Kleinbuchstaben + A, J und K, nicht aber andere Zeichen!
\begin{document}
{\setlength{\emergencystretch}{1.3pt}%
Das ist ein Text mit URL:
\url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots
\par}
\end{document}
Die Ursache liegt darin, wie TeX das Token nach einem Operator behandelt. Dieses ist nämlich auch dann kein Operator, wenn es durch seinen `\mathcode` eigentlich einer wäre. Im Beispiel wird (zufällig) `J` zu einem Operator. Das `i` ist keiner, das `c` ist wieder einer, das `A` ist keiner und damit wird der Umbruch zwischen `A` und `K` nicht durch `\binoppenalty` bestimmt und ist somit nicht erlaubt.
Die Alternative besteht darin, die erste Zeile früher zu umbrechen. Allerdings geht das wiederum nicht, weil in jener Zeile zu wenige Worte stehen, um den dann notwendigen zusätzlichen Abstand zu verteilen. Es gibt nun zwei Möglichkeiten, diesen zusätzlichen Abstand trotzdem zu ermöglichen. Zum einen wie von @Herbert in seiner Antwort gezeigt, per `sloppypar`, zum anderen kann man generell oder nur für diesen einen Absatz einen ausreichend großen *Notfallabstand* ermöglichen:
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z} %definiert die Umbruchstellen, hier alle Buchstaben, Klein-Buchstaben, nicht aber andere Zeichen!
\begin{document}
{\setlength{\emergencystretch}{1em}%
Das ist ein Text mit URL: \url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots\par}
\end{document}
Der Unterschied der beiden Lösungen ist, dass sich `sloppypar` bereits im zweiten Umbruchversuch (= Versuch mit Trennung) von TeX auswirkt, und daher bei Absätzen mit Trennung den Umbruch bereits verschlechtern *kann*, wenn das nicht zwingend notwendig wäre. Dagegen, wirkt sich `\emergencystretch` erst in einem dritter Umbruchversuch aus, der überhaupt nur dann stattfindet, wenn der zweite Versuch nicht erfolgreich war. Nur zur Erklärung sei erwähnt, dass der erste Umbruchversuch einer ganz ohne Trennung ist. Weil das so ist, kann man `\emergencystretch` auch generell setzen, wenn man häufiger Umbruchprobleme hat. Ich kenne einige Anwender, die das in deutschen Texten auch ohne URL-Probleme generell machen:
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\setlength{\emergencystretch}{1em}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z} %definiert die Umbruchstellen, hier alle Kleinbuchstaben, nicht aber andere Zeichen!
\begin{document}
Das ist ein Text mit URL: \url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots
\end{document}
Wer nun glaubt, dass das noch besser wird, wenn man alle Großbuchstaben in `\UrlBreaks` aufnimmt, der irrt:
\documentclass[12pt, oneside,numbers=endperiod]{scrbook}
\usepackage[utf8]{inputenx}% Für den Online-Editor ist UTF8 die einzige korrekte Kodierung!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[left=3.8cm, right=2.8cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage{hyperref}
\usepackage{etoolbox}
\appto\UrlBreaks{\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w
\do\x\do\y\do\z\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K
\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\X\do\Z} %definiert die Umbruchstellen, hier alle Buchstaben, nicht aber andere Zeichen!
\begin{document}
{\setlength{\emergencystretch}{1em}%
Das ist ein Text mit URL: URL:
\url{https://www.google.de/search?q=latex+schrift+f%C3%BCr+url&ie=utf-8&oe=utf-8&gws_rd=cr&ei=OLyyVd2aLcGBUeaJicAK} und geht weiter im Text \dots
\end{document}\par}
\end{document}
Auch hier liegt die Ursache dann wieder darin, dass bei `Ji` das `J` ein Operator ist und damit dazwischen ein Umbruch erlaubt ist, ebenso bei `cA` aber nicht bei `AK` – jedenfalls wenn ich mich nicht verzählt habe.