Как ссылаться на 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
. Спасибо.
Ответы
Ответ 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 -