MS SQL Server 2008 - Путаница при миграции с MySQL: «выберите XYZ из TABLE» - PullRequest
1 голос
/ 04 марта 2009

Так что я просто запутался здесь.

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

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

Ошибка: неверное имя объекта 'TABLENAME'
SQLState: S0002
Код ошибки: 208

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

UPDATE: Я должен указать структуру, которая была создана приложением Мастер данных SQL. Если посмотреть на дерево браузера объектов в SQL Server Management Studio, то вот что:

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

... и т. Д.

Спасибо. -дан

Ответы [ 3 ]

1 голос
/ 04 марта 2009

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

1 голос
/ 04 марта 2009

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

USE gk
GO

SELECT * FROM tablename
0 голосов
/ 04 марта 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...