Наличие проблемы, добавляющей связанный SQL-сервер

Если вы можете изменить свой формат XML и использовать запрос, как показано ниже, чтобы получить результат

DECLARE @X XML = '<ROOT>
                  <RECORD>
                      <ID>1</ID>
                      <AppCode>Code 1</AppCode>
                  </RECORD>
                  <RECORD>                      
                      <ID>2</ID>
                      <AppCode>Code 2</AppCode>
                  </RECORD>
                  <RECORD>
                      <ID>3</ID>
                      <AppCode>Code 3</AppCode>
                  </RECORD>
                  <RECORD>
                      <ID>4</ID>
                      <AppCode>Code 4</AppCode>
                  </RECORD>
                  <RECORD>
                      <ID>5</ID>
                      <AppCode>Code 5</AppCode>
                  </RECORD>
              </ROOT>'


DECLARE @doc int
EXEC sp_xml_preparedocument @doc OUTPUT, @X

SELECT ID, AppCode
FROM OPENXML(@doc,'/ROOT/RECORD',2)
WITH (
ID int,
AppCode varchar(10)
)

Вывод будет выглядеть как

ID  AppCode
1   Code 1
2   Code 2
3   Code 3
4   Code 4
5   Code 5
9
задан Herb Caudill 9 May 2009 в 19:13
поделиться

6 ответов

It does work with sql authentication. In fact its easier, as you don't have to set up Kerberos if you use SQL authentication.

One thing is confusing about your error messages, your address is an IP address : 123.45.678.90

your error message is talking about Named Pipes. Could this be a clue?

You don't have to reference the server in TSQL by it's IP address. If you add an alias on the local server, pointing to the remote server, you can give a more sensible name. Refering to it by IP address is obviously unsatisfactory.

7
ответ дан 4 December 2019 в 10:05
поделиться

Если он не работает на именованных каналах, когда вы указываете IP-адрес, попробуйте поставить перед IP-адресом префикс «tcp:» и посмотрите, поможет ли это установить правильный путь.

1
ответ дан 4 December 2019 в 10:05
поделиться

Разобрался, благодаря строке инструкции в мастере графического интерфейса пользователя SMS для добавления связанных серверов: «Если выбран SQL Server, то имя связанного сервера также является сетевым именем сервера».

Я думал, что имя связанного сервера было просто произвольный псевдоним.

Это работает как шарм - жаль, что мне приходится вводить IP (в скобках) каждый раз, когда я хочу использовать этот связанный сервер, но он у вас есть.

Exec sp_dropserver '0.0.0.0', 'droplogins'
go

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

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

Select Top 10 * from [0.0.0.0].DatabaseName.dbo.TableName
2
ответ дан 4 December 2019 в 10:05
поделиться

sp_configure 'Ad Hoc Distributed Queries', 1

next

перенастроить с переопределением

проверили конфигурацию области поверхности SQL -> Databaseengine -> Remoteconnections-- > Локальные и удаленные соединения -> следует использовать как TCP / IP, так и именованные каналы. (если не выберите этот вариант и перезапустите)

, это должно решить проблему Поставщик OLE DB "SQLNCLI" для связанного сервера "Remote" вернул сообщение "Произошла ошибка при установлении соединения с сервером. При подключении к SQL Server 2005 этот сбой может быть вызван тот факт, что при настройках по умолчанию SQL Server не позволяет удаленное соединения. ».

1
ответ дан 4 December 2019 в 10:05
поделиться

Чтобы решить указанную выше проблему, я изменил определение связанного сервера, указав конкретно TCP:

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'

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

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

Надеюсь, это поможет

10
ответ дан 4 December 2019 в 10:05
поделиться

Иногда протоколы были включены и конфигурация контактной зоны разрешает удаленные подключения, но служба обозревателя SQL Server не перезапускалась с момента установки конфигурации. Это означает, что конфигурация не активна.

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

Майк

0
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: