È possibile avere una stringa di connessione generalizzata per SQL Server e SQL Server Express?
-
06-07-2019 - |
Domanda
Ho un servizio WCF distribuito su una macchina. Questo servizio WCF può essere configurato su SQL Server o SQL Server Express.
NOTA: l'ubicazione del database SQL può essere un'altra macchina diversa da quella in cui è distribuito il servizio WCF.
Ho inserito le seguenti informazioni nel file XML:
- ID utente
- Password
- ServerName
- MachineName
In caso di SQL Server Express
La proprietà ServerName è " SQLEXPRESS " ;. Internamente aggiungo ServerName con MachineName in modo che serverName sia:
MachineName \ SQLEXPRESS
che viene passato alla stringa di connessione.
In caso di SQL Server
Quando passo NomeServer a SQL Server, viene generata un'eccezione.
Per favore guidami per l'approccio migliore !!
Soluzione
Qual è l'eccezione? Inoltre non sono sicuro di quale sia la differenza tra ServerName e MachineName. Forse intendevi ServerName e InstanceName? Dovresti costruire la tua stringa in questo modo (pseudo codice, non ho idea di quale lingua stai usando):
DataSource = ServerName
If (InstanceName != "")
DataSource += "\" + InstanceName
Altri suggerimenti
È possibile utilizzare lo stesso formato di stringa di connessione per connettersi sia a SQL Server Express che alle versioni complete.
Assicurati solo di passare con la stringa corretta, qualcosa del genere sarebbe comune, per le installazioni DEFAULT.
Data Source=MachineName\SQLExpress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
e per SQL Server completo
Data Source=MachineName;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Il motivo più probabile è perché l'istanza di MSSQLSERVER è in esecuzione nell'istanza predefinita anziché in un'istanza denominata (che è ciò che fa SQL Express). Una soluzione è configurare un file delle proprietà locali che contiene la stringa di connessione specifica per l'ambiente. Quindi fai riferimento al file nel file di configurazione stesso o fai in modo che parte del processo di compilazione includa le informazioni nel file di configurazione.