2012-06-03 19 views
5

En los últimos días finalmente estuve estudiando cómo conectar mi aplicación C# (estoy usando Visual Studio 2010 Express) a mi SQL Server 2008 R2 base de datos utilizando Entity Framework y estoy totalmente atascado.Visual C# y SQL Server no funcionan correctamente // el archivo ya está en uso

Cuando Quiero añadir un nuevo origen de datos en VS acabo de encontrar el camino de mi archivo db y cuando por fin lo encuentro e intento para seleccionarlo, que me tira un error que muestra

este archivo Esta en uso. Ingrese un nuevo nombre o cierre ese archivo, que es utilizado por otra aplicación

Eso me suena a tonterías porque no estaba usando mi archivo de base de datos durante dos días. Así que después de buscar en Google finalmente encontré una solución e ingresé al Administrador de configuración de SQL Server y reinicié mi único servidor SQL.

Entonces mi conexión DataSource finalmente funciona y estaba pensando que ahora soy inmejorable y escribiré mi código hasta el final de los días, pero después de unos minutos tuve otro problema: O (el motivo por el que estoy escribiendo aquí).

Cuando uso cualquier parte de SQL Server en mi aplicación VS entonces mi SQL Server deja de funcionar. No puedo navegar por la base de datos allí, no puedo cambiar nada, no puedo usar la consulta, simplemente nada. Simplemente me dice que esta base de datos ya está en uso.

Es lo mismo cuando lo hago de la manera opuesta.

Reinicio SQL Server a través del Administrador de configuración del servidor SQL (para poder usar SQL Server nuevamente) y luego, por ejemplo, uso mi tarea de consulta DB SELECT * FROM nameDatabase.

Luego intenté depurar mi aplicación C# donde tengo un combobox en el que SQL Server tiene que rellenar algunos nombres y me da el error de que no se puede acceder a SQL Server. (No puedo decirle el error exacto en este momento, pero después de buscar en Google descubrí que eso significa que SQL Server no es accesible).

Si alguien quiere ver ese código, entonces es:

using (var entities = new PropertyDatabaseEntities()) 
{ 
    var userNames = entities.Login 
       .Select(login => login.Username) 
       .ToArray(); 

    comboboxLogin.Items.Clear(); 
    comboboxLogin.Items.AddRange(userNames); 
} 

Pero cuando reinicio de SQL Server y vuelve esta depuración antes de usar cualquier cosa de SQL Server funciona.

Algunas personas me decían que no estoy cerrando mis conexiones, pero eso no puede ser cierto porque incluso cuando uso SQL Server primero, sigo sin poder usar la conexión entre VS y SQL Server.

Estoy realmente atascado.

* Cadena de conexión

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Login.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Property.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings> 
</configuration> 
+0

La forma en que ha codificado la instrucción USING significa que la conexión se gestionará correctamente y se cerrará. –

+0

¿Puedes publicar tu cadena de conexión? –

+0

_ "Este archivo ya está en uso. Ingrese un nuevo nombre o cierre ese archivo, que es utilizado por otra aplicación." _ No es un error conocido. ¿Cuál es el error exacto y en qué líneas sucede eso? – CodeCaster

Respuesta

1

Trate de usar el nombre lógico en lugar del nombre de archivo/camino en la cadena de conexión. I THINK La característica 'AttachDbFileName =' es para la edición EXPRESS de SQL Server. Pero al menos no se sugiere para producción, y simplemente no es la forma recomendada de establecer una conexión.

lugar de nombre de archivo y la ruta

Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot 

Pruebas a nombre lógico

server = localhost \ SQLEXPR5; Database = yourdatabase; ID de usuario = sa; contraseña =;

Tome un vistazo a www.connectionstrings.com

2

AttachDBFileName es única para SQL Express. La base de datos es simplemente el nombre de la base de datos a usar, no tiene ninguna connotación adicional. Para cualquier servidor de producción, lo más probable es que no use AttachDBFilename. Es estrictamente útil para el desarrollo y la experimentación en modo de usuario único.

Había que cambiar la fuente de datos =. \ SQLEXPRESS en el servidor de producción y eliminar AttachDBFileName sección de la cadena de conexión

espero que le ayudará.

Cuestiones relacionadas