AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 132313
Accepted
NateJ
NateJ
Asked: 2016-03-16 11:55:06 +0800 CST2016-03-16 11:55:06 +0800 CST 2016-03-16 11:55:06 +0800 CST

SQL Server 2008R2 Alias ​​não está funcionando

  • 772

Eu tenho uma situação interessante aqui. Estamos basicamente tentando migrar alguma infraestrutura do SQL Server para um novo hardware, e uma das caixas (instância única, cluster de 2 nós) está executando 2008R2. Os outros são 2012 e 2014, mas não apresentam esse problema.

Há um aplicativo que se conecta a um servidor chamado, digamos, "OLD-SQL"; e digamos que o IP seja 11.22.33.44. Este é o nome da caixa SQL herdada que executa a instância padrão, SQL 2008R2 e Windows Server 2008R2. A configuração/config/string/qualquer coisa da conexão do aplicativo não pode ser alterada no momento.

A nova caixa SQL definida para substituir aquela é denominada, digamos, "NEW-SQL"; e digamos que seu IP seja 11.22.33.55. Também executando SQL 2008R2 (mesma compilação SQL). O sistema operacional é o Windows Server 2012 R2 (sistema operacional mais recente). Ambas as caixas são, na verdade, instâncias em cluster com 2 nós cada (cluster de failover antiquado, nada sofisticado).

Portanto, para ajudar na migração, por enquanto, para fins de teste/QA, fizemos o seguinte: 1. Configure o arquivo Hosts na máquina de controle de qualidade do cliente para redirecionar o nome "OLD-SQL" para 11.22.33.55 (novo servidor). 2. Criei um SQL Server Alias ​​no servidor NEW-SQL (usando SQL Config Mgr.), denominado "OLD-SQL", apontando para si mesmo , porta 1433, protocolo TCP/IP.

Para testar, tento conectar via SSMS; Eu insiro "OLD-SQL" como o nome do servidor ao qual me conectar. Ele falha com o infame erro "SSPI context" ( https://support.microsoft.com/en-us/kb/811889 ). A mesma coisa acontece com o aplicativo que está sendo testado. O ping da linha cmd resolve bem - ele sabe que "OLD-SQL" resolve para o novo IP 11.22.33.55 com base no arquivo Hosts.

Agora , para realmente jogar uma chave inglesa nas coisas. Volto para o servidor NEW-SQL e adiciono outro Alias, os mesmos parâmetros, mas com o nome "OLD-SQL2". Esse nome é exclusivo dentro da rede de domínio. Volto para minha caixa, altero meu arquivo Hosts para apontar desse nome para o IP (11.22.33.55), vou para o SSMS e tento conectar novamente. ISSO FUNCIONA!

Eu verifico se estou no "servidor certo" fazendo um SELECT @@SERVERNAME, e eis que diz "NEW-SQL". Mas é claro que esse não é o pseudônimo que eu realmente quero; Eu quero ser capaz de dar a ele o alias "OLD-SQL" e ter meu aplicativo redirecionado para "NEW-SQL" por meio da entrada Hosts e do SQL Alias.

Então, o que estou fazendo de errado com o primeiro alias? É só que não posso usar o mesmo nome de um servidor existente na rede, com 2008R2?

Postagem semelhante no SO: https://stackoverflow.com/questions/6406811/alias-not-working-on-sql-server-2008-r2 (não resolveu o problema)

PS: Digo "com 2008R2" especificamente, porque quando tento a mesma configuração (Hosts, SQL Alias) com nossas caixas 2012-2014, elas funcionam muito bem da primeira maneira! (Ou seja, o Alias ​​na caixa "NEW-SQL2012" pode ser "OLD-SQL2012", que é o mesmo de um servidor existente e sem problemas de conexão nem nada.)

PPS: Eu li sobre esses aliases serem mais do lado do cliente, mas é por isso que estou usando o truque do arquivo Hosts. Quando estivermos prontos para a migração "real", vamos usar DNS e outros truques fora do meu conhecimento (esse é o domínio do SysEng) para fazer o redirecionamento de clientes (apps/computadores) para os novos servidores, mas eles disseram por enquanto , para teste, o arquivo Hosts é um bom substituto.

Atualização : A principal diferença entre os setups "funcionais" e os "não funcionais", além das versões do SQL Server, é o fato da antiga instância 2008R2 "SQL-OLD", quando eu conecto usando o setup "pristine" ( sem aliases ou hosts-file-redir.), usa a autenticação Kerberos . Quando me conecto por meio de um alias ou redirecionamento exclusivo, como "OLD-SQL2", ele é registrado como NTLM. E em TODOS OS OUTROS métodos de conexão de trabalho, também é NTLM. O que diabos o Kerberos está fazendo comigo??

sql-server sql-server-2008-r2
  • 1 1 respostas
  • 1373 Views

1 respostas

  • Voted
  1. Best Answer
    Aaron
    2016-03-31T20:14:45+08:002016-03-31T20:14:45+08:00

    Resumindo o que descobrimos no chat.

    Ao se conectar pela rede, se o Windows Server estiver registrado no Active Directory (AD) com um Service Principal Name (SPN), os clientes que tentarem se conectar com Autenticação Integrada obterão o token Kerberos do AD para o objeto AD que corresponde ao nome do servidor para anexar à autenticação. O Kerberos não será usado quando o servidor que está sendo conectado não tiver um SPN ou estiver sendo conectado usando autenticação SQL.

    Neste caso, como "OLD-SQL" ainda está registrado no AD e possui um SPN registrado spoofing, o DNS no arquivo do host local não funcionará ao usar a Autenticação Integrada/Windows, pois não há nada ajustando qual token é retornado/ usado de AD. Não parece haver uma maneira de fazer com que o cliente saiba usar o token Kerberos para "NEW-SQL" com o servidor "OLD-SQL" original ainda em serviço, exceto para remover o SPN "OLD-SQL" do AD para forçar a autenticação a voltar para NTLM. A falsificação do DNS funciona para aliases nos quais não são nomes de computador reais registrados no AD ou não possuem um SPN registrado, pois o AD não retorna um token para eles, portanto, a autenticação volta a usar NTLM.

    Referências

    Compreendendo as chaves Kerberos

    Registrando um SPN

    • 6

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve