13 messaggi dal 19 febbraio 2013
Buongiorno a tutti,

avrei una domanda che può sembrare stupida. Ho pubblicato un sito web fatto in asp.net, che mi da errore di connection ai dati, che sto cercando di risolvere. Ho inserito nel tracing della pagina il codice dell'errore, che riporto di seguito:

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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at StudioCocchi._Default.NewsPopulate() in D:\Local\Lavoro\Sviluppo\VS2010\Projects\StudioCocchi\StudioCocchi\Default.aspx.vb:line 274

Ho quindi notato che il percorso della pagina default.asp è riportato come locale, ossia quella che ha nel mio pc di sviluppo. Ma quando vengono compilate e pubblicate le pagine, il pathmapping non si modifica dinamicamente in funzione del server che ospita il sito web?

Grazie in anticipo per qualunque consiglio.

Saluti
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
è normale che sia così. E' il percorso che il file aveva all'atto della compilazione. E' un aiuto per te, come sviluppatore, che così puoi capire esattamente in che file e in che linea di codice intervenire per risolvere il problema che stai osservando.

I percorsi dei file si trovano nei file .pdb, che vengono generati quando compili l'applicazione in modalità Debug. Puoi decidere di non pubblicare il file .pdb ma, in caso di eccezione, non avrai tale ausilio. Per altre informazioni leggi questo:
https://en.wikipedia.org/wiki/Program_database

Quei percorsi non sono influenzati e non hanno nulla a che vedere con la posizione attuale delle tue pagine aspx.

Tornando al problema: sembra che la tua connection string sia errata. Magari funzionava sul tuo PC di sviluppo ma dopo aver messo l'applicazione in produzione ha smesso di funzionare. Dev'essere che il server di produzione non riesce a raggiungere quell'istanza di SQL Server, quindi presumo che per risolvere il problema tu debba usare un'altra connection string.
Magari fattela fornire dal database administrator, se nella tua azienda (o nell'azienda del tuo cliente) c'è qualcuno che ricopre quel ruolo.

ciao,
Moreno
Modificato da BrightSoul il 29 agosto 2017 19.50 -

Enjoy learning and just keep making
13 messaggi dal 19 febbraio 2013
Ciao Bright,

grazie della risposta.
Ho in effetti inserito nella traccia del sito un riferimento al percorso fisico della pagina ed ho verificato che risulta essere quelo del server online.

Tuttavia la connessione al database continua a darmi errore. Ho modificato il provider dal SQLClient a SQLOledb come indicato da register.it (modificando anche i controls nell'applicazione), provider su cui ho pubblicato il sito. Tuttavia continuo ad avere un messaggio di errore per la connection:


[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at StudioCocchi._Default.NewsPopulate() in D:\Local\Lavoro\Sviluppo\VS2010\Projects\StudioCocchi\StudioCocchi\Default.aspx.vb:line 270

Ho contattato l'assistenza per email la quale mi risponde quanto segue:

*************
Gentile cliente,

la ringrazio per il riscontro.

La informo che il nuovo errore visualizzato richiamando http://studiococchi.oversightweb.com/ sembra ancora far riferimento ad un problema sulla connessione remota al database; all'interno del testo d'errore, risulta effettivamente presente un riferimento ad una pagina locale sul suo pc:

"at StudioCocchi._Default.NewsPopulate() in D:\Local\Lavoro\Sviluppo\VS2010\Projects\StudioCocchi\StudioCocchi\Default.aspx.vb:line 270"

E' pertanto possibile che sia stata configurata sul suo applicativo una connessione remota al database MSSQL, che tuttavia come indicato in precedenza non è permessa, oppure nella configurazione del sito è rimasto il riferimento a localhost, la invito pertanto cortesemente a verificare in tal senso:

https://support.microsoft.com/en-us/help/328306/potential-causes-of-the-sql-server-does-not-exist-or-access-denied-err

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a6d2fc79-1870-43c8-9493-3731def1835b/oledbexception-dbnetlibconnectionopen-connectsql-server-does-not-exist-or-access-denied?forum=sqldataaccess
**********************

Non riesco a capire cosa intendono quando dicono "sia stata configurata sul suo applicativo una connessione remota al database MSSQL, che tuttavia come indicato in precedenza non è permessa", nel senso che il codice e la connection string usati sono banalmente questi:

>
>------------------------------------
>Dim conn As New
>OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("COCCHI_co
>nn").ConnectionString)
>Dim sSQL As String
>sSQL = "SELECT TOP 3 * FROM News WHERE (Visible = 1 AND StartingDate <= GETDATE() AND ExpirationDate > GETDATE() ) ORDER BY NewDate DESC"
>
>Dim dt As New DataTable
>Dim dtAdapter As New OleDb.OleDbDataAdapter(sSQL, conn)
>dtAdapter.Fill(dt)
>--------------------------------------
>
>che nella release di debug funziona correttamente, utilizzando la
>seguente connectionstring
>
>--------------------------------------
><add name="COCCHI_conn" connectionString="Provider=SQLOLEDB;Data
>Source=SURFACE-BOB;Initial Catalog=COCCHIDB;Persist Security
>Info=True;User ID=SA;Password=********" ></add>
>--------------------------------------
>
>Mentre online da errore utilizzando la seguente connctionstring:
>
>---------------------------------------
><add name="COCCHI_conn" connectionString="Provider=SQLOLEDB;Data
>Source=hostingmssql03.register.it;Initial
>Catalog=oversightweb_com_studiococchi;User
>Id=oversightweb_com_studiococchi;Password=**********;" ></add>
>----------------------------------------
>

Qualche idea?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
se non riesci a collegarti, il problema è quasi sicuramente nella connection string ma può anche essere che ancora non ti hanno attivato il servizio database.


Ho modificato il provider dal SQLClient a SQLOledb come indicato da register.it

Non ho idea del perché te l'abbiano suggerito ma un motivo ci dev'essere.


risulta effettivamente presente un riferimento ad una pagina locale sul suo pc
[...]
E' pertanto possibile che sia stata configurata sul suo applicativo una connessione remota al database MSSQL, che tuttavia come indicato in precedenza non è permessa

Ignora questa cosa che hanno scritto. Sono stati tratti in inganno del percorso della pagina aspx e devono aver pensato che tu stessi lanciando l'applicazione web dal tuo PC, tentando di collegari al db che ti è stato messo a disposizione da register.it. E' per questo che parlano di "connessione remota".

Comunque, tornando al vero problema: la soluzione consiste nel configurare correttamente la connection string.
Secondo me puoi usare la SqlConnection. Prova le connection string che trovi in questo sito.

Se decidi di provare con SqlConnection:
https://www.connectionstrings.com/sqlconnection/standard-security/

Invece, per OleDbConnection (che come vedi è usato giusto per vecchissime versioni di Sql Server):
https://www.connectionstrings.com/microsoft-ole-db-provider-for-sql-server-sqloledb/

Assicurati di sostituire i dati fedelmente, così come te li hanno inviati via email all'attivazione del servizio database.

Se non riesci a venirne fuori, fatti mandare una connection string da loro.

ciao,
Moreno

Enjoy learning and just keep making
13 messaggi dal 19 febbraio 2013
Grazie mille della risposta.
Hanno in effetti passato il problema ai sistemisti, perchè a quanto pare l'help desk di primo livello non sembra capirci troppo...
Appena ho novità le pubblico.

Grazie ancora dell'interessamento

Roberto
13 messaggi dal 19 febbraio 2013
Ciao Moreno,

siamo arrivati alla conclusione. Era sbagliato il nome del server, perchè io avevo inserito "Data
Source=hostingmssql03.register.it" (come indicato dalle specifiche), mentre in realtà andava impostato "Data Source=hostingmssql03". Ci sono voluti 2 giorni di email con l'assistenza, ma alla fine ce l'abbiamo fatta... ;)

Grazie ancora

Roberto
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok Roberto, bene.
Quindi ti avevano comunicato loro il Data Source sbagliato?

ciao e buon weekend!

Enjoy learning and just keep making
13 messaggi dal 19 febbraio 2013
Come impostare la connection era indicato nell'area tecnica, in cui c'era una stringa di esempio. Mi ero basato su quella...

Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.