SQL Server para a configuração do servidor vinculado do sql server

25

Explique o que é necessário para configurar um servidor vinculado ao SQL Server.

O servidor A é apenas logins de janelas do SQL 2005 O servidor B é o mesmo (somente logins de janelas do SQL 2005)

O servidor A executa o Windows XP Servidor B executa o Windows Server 2003

Ambos os serviços do SQL Server estão sendo executados na mesma conta de domínio. Estou conectado à minha estação de trabalho com uma conta de domínio que possui direitos administrativos em ambos os SQL Servers.

Note que estes são ambos o SQL Server 2005 SP2 - Eu tive os hotfixes antigos apontados para mim, mas eles já foram aplicados.

O problema que estou tendo é este erro: "Falha de login do usuário 'NT AUTHORITY \ ANONYMOUS LOGON'. (Microsoft SQL Server, Erro: 18456)"

    
por ScottStonehouse 28.08.2008 / 19:13

9 respostas

18

Da minha compreensão desta questão, é uma questão de "HOP".

i.e. você está tentando usar o servidor A para retransmitir seus detalhes de login (com SSPI) para o Servidor B.

No SQL Server 2005, eles adicionaram uma carga inteira de problemas de segurança que tornam isso mais difícil do que deveria ser. As palavras "Autenticação Kerberos" se tornarão o melhor da vida de muitos administradores de sistemas / DBAs. Ele é efetivamente usado para autenticação de passagem.

Aqui estão as noções básicas sobre o que você precisa. 1) Os servidores (A e B) precisam ser configurados no Active Directory (AD) com delegação para o Kerberos habilitado. (isso é definido através do painel de administração do seu diretório ativo)

2) A conta de serviço na qual seus SQL Servers são executados precisa ter a delegação ativada também (isso também é definido por meio do painel de administração do seu diretório ativo).  - se eles não estiverem sendo executados em uma conta de serviço, você precisará criar um.

3) Os Servidores precisam ter os SPNs definidos para a instância e o HOST e o nome da máquina. (Usando uma ferramenta chamada SetSPN nas ferramentas de suporte do Windows)

Ferramentas de suporte (SetSPN está neste conjunto) link

(Visão geral de como adicionar um SPN) link

4) Você pode precisar definir seu banco de dados como "confiável"

ALTER DATABASE SET confiável em

5) Depois de tudo isso, reinicie suas instâncias.

6) Em seguida, tente criar seu servidor vinculado novamente.

Finalmente, você pode testar sua conexão com o SQL Server. Isso deve funcionar bem se você tiver tudo configurado corretamente.

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

Isso informará seu tipo de autenticação de conexão.

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

Você deseja obter 'KERBEROS' aqui e não 'NTLM'.

É um declive escorregadio, KERBEROS e delegação de passagem, cumpri-lo e você acabará descobrindo.

Referências Kerberos link

link

link

Outras manifestações do problema link

link

link

Espero que tudo isso ajude.

    
por 07.10.2008 / 14:25
3

Você também pode usar o SSMS (SQL Server Management Studio) para gerenciar \ criar servidores vinculados, se estiver mais familiarizado com a GUI. Para fazer isso:

  1. Inicie o SSMS e conecte-se a uma das instâncias do SQL Server que você deseja vincular
  2. Expanda "Objetos de servidor" no Pesquisador de Objetos
  3. Clique com o botão direito do mouse em "Servidores vinculados" e escolha "Novo servidor vinculado"
  4. Na caixa de diálogo "Novo servidor vinculado", selecione "SQL Server" como o Tipo de servidor e insira a instância do SQL Server que você deseja vincular.
  5. Na página "Segurança", selecione como os usuários serão autenticados do servidor atual para o servidor vinculado. Você mencionou que ambos os servidores estão configurados para usar os logons do Windows. Se este for o caso, na seção rotulada "Para um login não definido na lista acima, as conexões serão:" Eu provavelmente escolheria a opção < em> "Seja criado usando o contexto de segurança atual do Login" .

Observe que isso pressupõe que os usuários que possuem logons no servidor A também possuam logons no servidor B.

    
por 28.08.2008 / 19:36
1

Estou enlouquecendo com o mesmo problema! Lembro-me de fazer isso com 2000 foi sempre fácil. Eu tenho todo o google e não consigo fazer isso funcionar. Exatamente a mesma configuração, ambos os servidores em execução em uma conta de domínio, a autenticação do Windows.

Estou tentando usar pipes nomeados em vez de TCP e, pelo menos, recebo um erro diferente:

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".

*/

Isso pode ter algo a ver com a ativação de pipes de nomes, mas eu posso conectar via sqlcmd do servidor A ao servidor B desta forma:

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

Se eu não use pipes nomeados, apenas faça:

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

Eu entendo isso:

Login failed for user NT AUTHORITY\ANONYMOUS LOGIN

[Editar] Iniciei uma discussão sobre o Sql Server Central sobre isso. Basicamente, você precisa fazer alguma configuração complicada relacionada à delegação do Kerberos para fazer isso funcionar.

link

Eu decidi apenas criar uma única conta Sql Login limitada para lidar com as consultas vinculadas. Eu odeio recorrer a isso, mas parece mais seguro do que as alterações que você precisa fazer para que ele funcione com o windows auth.

    
por 23.09.2008 / 13:36
0

Se você fizer uma pesquisa em sp_addlinkedserver e sp_linkedservers, receberá alguns exemplos. É bastante simples de configurar.

    
por 28.08.2008 / 19:16
0

Além disso, se você tiver o SQL Manager, poderá adicionar com sua GUI.

Basicamente, você precisa vincular os dois servidores pelos SPs mencionados por Tim, ou por meio da GUI e, em seguida, definir as regras de acesso (o que não é necessário se você usar a autenticação do Windows nos dois servidores).

    
por 28.08.2008 / 19:19
0

Eu sei que isso deve ser fácil, mas não está funcionando para mim - estou tendo problemas de segurança aqui. Então eu gostaria que alguém soletrasse os passos para mim.

Eu fiz isso no passado no SQL 2000 sem problemas.

    
por 28.08.2008 / 19:33
0

Então você pode vinculá-los, mas não pode executar uma consulta por causa de contas erradas?

O usuário do Windows que você tenta usar tem direitos para ler dados no servidor?

Uma vez também tive um problema porque a propriedade "data access" foi definida como false por algum motivo desconhecido.

Experimente também o que acontece se você definir um usuário explicitamente como outro usuário para o link.

(Tudo isso pode ser feito no SQL Manager.)

    
por 28.08.2008 / 19:40
0

Tim postou as etapas exatas que eu supus que eram as corretas. O passo 5 é a página de segurança. Eu seleciono "Ser feito usando o contexto de segurança atual do login".

Quando clico em OK, recebo o seguinte erro. Não sei por que está tentando usar o 'NT Authority \ Anonymous login'. Estou logado em minha estação de trabalho com minha conta de domínio que tem todos os direitos em ambos os servidores.

TITLE: Microsoft SQL Server Management Studio

"The linked server has been created but failed a connection test. Do you want to keep the linked server?"

------------------------------ ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)


Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. (Microsoft SQL Server, Error: 18456)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3068&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476

    
por 29.08.2008 / 14:57
0

Tente fazer isso enquanto estiver conectado localmente ao servidor, se fizer isso de uma máquina remota, talvez você não esteja enviando as credenciais adequadas.

    
por 04.11.2010 / 22:39