não pode se conectar ao sql server express do padrão sql server

1

... como meu título diz ... Não consigo me conectar à minha instância no sql server express do padrão sql server ... Eu tentei desativar a parede de disparo e o sqlbrowser verificado foi iniciado, mas por algum motivo eu não consigo conectar ao meu datbase ... chamado server_name \ sqlexpress ..

Eu tenho uma máquina virtual e um MS SQL Server 2008 R2 completo rodando nela ... e eu tenho vários outros vm rodando sqlexpress. eles correm bem e eu posso conectar a eles usando sqlexpress ... mas quando eu tento acessar do sqlserver ... Eu recebo este erro.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) (Microsoft SQL Server, Error: -1)

Pesquisando o erro, descobri isso

Error Number: -1 Severity: 20 State: 0

e finalmente isso ...

Program Location:

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

O Firewall está desligado na VM que está rodando o mssqlserver ... virei do firewall em um dos vm que está rodando o sqlexpress mas ainda assim recebo o erro ... alguém por favor me ajude ... obrigado

    
por EagleFox 11.10.2012 / 22:54

1 resposta

1

Certifique-se de ter o protocolo TCP ativado para a instância do banco de dados. A Microsoft fornece instruções detalhadas aqui .

Tanto para a resposta curta e simples ...

Para mim, a mensagem de erro implica que o SQL Server Standard não pode encontrar o nome do host no DNS, ele não pode interagir com o serviço sqlbrowser corretamente, o sqlbrowser não sabe sobre a instância por algum motivo ou o padrão não pode conecte-se à porta apropriada no computador Express.

O que podemos tirar da tabela são coisas como um nome de usuário incorreto, uma senha SQL incorreta ou um banco de dados padrão ausente, o que seria notado após a conexão. O processo de conexão não está indo longe o suficiente para uma falha como essas coisas acontecerem.

Estou assumindo que todas as suas VMs estão no mesmo servidor e que não precisamos nos preocupar com firewalls de hardware ou redirecionamento de NAT, pois as VMs estão todas na mesma rede virtual.

O que me impressiona é que você pode se conectar a partir do computador padrão para todos os computadores, exceto um Express. O que há de diferente nesse computador em particular? Eu presumo que o quebrado tem alguma funcionalidade de rede, como pode ver outros computadores. O computador com problema está em uma rede virtual diferente da dos outros computadores?

Algumas tarefas de solução de problemas: Primeiro, descubra qual é o endereço IP do computador Express.

Em seguida, conecte-se ao computador do SQL Server Standard usando os Serviços de Terminal, a Área de Trabalho Remota, o vSphere ou algo semelhante. Você pode fazer ping do SQL Server Standard para o SQL Server Express? Primeiro, tente pingar o nome do host para o computador Express e tente usar o IP. Se você puder efetuar ping por nome de host e por IP, verifique se o mostrado enquanto o ping pelo nome do host é o mesmo que o endereço IP atribuído ao computador Express. (Você pode estar fazendo ping em algum outro computador, tendo "sorte"). Se os números de IP forem diferentes, você poderá ter algum tipo de configuração incorreta de rede de seu hipervisor.

Se você não puder fazer ping por nome de host e receber um erro sobre o nome do host não ser encontrado, tente um nome de domínio totalmente qualificado. Se o seu nome de host for "express", tente "express.foo.com" ou o que parecer apropriado. Se algo funcionar, tente conectar-se à instância com isso como um nome de host.

Se você puder executar o ping por nome de host e os números de IP corresponderem, o computador Express deverá estar devidamente registrado no DNS.

Se você não conseguir executar ping com êxito pelo nome do host, mas pelo IP, tente conectar-se com o SSMS do computador padrão com o endereço IP do computador Express em vez do nome do host (ou seja, em vez de "hal9000 \ sqlexpress". "192.168.1.100 \ sqlexpress". Se isso funcionar, há algo com a rede.

Deixar isso em vigor não é uma boa solução a longo prazo porque os números de IP mudam com mais freqüência do que os nomes de host, mas pode ser OK para teste / desenvolvimento ou até que você descubra por que o computador Express não está no DNS. maneira que você acha que deveria ser.

Se o ping funcionar OK, você pode usar o SSMS no computador Standard para se conectar à instância no computador Express? Se você puder, o problema provavelmente tem a ver com como o servidor vinculado foi definido.

    
por 12.10.2012 / 00:54