Основная причина ошибки «Недопустимое имя объекта: dbo.etc»?

Я занимаюсь программированием обслуживания в довольно большом проекте, который был начат кем-то, кто теперь покинул компанию ...

Я только что сделал резервную копию одной из баз данных компании, а затем снова подключил ее к нашему тестовому серверу. Кажется, все работает нормально.

Затем я прохожу обычную процедуру входа в систему, и эта часть, похоже, тоже работает.

Однако, как только я дохожу до точки в программе, где требуется выполнить хранимую процедуру, я получаю сообщение об ошибке, сообщающее мне Invalid object name 'Informix.dbo.customer '.

Выполнение той же функции в исходной базе данных работает нормально и возвращает данные, которые я ожидал увидеть.

Объяснения для подобных ошибок, которые я обнаружил, похоже, относятся к схемам, но именно здесь все получается немного странно. Исходная база данных, очевидно, не имеет схем; В папке «Безопасность» у него просто есть папка «Пользователи», содержащая dbo, и папка «Роли», содержащая папку «Роли базы данных», с обычным материалом db_owner и т. Д., И пустая папка с именем «Роли приложений». ".

Папка «Безопасность» в базе данных, для которой выполнено резервное копирование и восстановление, полна всякой ерунды. Три пользователя в дополнение к dbo, папка «Schemas», папка «Certificates», две папки с ключами шифрования ... Я не могу удалить ни одну из них.

Исходя из моего ограниченного понимания системы входа в систему SQL, пользователь я Я вхожу в систему, поскольку получает не-dbo-разрешения из этой коллекции случайного хлама, и поэтому мне отказывают в доступе к частям базы данных, принадлежащим dbo.

Насколько я понимаю, в чем суть проблемы что вызывает эти неверное имя объекта ошибки? Что касается практических вопросов, что я могу сделать, чтобы исправить эту ситуацию и заставить программу, которую я использую, работать в тестовой базе данных так же, как и в реальной?

18
задан RedBlueThing 19 October 2010 в 11:26
поделиться