Используя Связанные SQL Server с другого сервера

У меня есть 3 машины, которые вовлечены в запущение скрипта SQL:

  1. JumpBox - Машина, которая служит устойчивой точкой для автоматизации для выполнения.
  2. ReportBox - Машина, которая содержит базы данных создания отчетов и логику. Рабочий SQL Server 2008 R2
  3. OLTPBox - Машина, которая содержит базу данных OLTP. Выполнение SQL Server 2014

Поскольку OLTPBox является нестабильной тестовой средой (он регулярно разъединяется и восстанавливается), мы должны сделать как можно больше работы за пределами того контекста. Таким образом, у меня есть сценарий SQL (назовите его InsertScript.sql) это в основном делает следующее:

INSERT INTO testresults VALUES (SELECT * from OLTPBox.prod.dbo.results)

OLTPBox в сценарии является связанным сервером.

Вышеупомянутый сценарий перенесен в вызов SQLCMD, который выполняется на JumpBox:

SQLCMD -i .\InsertScript.sql -S ReportBox -D Reporting

Однако, когда я выполняю это, я получаю следующую ошибку:

Msg 18456, Level 14, State 1, Server OLTPBox, Line 1 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

Контекст, который я выполняю как на JumpBox, существует как DBO ко всем соответствующим базам данных и всем 3 из серверов, таким образом, я не уверен, почему он теряет контекст при попытке использовать Связанный сервер. Все три из машин находятся на том же домене и находятся на самом деле даже в той же подсети (таким образом, они аутентифицируют использование того же DC).

Что продолжается здесь, почему контекст входа в систему потерял?

1
задан 21 July 2015 в 17:40
1 ответ

Убедитесь, что вы установили SPN на всех задействованных SQL серверах.

Обычно я делаю следующее:

setspn –A MSSQLSvc/myservername.fqdn:instancename DOMAIN\SQLServiceAccount
setspn –A MSSQLSvc/myservername.fqdn:port DOMAIN\SQLServiceAccount
setspn –A MSSQLSvc/myservername:instancename DOMAIN\SQLServiceAccount
setspn –A MSSQLSvc/myservername:port DOMAIN\SQLServiceAccount

Это должно уловить большинство возможных способов соединения

Вы можете проверить, работает ли оно, взглянув на таблицу sys.dm_exec_connections. Ищите Kerberos под auth_scheme. Это может занять несколько минут, если не попробовать перезапустить службы, соединяющиеся с вашим SQL.

.
0
ответ дан 4 December 2019 в 07:23

Теги

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