Создание представления с помощью БД связанного сервера в SQL Server

Как создать представление на связанном сервере db. Например у меня есть связанный сервер [1.2.3.4] на [5.6.7.8]. Оба сервера БД являются SQL Sserver 2005. Я хочу создать представление на [5.6.7.8], используя таблицу на связанном сервере.

EDIT:

при создании с использованием полного имени, [1.2.3.4].децибел.dbo.стол, я получаю эту ошибку.

ошибка выполнения SQL.

выполненная инструкция SQL: выберите * из 1.2.3.4.децибел.dbo.таблица (вы можете увидеть скобок нет.) Источник Ошибки: Поставщик Данных .Net SqlClient Сообщение об ошибке: неверный синтаксис рядом с "0.0". --- >часть IP-адреса.

Я просто создаю это в ManagementStudio, не используют его, потому что он еще не создан. Я изменил IP. В изображении вы можете видеть, что нет скобок вокруг IP, но я дал его и по ошибке эти скобки удаляются.

спасибо.

7 ответов


вам нужно использовать четырехкомпонентное полное имя: linkedserver.база данных.схема.таблица

SELECT * FROM [1.2.3.4].Northwind.dbo.Customers

вот статья MSDN о доступ к именам объектов.

вы можете попробовать вручную создать представление, а не использовать инструменты управления SQL:

CREATE VIEW [dbo].[sywx]
AS
    SELECT  *
    FROM    [1.2.3.4].Atia.dbo.IpPbxDCR
GO

Я также рекомендую использовать имя, если это возможно, для связанного сервера, а не использовать IP-адрес.


это проблема SQL Management Studio. Если вы попытаетесь создать представление с помощью management studio NEW VIEW, вы получите неверный синтаксис этой ошибки.

но если вы используете SQL-запрос:

CREATE VIEW [dbo].[viewname] 
AS 
    SELECT  * 
    FROM    [0.0.0.0].database.dbo.table 
GO 

тогда он будет работать.

для проверки вы увидите представление, созданное при обновлении взглядов. Если вы просто выполните запрос select из представления, вы увидите результаты возврата представления.

но если вы попытаетесь перейти в режим разработки для этого представления и попытаться выполнить запрос на проектирование ошибка появится снова, даже если представление было успешно создано.


Если связанный сервер настроен, вы просто ссылаетесь на таблицы на нем, используя четырехчастное полное имя:

linkedserver.database.schema.table

Так что если ваше имя связанного сервера [0.0.0.0], вы можете ссылаться на таблицу:

[0.0.0.0].database.schema.table

ваша главная проблема-назвать ваш сервер ссылок номерами (IP-адрес). Единственный способ, который работал для меня, - использовать алфавитное имя для моего сервера ссылок без какой-либо точки".' Вы можете использовать эти строки кода для добавления сервера ссылок и аутентификации:

    EXEC sp_addlinkedserver   
        @server='TEST_LINK', 
        @srvproduct='',
        @provider='SQLNCLI', 
        @datasrc='tcp:0.0.0.0'

    EXEC sp_addlinkedsrvlogin
        @useself='FALSE',
        @rmtsrvname='TEST_LINK',
        @rmtuser='user',
        @rmtpassword='secret'

вы можете найти оригинальный ответ здесь


для связанных серверов, использующих периоды для имени веб-службы-это не сработает.
Подробности код и шаги разница разносится на:
http://www.access-programmers.co.uk/forums/showthread.php?t=260764
например FROM [V2.EGG.COM]..[NAT_DBA].[NV_WELLS]
В SSMS 2008 квадратные скобки вокруг [V2.EGG.COM].. удаляются редактором. Затем обновление завершается ошибкой, потому что оно состоит из более чем 4 частей.
Тщетно искали, чтобы найти обходной путь.
Сценарий does work размещен по ссылке выше.


вы также можете просто перетащить объект таблицы/представления со связанного сервера в представление, и Management Studio создаст для вас ссылку на четыре части.


перед доступом к связанному серверу необходимо определить связанный сервер, так как запись связанного сервера также содержит сведения об аутентификации.

после создания связанного сервера можно получить доступ к его базам данных и их объектам с помощью имя_сервера точечных обозначений.база данных.[владелец.]объект