Сегодня столкнулся с багом, пропущенным в релиз SQL Server. Немного предыстории: пришёл адрес нового сервера, на котором нужно было посмотреть базу, и внести кое-какие изменения. При коннекте к базе я получил вот это:
В сообщении фигурировала база, к которой я не обращался и не имел доступа, т.е. вряд ли это было из-за того, что мне дали неправильные логин и пароль. Полазив в интернете и посмотрев, что люди пишут по этому поводу, нашёл ответ. Как оказалось, это довольно известный баг SQL Server (вот те раз :)), и я не мог соединиться с базой из-за того, что в Object Explorer Details, по умолчанию отображается столбец Collation и на сервере несколько баз данных находились Offline. На первый взгляд ничего страшного, но для баз, которые находятся Offline, Collation равен NULL, и Management Studio, встретив в этом поле NULL, думает, что у вас нет прав, и выдаёт приведённое выше сообщение. Более полный анализ причин данного бага можно найти здесь.
Как с этим бороться? Пока этот баг не починили, можно использовать такой workaround:
Откройте вкладку Object Details (F7). В ней откройте папку Databases.
Щёлкните правой кнопкой по строке заголовка и снимите флажок в поля Collation.
Теперь можно обновлять список баз в Object Explorer и работать дальше. Проголосовать за этот баг на Microsoft Connect вы можете здесь.
Ссылки по теме:
- Детальный анализ бага в блоге Aaron Bertrand
- Страница бага на Microsoft Connect
- Состояния файла БД