ASP.NET e SQL Server

venerdì 04 maggio 2007 - 16.12

Miko_d Profilo | Newbie

Ciao a tutti,

Mi è capitato un problema molto strano con la connessione ad un database MS Sql Server,
stò sviluppando un sito web in asp.net che appunto deve connettersi a questo database
che si trova in remoto, e per questo, la persona che gestisce il database mi ha inviato,
oltre a user e pass, anche un file .adp, un progetto di MS Access che mi permette da
remoto di avere un'interfaccia verso il database con cui posso creare, cancellare e
modificare dati e tabelle.

C'è da dire che non ho molta esperienza su Sql Server comunque, ho creato un
nuovo progetto con MS Visual Studio 2003 ed ho cominciato a fare qualche prova da
locale, utilizzando sia una connessione oledb, una odbc e poi una sqlclient ed tutti i tipi di
connessione funzionano.

Allora ho pubblicato qualche pagina del sito per provare la connessione tra in dominio
remoto ed il server sql e quì e successo il guaio perchè mi ritorna un messaggio di server sql
non trovato o accesso negato, cosa molto strana, allora ho provato a pubblicare su un'altro
dominio diverso da quello di prima e cosa altrettanto strana, da quì indovinate un po',
funziona perfettamente, a questo punto non so che fare oltre a contattare la persona che
gestisce il server, ho pensato di aprire un questo post.

Questo è il codice che uso per le connessioni:

Connessione OleDB
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Errore connessione OleDb

System.Data.OleDb.OleDbException: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied. at System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) at System.Data.OleDb.OleDbConnection.InitializeProvider() at System.Data.OleDb.OleDbConnection.Open() at StatusManager.login.ButtonAccedi_Click(Object sender, EventArgs e)



Connessione ODBC
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Errore connessione ODBC

System.Data.Odbc.OdbcException: ERROR [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.ERROR [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).ERROR [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute at System.Data.Odbc.OdbcConnection.Open() at StatusManager.login.Button3_Click(Object sender, EventArgs e)


Connessione SqlClient
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Errore connessione SqlClient

System.Data.SqlClient.SqlException: SQL Server does not exist or access denied. at System.Data.SqlClient.ConnectionPool.CreateConnection() at System.Data.SqlClient.ConnectionPool.UserCreateRequest() at System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) at System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) at System.Data.SqlClient.SqlConnection.Open() at StatusManager.login.Button1_Click(Object sender, EventArgs e)


Qualcuno ha idea della possibile causa di questo problema?
Ed eventualmente come risolverlo?

Saluti.

bluland Profilo | Guru

quindi da quello che vedo ti connetti tramite ip address,
questa è la stringa di connessione
Connect via an IP address

esempio
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;


verifica che non ci siano errori


saluti
--------------------
Vincenzo PESANTE

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!
>>
>Allora ho pubblicato qualche pagina del sito per provare la connessione tra in dominio
>remoto ed il server sql e quì e successo il guaio perchè mi ritorna un messaggio di server sql
>non trovato o accesso negato, cosa molto strana, allora ho provato a pubblicare su un'altro
>dominio diverso da quello di prima e cosa altrettanto strana, da quì indovinate un po',
>funziona perfettamente, a questo punto non so che fare oltre a contattare la persona che
>gestisce il server, ho pensato di aprire un questo post.

Non è che per caso il server su cui hai fatto la prima pubblicazione, ha un'installazione di sql server con una named instance?
Quando installi sql server, puoi decidere di usare l'installazione senza istanza (e quindi la connessiona va fatta verso il nome del server o il suo ip) oppure con (e quindi una cosa del tipo IPSERVER\NOME_ISTANZA).. L'unica cosa che mi viene da dirti è che sbagli i dati di connessione.. potrebbe essere l'istanza, potrebbe essere il data source ip sbagliato, o anche l'utente..
ma Concentrati sulla ConnectionString..
Alx81 =)

http://blogs.dotnethell.it/suxstellino

Miko_d Profilo | Newbie

Ciao e grazie per la risposta,

ho provato la stringa di connessione che mi hai postato ed effettivamente le cose sono un po' cambiate, è già qualcosa, adesso l'errore che ritorna la connessione è questo:

System.Data.SqlClient.SqlException: 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. (provider: TCP Provider, error: 0 - A socket operation was attempted to an unreachable host.) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Connect(Boolean& useFailoverPartner, Boolean& failoverDemandDone, String host, String failoverPartner, String protocol, SqlInternalConnectionTds connHandler, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject, Boolean aliasLookup) 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.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 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 StatusManager.login.Button1_Click(Object sender, EventArgs e)


Penso che oggi abbiamo battuto il record di errore più lungo.
Comunque già qualcosa si muove.
Altri suggerimenti?

Saluti.

alx_81 Profilo | Guru

>Ciao e grazie per la risposta,
>
>ho provato la stringa di connessione che mi hai postato ed effettivamente
>le cose sono un po' cambiate, è già qualcosa, adesso l'errore
>che ritorna la connessione è questo:
>
>System.Data.SqlClient.SqlException: 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.
>(provider: TCP Provider, error: 0 - A socket operation was attempted
>to an unreachable host.)
è un classico errore..
il problema è che il tuo SQL Server non è configurato per accettare connessioni remote..
quindi devi controllare un po' di cose:

1) spostati sul server su cui è installato SQL Server 2005 apri il Configuration Manager (dal menu avvio, sotto microsoft sql server 2005) seleziona "sql server network configuration" ed in seguito "protocols for MSSQLSERVER". A destra controlla che il protocollo TCP/IP sia attivato e se non lo è attivalo. Disattiva poi Named Pipes e Via.

2) seleziona a sinistra "SQL Native Client Configuration" e "Client Protocols" dando a TCP/IP la priorità successiva allo shared memory (rispettivamente Shared Memory 1 e TCP/IP 2)

3) sempre sullo stesso server vai sul menu avvio e seleziona questa volta SQL Server Surface Area Configuration (reperibile allo stesso percorso di prima sul menu avvio). Clicka in basso sulla voce ".. for services and connection". Scorri il treeview su MSSQLSERVER --> Database Engine --> Remote Connecton e spunta se già non lo è "Local and remote connection --> TCP/IP Only"

4) Riavvia il servizio di sql server (dal configuration manager, selezionando "SQL Server 2005 Services" e il servizio MSSQLSERVER a destra, premendo l'apposito tasto di riavvio in alto nella barra degli strumenti

18x22 0Kb
)

funziona così?

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Miko_d Profilo | Newbie

Per quanto riguarda la named instance, non ho idea anche perchè non sono io che gestisco il server SQL e non posso modificarne personalmete la configurazione comunque, se fosse stato così, non avrebbero dovuto fornirmi anche il NOME_ISTANZA?

In ogni caso c'è sempre il fatto che da un altro dominio che ho utilizzato per fare una prova, naturalmente usando la stessa connessione, funziona tutto regolarmente.

Saluti.

alx_81 Profilo | Guru

>Per quanto riguarda la named instance, non ho idea anche perchè
>non sono io che gestisco il server SQL e non posso modificarne
>personalmete la configurazione comunque, se fosse stato così,
>non avrebbero dovuto fornirmi anche il NOME_ISTANZA?
sì, avrebbero dovuto farlo..
>
>In ogni caso c'è sempre il fatto che da un altro dominio che
>ho utilizzato per fare una prova, naturalmente usando la stessa
>connessione, funziona tutto regolarmente.
Appunto.. se uno va e l'altro ti ritorna l'errore che hai indicato, per forza di cose deve esserci qualcosa che nega la connessione remota al SQL Server..
>
>Saluti.

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Miko_d Profilo | Newbie

Una cosa però non riesco a capirla, entrambi i domini su cui ho provato sono in remoto rispetto al MS SQL Server, allora perchè da uno funziona e dall'altro no?

Saluti.

alx_81 Profilo | Guru

>Una cosa però non riesco a capirla, entrambi i domini su cui
>ho provato sono in remoto rispetto al MS SQL Server, allora perchè
>da uno funziona e dall'altro no?
Se per tutti e due i casi le connection string sono corrette ed in un caso funziona mentre nell'altro no, con quel messaggio di errore, deve essere il problema che ti ho indicato..
ma sono provider pubblici famosi che ti consentono di pubblicare il tuo database? tipo aruba?
oppure sono in remoto rispetto a te, ma non sono pubblici?
perchè l'errore che ricevi, è molto chiaro.. sql non accetta le connessioni remote..
>
>Saluti.

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Miko_d Profilo | Newbie

Allora il dominio dove il tutto funziona si trova su un server di un fornitore di hosting pubblico (noamweb), il dominio dove invece non funge ed il server MSSQL sono privati e sono gestiti internamente all'azienda che mi ha commissionato il lavoro.
A questo punto, mi basta sapere che il problema dipende da loro e quindi deve occuparsene il loro amministratore di sistema.
Io ci ho provato ma sembra che non se ne esca, a meno di non poter mettere le mani sulla configurazione del Server MSSQL.

Saluti.

alx_81 Profilo | Guru

>A questo punto, mi basta sapere che il problema dipende da loro e quindi deve occuparsene il loro amministratore di sistema.
Direi che potenzialmente, da quanto sembra, è il loro..

>Io ci ho provato ma sembra che non se ne esca, a meno di non poter mettere le mani sulla configurazione del Server MSSQL.
Con quell'errore, a mio avviso faresti bene a dargli le istruzioni che ti ho fornito prima, punto per punto..
poi riscrivi pure, che cerchiamo di venirne fuori, ok?
>
>Saluti.
Ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Miko_d Profilo | Newbie

Problema risolto, ho contattato l'amministratore che mi ha fornito sia il nome del server che l'indirizzo ip interno, infatti i due server quello ftp e quello MSSQL sono sulla stessa rete, quindi utilizzando o l'ip o il nome del server, il tutto funziona.



Saluti.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5