MS SQL Server 2008 - Confusione nella migrazione da MySQL in riferimento a: & # 8220; seleziona XYZ da TABELLA & # 8221;

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

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

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top