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

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

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

EDIT:

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

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

Выполненный оператор SQL: SELECT * FROM 1.2.3.4.db.dbo.table (Вы можете видеть, что скобки отсутствуют.) Источник ошибки:.Net Поставщик данных SqlClient Сообщение об ошибке: неправильный синтаксис около "0.0". --- > часть IP-адреса.

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

Спасибо.

4b9b3361

Ответ 1

Вам нужно использовать имя с четырьмя частями: linkedserver.database.schema.table

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-адреса.

Ответ 2

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

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

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

тогда это сработает.

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

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

Ответ 3

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

linkedserver.database.schema.table

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

[0.0.0.0].database.schema.table

Ответ 4

Ваша основная проблема - называть ваш сервер ссылок с номерами (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'

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

Ответ 5

Для связанных серверов с использованием периодов для имени веб-службы - это не будет работать.
Подробная информация о кодах и этапы разницы размещены по адресу:
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 частей.
Ищет тщетно, чтобы найти работу.
Script, который работает, размещен по ссылке выше.

Ответ 6

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

Ответ 7

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

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