Налаштування сервера на SQL-сервері для установки на сервер sql


25

Поясніть, будь ласка, що потрібно для настройки сервера, пов’язаного з SQL Server.

Сервер A - це SQL 2005 тільки для входу в Windows Сервер B такий самий (лише для входу в Windows SQL 2005)

Сервер A запускає Windows XP Server B запускає Windows Server 2003

Обидві служби SQL Server працюють під одним обліковим записом домену. Я ввійшов на свою робочу станцію з обліковим записом домену, який має адміністративні права на обох серверах SQL.

Зауважте, це обидва SQL Server 2005 SP2 - у мене були вказані старі виправлення, але вони вже застосовані.

У мене виникає така помилка: "Не вдалося ввійти для користувача" NT AUTHORITY \ ANONYMOUS LOGON "(Microsoft SQL Server, Помилка: 18456)"

Відповіді:


18

З мого розуміння цього питання, це питання "HOP".

тобто ви намагаєтеся використовувати сервер A для передачі даних для входу (за допомогою SSPI) на сервер B.

У SQL Server 2005 вони додали цілий набір проблем безпеки, які роблять це складніше, ніж це повинно бути. Слова "автентифікація Kerberos" стануть основою життя більшості системних адміністраторів / DBA. Він ефективно використовується для проходження аутентифікації.

Ось основи того, що вам потрібно. 1) Сервери (A і B) потрібно налаштувати в Active Directory (AD) з включеним делегуванням для Kerberos. (це встановлено через активну панель адміністратора каталогу)

2) Обліковий запис служби, під яким працюють ваші сервери SQL, також повинен мати можливість делегування (це також встановлено через вашу активну панель адміністратора каталогів). - якщо вони не працюють під обліковим записом служби, вам потрібно створити його.

3) Сервери повинні мати SPN, визначені для екземпляра, а також HOST та ім'я машини. (Використання інструмента під назвою SetSPN в інструментах підтримки Windows)

Інструменти підтримки (у цьому наборі встановлено SetSPN) http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=en

(Огляд того, як додати SPN) http://technet.microsoft.com/en-us/library/bb735885.aspx

4) Можливо, вам доведеться встановити вашу БД "надійною"

АЛЬТЕР ДАТАБАЗИ НАДІЙТИ, надійна

5) Після того, як ви все це зробите, перезавантажте свої екземпляри.

6) Потім спробуйте створити зв'язаний сервер ще раз.

Нарешті, ви можете перевірити підключення до SQL Server. Це має спрацювати нормально, якщо у вас все правильно налаштовано.

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=ServerB;Integrated Security=SSPI;'
    ).MASTER.dbo.syscolumns

Це покаже вам тип аутентифікації підключення.

select auth_scheme from sys.dm_exec_connections where session_id=@@SPID

Ви хочете отримати "KERBEROS" тут, а не "NTLM".

Це слизький схил, КЕРБЕРОС та делегація проходу, дотримуйтесь його, і ви, зрештою, це зрозумієте.

Список літератури Kerberos http://blogs.msdn.com/sql_protocols/archive/2005/10/12/479871.aspx

http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx

Інші прояви проблеми http://www.sqlservercentral.com/Forums/Topic460425-359-1.aspx

http://msdn2.microsoft.com/en-us/library/aa905162(sql.80).aspx

http://msdn2.microsoft.com/en-us/library/ms189580.aspx

Я сподіваюся, що це все допомагає.


Чудова відповідь! Це, безумовно, підсумовує набір інформації, яка корисно організована в інших місцях.
КонстантинК

3

Ви також можете використовувати SQL Server Management Studio (SSMS) для управління \ створенням пов'язаних серверів, якщо вам зручніше з графічним інтерфейсом. Робити так:

  1. Запустіть SSMS і підключіться до одного з екземплярів SQL Server, який ви хочете підключити
  2. Розгорніть "Об'єкти сервера" в Провіднику об'єктів
  3. Клацніть правою кнопкою миші "Пов'язані сервери" та виберіть "Новий пов'язаний сервер"
  4. У діалоговому вікні "Новий пов'язаний сервер" виберіть "Тип сервера" як тип сервера та введіть екземпляр SQL-сервера, до якого ви хочете зв’язатися.
  5. На сторінці "Безпека" виберіть спосіб аутентифікації користувачів від поточного сервера до пов'язаного сервера. Ви згадали, що обидва сервери створені для використання входу в Windows. Якщо це так, у розділі "Для входу, не визначеного у списку вище, з'єднання будуть:" Я, мабуть, обрав би варіант, позначений "Зробити за допомогою поточного контексту безпеки входу" .

Зауважимо, що це передбачає, що користувачі, які мають вхід на сервер А, також мають вхід на сервер B.


1

Я горюсь з тією ж проблемою! Пам’ятаю, робити це з 2000 року завжди було просто. Я весь час google, і я не можу зробити це на роботі. Точна настройка, обидва сервери працюють на доменному акаунті, Windows auth.

Я намагаюся використовувати названі труби замість TCP, і принаймні я отримую іншу помилку:

EXEC sp_addlinkedserver 
    @server='statler', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='np:statler', 
    @provstr='Integrated Security=SSPI'

-- Then I try this:
select net_transport, auth_scheme 
from statler.master.sys.dm_exec_connections 
where session_id=@@spid

/*

Getting closer, but still fails:

OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Login timeout expired".
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "An error has occurred while establishing a connection to the server. 
    When connecting to SQL Server 2005, this failure may be caused by the 
    fact that under the default settings SQL Server does not allow 
    remote connections.".
Msg 5, Level 16, State 1, Line 0
Named Pipes Provider: Could not open a connection to SQL Server [5]. 
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Invalid connection string attribute".

*/

Це може бути пов’язане з включенням труб імен, але я можу підключитися через sqlcmd з сервера А до сервера B так:

WALDORF:>  Sqlcmd.exe /E /Snp:statler

Якщо я не використовую названі труби, а просто:

New Linked Server
Server Type: SqlServer
Security: be made using the current login's security context

Я отримую це:

Login failed for user NT AUTHORITY\ANONYMOUS LOGIN

[Редагувати] Я розпочав дискусію на Sql Server Central про це. По суті, вам потрібно виконати складну конфігурацію, пов’язану з делегуванням Kerberos, щоб зробити цю роботу.

http://www.sqlservercentral.com/Forums/Topic574262-146-1.aspx

Я вирішив просто створити єдиний обмежений обліковий запис для входу в Sql, щоб обробляти пов'язані запити. Я ненавиджу вдаватися до цього, але це здається більш безпечним, ніж ті зміни, які ви повинні внести, щоб змусити його працювати з windows auth.


Нижче див. Складні налаштування Kerberos. Цей матеріал вбив мене вже давно-довго!
злийхомер

0

Якщо ви здійснюєте пошук на sp_addlinkedserver та sp_linkedservers, ви отримаєте кілька прикладів. Це досить просто.


0

Також якщо у вас є SQL Manager, ви можете додати його графічним інтерфейсом.

В основному вам потрібно зв'язати два сервери або через SP, згадані Тімом, або через GUI, а потім встановити правила доступу (що навіть не потрібно, якщо ви використовуєте автентифікацію Windows на обох серверах).


0

Я знаю, що це має бути простим, але це зовсім не працює для мене - у мене тут проблеми безпеки. Тому я хотів би, щоб хтось прописав для мене кроки.

Я робив це в минулому на SQL 2000 без жодних проблем.


0

Отже, ви можете зв’язати їх, але не можете виконати запит через неправильні облікові записи?

Чи має користувач Windows, якого ви намагаєтеся використовувати, права на читання даних на обох серверах?

Одного разу у мене також виникла проблема, оскільки властивість "доступу до даних" з незрозумілої причини було встановлено на значення false.

Спробуйте також, що станеться, якщо ви явно встановите одного користувача іншому користувачеві для посилання.

(Все це можна зробити в SQL Manager.)


0

Тім опублікував точні кроки, які я вважав правильними. Крок 5 - сторінка безпеки. Я вибираю "Зробити за допомогою поточного контексту безпеки входу".

Коли я натискаю кнопку ОК, я отримую таку помилку. Я не знаю, чому він намагається використовувати "NT Authority \ Anonymous login". Я ввійшов на свою робочу станцію за допомогою свого облікового запису домену, який має всі права на обох серверах.

НАЗВА: Студія управління Microsoft SQL Server

"Зв'язаний сервер створений, але не вдалося перевірити з’єднання. Ви хочете зберегти пов'язаний сервер?"

------------------------------ ДОДАТКОВА ІНФОРМАЦІЯ:

Виняток стався під час виконання оператора або пакета Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


Помилка входу для користувача "NT AUTHORITY \ ANONYMOUS LOGON". (Microsoft SQL Server, помилка: 18456)

Щоб отримати допомогу, натисніть: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3068&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476


0

Спробуйте це зробити, поки ви локально ввійшли на сервер, якщо ви робите це з віддаленої машини, можливо, ви не надсилаєте належних облікових даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.