Создать представление с использованием базы данных Linked Server в SQL Server - PullRequest
14 голосов
/ 22 марта 2010

Как я могу создать Просмотр на связанном сервере БД. Например, у меня есть связанный сервер [1.2.3.4] на [5.6.7.8]. Оба сервера базы данных являются 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 вокруг скобок, но я дал его, и в случае ошибки эти скобки удалены.

Спасибо.

Ответы [ 7 ]

20 голосов
/ 22 марта 2010

Вам необходимо использовать полное имя, состоящее из четырех частей: connectedserver.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-адрес.

12 голосов
/ 29 мая 2012

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

Но если вы используете SQL Query:

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

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

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

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

2 голосов
/ 25 августа 2012

ваша основная проблема - присвоить вашему Link Server номера (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'

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

2 голосов
/ 22 марта 2010

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

linkedserver.database.schema.table

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

[0.0.0.0].database.schema.table
1 голос
/ 12 февраля 2014

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

0 голосов
/ 23 марта 2010

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

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

0 голосов
/ 22 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...