MS SQL Server 2008 - Путаница при переносе с MySQL повторно:“выберите XYZ из таблицы”

StackOverflow https://stackoverflow.com/questions/611850

Вопрос

Так что я просто в замешательстве.

Мне нужно перенести свою базу данных с MySQL на MS SQL Server 2008.Я перенес данные с помощью приложения "MS SQL Data Wizard" от SQL Maestros.Он взял данные + структуру из моей базы данных MySQL "gk" и скопировал их в базу данных "gk" на моем экземпляре MS SQL Express.

Но когда я подключаюсь к экземпляру MS SQL и пытаюсь выполнить SQL-запрос, я получаю результаты только при выполнении "select * from gk.TABLENAME" или "select * from gk.gk.TABLENAME"...Если я выполню "select * from TABLENAME" после выполнения "use gk", Я получаю:

Ошибка:Недопустимое имя объекта "ИМЯ_ТАБЛИЦЫ"
Состояние SQLState:S0002
Код ошибки:208

Как мне заставить это вести себя "нормально"?Т.е. я подключаюсь к определенной базе данных таким образом, что мне не нужно явно указывать ей, в какой базе данных / схеме найти таблицу?

Обновить: Я должен указать структуру, которая была создана приложением SQL Data Wizard.Просматривая дерево обозревателя объектов в среде SQL Server Management Studio, можно увидеть следующее:

[HOSTNAME]\SQLEXPRESS (SQL Server ...)
  |-- Databases
       |-- System Databases
       |-- gk
            |...
            |-- Tables   
                  |-- TABLE1
                  |-- TABLE2
                  |-- TABLE3

...и так далее.

Спасибо.-dan

Это было полезно?

Решение

В диалоговом окне свойств входа для вашего пользователя есть страница "Сопоставление пользователя", где вы можете установить схему пользователя по умолчанию.Установка значения "gk" (в базе данных "gk") должна позволить вам писать запросы без полного уточнения таблиц.

Другие советы

Попробуйте это, если вы еще этого не сделали:

USE gk
GO

SELECT * FROM tablename

Похоже, мастер создал базу данных с именем "gk", а затем поместил все таблицы в схему с названием "gk".

Если таблицы существуют в именованной схеме (т.Е. что-то помимо схемы по умолчанию "dbo"), то вам всегда придется указывать схему при запросе к ней.

ПРИМЕЧАНИЕ:В некоторых ситуациях существует значительное снижение производительности из-за явного указания схемы / владельца.Более значимый в более старых версиях SQL, но все еще присутствующий.Возможно, разница недостаточно велика, чтобы иметь значение в вашем приложении, но все же ее стоит знать:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top