2010-03-30 12 views
11

Givens:Come fare riferimento a un server SQL con una barra rovesciata () nel nome?

  • Uno SQL Server è denominato: DevServerA
  • Un altro prende il nome: DevServerB\2K5

Problema:

Da DevServerA, come posso scrivere una query che fa riferimento a DevServerB\2K5?

ho provato un campione, interrogazione manichino (in esecuzione da DevServerA):

SELECT TOP 1 * 
FROM DevServerB\2K5.master.sys.tables 

e ottengo l'errore:

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near '\.'. 

Tuttavia, so che la mia sintassi è quasi corretta, poiché il contrario funziona (eseguendo questa query da DevServerB\2K5):

Per favore aiutami a capire come fare riferimento a DevServerB\2K5 da DevServerA. Grazie.

+2

Tecnicamente, barra è (/) e backslash è (\\). – Steven

+0

Grazie a @Steven, ho aggiornato il titolo. –

risposta

16

in 4 nomi delle parti, la prima parte, se il nome di un server collegato (cioè un oggetto metadati.), Non il nome di un server (ad esempio un host. nome). Quindi puoi nominare il tuo server FOO collegato e fargli puntare alla BAR host o all'istanza FOO \ BAR. E anche se il nome dell'oggetto server collegato a contenere una barra, è comunque possibile utilizzare in un nome in più parti, semplicemente citando il nome:

SELECT TOP 1 * 
FROM [DevServerB\2K5].master.sys.tables 
6

Prova a usare le parentesi quadre:

SELECT TOP 1 * 
FROM [DevServerB\2K5].master.sys.tables 
0

su SQL Server 2005, il seguente è accaduto: Ingresso di :

SELECT TOP 1 * 
FROM [DevServerB\2K5].master.sys.tables 

viene modificato in

SELECT TOP 1 * 
FROM DevServerB\2K5.master.sys.tables 

dal sistema di SQL Server e continui a ricevere il messaggio di errore: la sintassi non corretta in prossimità ''.

ho provato con un server collegato denominato in due modi diversi: '[DevServerB \ 2K5]' e 'DevServerB \ 2K5'

Qualcuno ha altre idee?

Grazie Alan Robertson

CORREZIONE aggiunto il giorno dopo: mi sbagliavo, parzialmente.Quando si cerca di creare una vista utilizzando un'istruzione SQL come:

SELECT * 
FROM [DevServerB\2K5].TestDB.dbo.tables 

poi il [e] vengono rimossi e non si può salvare la vista, ma se uno scrive solo una query utilizzando la stessa stringa SQL allora funziona correttamente.

Sono stato anche in grado di eseguire un'istruzione SQL come:

INSERT INTO [DevServerB\2K5].TestDB.dbo.tables (...) ... 

posso fare quello che volevo, ma sarebbe stato molto meglio se avrei potuto salvare una vista e usata una vista che avrebbe poi essere utilizzato per SELECT, INSERT e UPDATE della tabella nel database [DevServerB \ 2K5] .TestDB dal server originale in cui ho provato e non è riuscito a creare una vista a causa del '\'.

-ASR-

+0

Per quanto riguarda il problema con SQL Server 2005 (in cui mi sono anche imbattuto) è possibile utilizzare le istruzioni CREATE o ALTER VIEW. Sembra che ci sia un bug nel designer che impedisce di salvare la definizione, quindi dovrai farlo manualmente ;-) – Gorgsenegger

Problemi correlati