Дисфункциональный клон
Сервер базы данных был клонирован. Операционная система "Microsoft Windows XP Professional Version 2002 Service Pack 3"
, Среда запросов "Microsoft SQL Server 2008 Management Studio 10.0.4000.0"
,
После клонирования было замечено следующее поведение. При попытке подключения извне, но в том же домене, можно прочитать следующее сообщение об ошибке: "Cannot generate SSPI context. (.Net SqlClient Data Provider)"
,
Изнутри машины можно подключиться к серверу базы данных, используя "Microsoft SQL Server 2008 Management Studio"
Query Environment.
Тем не менее, при попытке запустить SQLCmd
инструмент командной строки, отображается следующая ошибка:
C:\<Directory>>SQLCmd -S DBA2\<Instance> -i C:\<Directory>\<FileName>.SQL
HResult 0x80090322, Level 16, State 1
SQL Server Network Interfaces: The target principal name is incorrect.
Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : Cannot generate SSPI context.
ServicePrincipalNames
устанавливаются следующим образом:
C:\PROGRA~1\SUPPOR~1>setspn DBA2
Registered ServicePrincipalNames for CN=DBA2,CN=Computers,DC=<Company>,DC=com:
VProRecovery Backup Exec System Recovery Agent 7.0/DBA2.<Company>.com
HOST/DBA2
HOST/DBA2.<Company>.com
Во время работы "C:\PROGRA~1\SUPPOR~1\ADSIEDIT.MSC"
Инструмент поддержки с компакт-диска Microsoft Windows XP Professional, мы можем увидеть ниже "ADSI Edit \ Domain [<Site>.<Company>.com] \ DC=<Company>,DC=com"
путь "CN=Computers"
лист. В своем "Properties"
диалоговое окно, внутри "Security"
вкладка под "Group or user names:"
список, есть "SELF"
запись. По нажатию "Advanced"
кнопка, "Advanced Security Settings for Computers"
диалоговое окно генерируется. На "Permissions"
вкладка, под "Permission entries:"
список, там также есть запись с именем "SELF"
, Нажав "Edit..."
кнопка, "Permission Entry for Computers"
диалоговое окно отображается. На его "Properties"
вкладка, в "Permissions:"
В списке нет записей для "Read ServicePrincipalName"
разрешение и для "Write ServicePrincipalName"
разрешение.
Это может быть причиной сбоя следующей команды:
C:\PROGRA~1\SUPPOR~1>setspn -r DBA2
Registering ServicePrincipalNames for CN=DBA2,CN=Computers,DC=<Company>,DC=com
HOST/DBA2.<Company>
HOST/DBA2
Failed to assign SPN to account 'CN=DBA2,CN=Computers,DC=<Company>,DC=com', 0x2098
Даже если бы были разрешения для сброса ServicePrincipalName
на клонированном сервере баз данных, это решит соединение как из SQLCmd
а со стороны машины, внутри одного домена?
1 ответ
На самом деле, да, это решило проблему после того, как правильные разрешения были установлены в нужном месте.
ServicePrincipalNames
должен был быть установлен на SQL
пользователь, следующим образом:
C:\PROGRA~1\SUPPOR~1>setspn -a mssqlsvc/dba2:1433 <Company>\<UserName>
Registering ServicePrincipalNames for CN=<UserName>,OU=Reporting Security,OU=Security Groups,OU=Romania,DC=<Company>,DC=com
mssqlsvc/dba2:1433
Updated object
C:\PROGRA~1\SUPPOR~1>setspn -a mssqlsvc/dba2.<Company>.com:1433 <Company>\<UserName>
Registering ServicePrincipalNames for CN=<UserName>,OU=Reporting Security,OU=Security Groups,OU=Romania,DC=<Company>,DC=com
mssqlsvc/dba2.<Company>.com:1433
Updated object
C:\PROGRA~1\SUPPOR~1>setspn -l dba2
Registered ServicePrincipalNames for CN=DBA2,OU=Romania Machines,OU=Romania,DC=<Company>,DC=com:
VProRecovery Backup Exec System Recovery Agent 7.0/DBA2.<Company>.com
HOST/DBA2
HOST/DBA2.<Company>.com
C:\PROGRA~1\SUPPOR~1>setspn -l <UserName>
Registered ServicePrincipalNames for CN=<UserName>,OU=Reporting Security,OU=Security Groups,OU=Romania,DC=<Company>,DC=com:
MSSQLSvc/DBA2.<Company>.com:<Company>_RO
mssqlsvc/dba2.<Company>.com:1433
mssqlsvc/dba2:1433
Надеюсь, это может помочь кому-то, кто может столкнуться с той же проблемой.