MS SQL Server 2008 - Confusione nella migrazione da MySQL in riferimento a: & # 8220; seleziona XYZ da TABELLA & # 8221;
-
03-07-2019 - |
Domanda
Quindi sono solo confuso qui.
Devo migrare il mio database da MySQL a MS SQL Server 2008. Ho trasferito i dati tramite la "Creazione guidata dati MS SQL" app da SQL Maestros. Ha preso la struttura data + dal mio database MySQL " gk " e l'ho copiato in un database " gk " sulla mia istanza di MS SQL Express.
Ma quando mi collego all'istanza MS SQL e provo ad eseguire una query SQL, ottengo risultati solo quando eseguo " select * da gk.TABLENAME
" oppure " seleziona * da gk.gk.TABLENAME
" ... Se eseguo " seleziono * da TABLENAME
" dopo aver eseguito " usa gk
" ;, ottengo:
Errore: nome oggetto non valido 'TABLENAME'
SQLState: S0002
Codice errore: 208
Come faccio a comportarmi in questo modo "normalmente"? Ad esempio, mi collego a un database specifico in modo da non doverlo dire esplicitamente in quale database / schema per trovare la tabella?
UPDATE: Dovrei specificare la struttura che è stata creata dall'app Wizard dati SQL. Guardando l'albero del browser degli oggetti in SQL Server Management Studio, c'è questo:
[HOSTNAME]\SQLEXPRESS (SQL Server ...)
|-- Databases
|-- System Databases
|-- gk
|...
|-- Tables
|-- TABLE1
|-- TABLE2
|-- TABLE3
... e così via.
Grazie. -Dan
Soluzione
Nella finestra di dialogo Proprietà di accesso per il tuo utente è presente " Mappatura utente " pagina in cui è possibile impostare lo schema predefinito dell'utente. Impostandolo su " gk " (nel database "quot" gk ") ti dovrebbe consentire di scrivere query senza qualificare completamente le tabelle.
Altri suggerimenti
Prova questo, se non lo hai già fatto:
USE gk
GO
SELECT * FROM tablename
Sembra che la procedura guidata abbia creato un database chiamato " gk " ;, e quindi abbia inserito tutte le tabelle in uno schema intitolato " gk " ;.
Se le tabelle esistono in uno schema denominato (ovvero qualcosa oltre allo schema predefinito di " dbo "), dovrai sempre specificare lo schema quando lo interroghi.
NOTA: In alcune situazioni, vi è una significativa penalizzazione delle prestazioni per NON specificare esplicitamente lo schema / il proprietario. Più significativo nelle versioni precedenti di SQL, ma ancora lì. Potrebbe non essere una differenza abbastanza grande da importare nella tua applicazione, ma vale comunque la pena sapere: