Problema con Connessione a SQL Server in LAN

martedì 14 novembre 2006 - 19.01

franksnet Profilo | Newbie

Salve,

ho realizzato un piccolo software in VB .NET 2005 che accede ad un database SQL Server 2005 (Express Edition), e ha anche alcune funzioni che necessitano di scrivere file sull'hard disk. Il tutto funziona correttamente se devo usarlo in locale, ora però volevo provare a farlo girare anche da una postazione all'interno della LAN, ma non son riuscito. Premesso che ho abilitato SQL Server a ricevere connessioni dalla rete, ho tentato 2 vie:

Dal client ho fatto un collegamento al pc su cui è installato programma e sql server, ottenendo questo messaggio come risposta:

System.Security.SecurityException: Request for the permission of type
'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.
0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Allego anche l'immagine dell'errore.

437x404 33Kb


Allora ho provato un altra strada; ho copiato il programma sul client e l'ho fatto eseguire da li, cercando di modificare la stringa di connessione nel file .config, ugualmente senza fortuna, ma con un messaggio d'errore diverso:

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: SQL
Network Interfaces, error: 26 - Error Locating Server/Instance
Specified)

Mi vien da pensare di aver sbagliato stringa di connessione, visto che ho configurato SQL Express x consentire l'accesso da remoto; la stringa per l'accesso locale, che funziona, è questa:

<connectionStrings>
<add name="Demo.My.MySettings.DemoConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Demo.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
providerName="System.Data.SqlClient" />
<add name="Demo.My.MySettings.Demo" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Demo.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>

Io ho provato a sostituire .\SQLEXPRESS con NOMESERVER\SQLEXPRESS lasciando il resto invariato... è corretto? Come posso risolvere?
Grazie!

P.S. Qual'è il metodo corretto e consigliabile per fare ciò che devo fare?! è la prima volta che provo a usare in LAN un applicazione!

lbenaglia Profilo | Guru

>Allora ho provato un altra strada; ho copiato il programma sul
>client e l'ho fatto eseguire da li, cercando di modificare la
>stringa di connessione nel file .config, ugualmente senza fortuna,
>ma con un messaggio d'errore diverso:
>
>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:
>SQL
>Network Interfaces, error: 26 - Error Locating Server/Instance
>Specified)

Questa è la strada giusta
Per configurare le connessioni remote dai una bella lettura al seguente thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=10971

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

franksnet Profilo | Newbie

Grazie per la risposta, ora provo a vedere ... però non capisco xke ottengo l'errore anke mettendo NOMESERVER\SQLEXPRESS ... devo cambiare anke qualcos'altro?come mi devo comportare con il parametro attachDbFilename ? che path ci devo mettere?

Dopo aver letto il thread che hai linkato mi è venuto anche un dubbio: se ho ben capito li si dice che l'ideale è installare SQL server anche sul client, e connetto all'SQL Server installato sul Client il database che mi serve che risiede sul server... non è un passaggio parecchio complicato dal punto di vista di gestione e amministrazione per programmi così semplici? che vantaggio può dare una soluzione del genere?

Altro dubbio... usando questo metodo presumo che se aggiorno il programma sul server non venga automaticamente aggiornato sul client, percui dovrei provvedere manualmente ... non c'è modo di far partire il programma direttamente dall'eseguibile del server così anche il client usa sempre la versione aggiornata?

lbenaglia Profilo | Guru

>Grazie per la risposta, ora provo a vedere ... però non capisco
>xke ottengo l'errore anke mettendo NOMESERVER\SQLEXPRESS ...
>devo cambiare anke qualcos'altro?come mi devo comportare con
>il parametro attachDbFilename ? che path ci devo mettere?
Se hai letto il thread che ti ho suggerito troverai le risposte a queste domande...

>Dopo aver letto il thread che hai linkato mi è venuto anche un
>dubbio: se ho ben capito li si dice che l'ideale è installare
>SQL server anche sul client,
Assolutamente no!!
Sul client è sufficiente avere il provider OLEDB oppure il nuovo SNAC per connettersi all'istanza remota.
Rileggi tutto dall'inizio e segui paso passo i vari passaggi per configurare l'istanza ad accettare connessioni remote.

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

franksnet Profilo | Newbie

Ho riprovato ... SQL Server 2005 Express è configurato alla virgola secondo quanto indicato nel link da te riportato, incluso l'aspetto del firewall, e ho modificato così la stringa di connessione:

<connectionStrings>
<add name="Demo.NET.My.MySettings.DemoConnectionString" connectionString="Provider=SQLNCLI;Server=ServerXP\SQLExpress;Database=Demo;Trusted_Connection=yes;"
providerName="System.Data.SqlClient" />
<add name="Demo.NET.My.MySettings.Demo" connectionString="Provider=SQLNCLI;Server=ServerXP\SQLExpress;Database=Demo;Trusted_Connection=yes;"
providerName="System.Data.SqlClient" />
</connectionStrings>

E mi da il messaggio d'errore
"System.ArgumentException: Keyword not supported: 'provider'."

Se invece uso come stringa

"Data Source=ServerXP\SQLEXPRESS;Initial Catalog=Demo;Integrated Security=SSPI"

oppure

"Data Source=ServerXP\SQLEXPRESS;Initial Catalog=Demo;User Id=myUsername;Password=myPassword;"

dove myUserName e myPassword sono un nome utente e uno password appositamente creati in SQL Server, in entrambi questi casi continuo ad ottenere il messaggio precedente, ovvero:

"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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"

Dove sbaglio? La stringa di connessione è giusta?
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5