Подтвердить что ты не робот

Как ссылаться на sql-сервер с обратным слэшем (\) в его имени?

Гивенс:

  • Один SQL Server назван: DevServerA
  • Друг называется: DevServerB\2K5

Проблема:

От DevServerA, как я могу написать запрос, который ссылается на DevServerB\2K5?

Я попробовал образец, фиктивный запрос (запустил его из DevServerA):

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

И я получаю сообщение об ошибке:

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

Однако, я знаю, что мой синтаксис почти прав, поскольку работает наоборот (выполняется этот запрос из DevServerB\2K5):

SELECT TOP 1 *  
FROM DevServerA.master.sys.tables

Пожалуйста, помогите мне разобраться, как ссылаться DevServerB\2K5 на DevServerA. Спасибо.

4b9b3361

Ответ 1

В 4 названиях частей первая часть, если имя связанного сервера (т.е. объект метаданных), а не имя сервера (то есть имя хоста). Таким образом, вы можете назвать связанный сервер FOO и указать ему на BAR хоста или на экземпляр FOO\BAR. И даже если вы называете связанный объект сервера содержащим косую черту, вы все равно можете использовать его в имени нескольких частей, просто указав имя:

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

Ответ 2

Попробуйте использовать квадратные скобки:

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

Ответ 3

В SQL SERVER 2005 произошло следующее: Ввод:

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

Изменено на

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

системой SQL Server, и вы все равно получите сообщение об ошибке: Неправильный синтаксис около '.'.

Я попробовал его со связанным сервером, названным двумя разными способами: '[DevServerB\2K5]' и 'DevServerB\2K5'

Есть ли у кого-нибудь другие идеи?

Спасибо Алан Робертсон

КОРРЕКЦИЯ добавила следующий день: я был неправ, частично. Когда вы пытаетесь создать представление с помощью оператора SQL, например:

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

тогда [и] удаляются, и нельзя сохранить представление, НО, если просто написать запрос, используя ту же строку SQL, он работает правильно.

Я также смог выполнить инструкцию SQL, например:

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

Я могу делать то, что хотел, но было бы намного лучше, если бы я мог сохранить представление и использовать представление, которое затем будет использоваться для SELECT, INSERT и UPDATE таблицы в [DevServerB\2K5]. База данных TestDB от исходного сервера, где я пытался, и не смог создать представление из-за "\".

-ASR -