To delete all lines whose 12th character is not ;, you could do:
$ sed -E '/^.{11}[^;]/d' file
2266308;A;B;dfsgsfdg
2266310;A;B;dfg
Or, to edit the original file (if your sed supports -i):
$ sed -iE '/^.{11}[^;]/d' file
And if your sed doesn't support -E:
sed -i '/^.\{11\}[^;]/d' file
However, since this is a csv file, it is much safer to use fields instead of character counts. For example, use awk and tell it to print all lines whose 3rd field is one character long:
$ awk -F';' 'length($3)==1' file
2266308;A;B;dfsgsfdg
2266310;A;B;dfg
With recent GNU awk, you can edit the file in place:
awk -iinplace -F';' 'length($3)==1' file
This has the advantage of being robust to changes in the lengths of the preceding fields. Unlike the sed approach, it won't fail if you have leading whitespace on a line or if any of the 1st 2 fields are longer (or shorter) than you expect. As a general rule, if your data is field-separated, using the fields is a better idea than using character positions.
;or lines whose Nth field is >1 in length?