Schema del server SQL e schema predefinito

Ho uno schema definito nel mio database. Tranne ora ogni volta che faccio una dichiarazione SQL devo fornire lo schema … SELECT * FROM [myschema].table

Ho impostato lo schema predefinito per il mio utente utilizzando lo studio di gestione e anche eseguito il ALTER USER myUser WITH DEFAULT_SCHEMA [myschema] e ottengo ancora l’object non valido ‘table’ quando si scrive una query senza lo schema (SELECT * FROM table)

C’è un modo per scrivere SELECT * FROM table senza dover specificare il nome dello schema tutto il tempo?

È su SQL 2005 utilizzando SQL Management Studio.

L’utente è un SA , se così non funziona, secondo la documentazione, gli utenti di SA sono sempre predefiniti allo schema dbo .

Il valore di DEFAULT_SCHEMA viene ignorato se l’utente è un membro del ruolo predefinito del server sysadmin. Tutti i membri del ruolo predefinito del server sysadmin hanno uno schema predefinito di dbo.

Paio di opzioni:

  1. Il tuo utente è elencato in Sicurezza> Utenti (in SSMS)? Controllare le proprietà (fare clic con il pulsante destro del mouse sul nome) e verificare se lo schema predefinito è impostato nel contesto del database anziché nell’istanza (che è ciò che ALTER USER sta impostando).
  2. Creare un sinonimo per la tabella a cui si desidera fare riferimento:

     CREATE SYNONYM table_name FOR [your_db].[your_schema].table_name 

    … che interesserà chiunque non usi almeno due notazioni di nome, nel contesto di quel database. Leggi di più qui . Ma è associato in definitiva a uno schema.

  3. Verifica che il database selezionato nel menu a discesa “Database disponibili” (in alto a sinistra, a sinistra del pulsante Esegui) sia corretto.

  4. Utilizzare tre notazioni di nome quando si specificano i riferimenti di tabella (e vista):

     SELECT * FROM [your_db].[your_schema].table_name 

Se non si desidera utilizzare nomi SQl “completi”, è necessario evitare di creare le tabelle utilizzando qualsiasi account o ruolo che non utilizza lo schema predefinito “dbo” assegnato. Perché è necessario modificare lo schema predefinito sull’utente se non si intende utilizzarlo?