.net - studio - sql server 2017 localdb
¿Cómo crear manualmente un archivo mdf para que localdb lo use? (4)
Lo sé, vieja pregunta, pero me parece que la siguiente manera sigue siendo relevante y rápida. Estos son los pasos completos, pero en realidad solo la última parte es realmente relevante:
Prerrequisitos:
- Motor MS Sql LocalDb
- MS Sql Server Management Studio
Pasos:
- Abrir el símbolo del sistema
- Ejecute la
SqlLocalDb info
para listar las instancias de LocalDb instaladas actualmente. Debe haber al menosv11.0
para Sql Server 2012 / Visual Studio 2012 oMSSQLLocalDB
para Sql Server 2014 / Visual Studio 2015 - Abra Sql Server Management Studio, o muestre el cuadro de diálogo Connect si ya se está ejecutando
- Use el nombre del servidor
(localdb)/v11.0
o(localdb)/MSSQLLocalDB
, lo que le interese. Seleccione Autenticación de Windows - Crear una nueva consulta
Pegue la siguiente plantilla, adaptando su ruta y sus nombres según sea necesario:
CREATE DATABASE __YourDbName__ ON ( NAME=''__YourDbName__'', FILENAME=''YourDrive:/Your/path/to/data/files/__YourDbName__.mdf'')
Ejecutar consulta
- Actualizar lista de bases de datos de Object Explorer
En el Explorador de objetos, ahora debería ver el DB recién creado, mientras que en el Explorador de Windows, ahora debería ver los archivos .mdf
y .ldf
recién creados en la ruta especificada.
HTH
Estoy configurando algunas pruebas unitarias para probar el trabajo realizado con una base de datos. Me gustaría usar localdb v11 pero primero necesito crear la base de datos. ¿Cómo exactamente hago esto?
simplemente conectando con (localdb)v11
en sql Management Studio me conecta a la base de datos que (supongo) está en C:/Users/George/
. ¿Cómo especifico uno nuevo?
El código usa ADO.Net manual, no Entity Framework, por lo que yo sé, no puedo confiar en él para simplemente crear la base de datos.
No estoy seguro de lo que quiere decir con "manualmente". Agregaré una opción usando Visual Studio 2013 y LocalDb:
Abra el Explorador del servidor, haga clic con el botón derecho en Conexiones de datos, seleccione Crear nueva base de datos de SQL Server. Para "Nombre del servidor" use "(LocalDB) / v11.0".
Hay otra opción, como se describe here pero requiere la instalación de herramientas de datos de SQL Server. Una versión de las instrucciones para Visual Studio 2012 también está available .
Como también menciona SQL Server Management Studio, puede simplemente conectarse a la instancia de LocalDb y hacer clic con el botón secundario en Bases de datos y luego Crear, de la manera estándar. Es más o menos una instancia de SQL Server regular y todas las operaciones estándar funcionarán como siempre.
La creación de la base de datos también puede realizarse, obviamente, desde el código de la aplicación, pero eso requiere configurar los permisos de base de datos adecuados. Dependiendo de su entorno, puede ser o no una buena idea.
Si está buscando (como yo) una forma de hacerlo fuera de su código, puede considerar usar un script .bat para hacer eso. Lo mantengo en la solución como un archivo .txt que puedo usar cuando necesito configurar el entorno de desarrollo nuevamente.
LocalDB y SQLCmd
Este script supone que LocalDB está instalado. Todavía no he podido encontrar información clara al respecto, pero parece que se puede instalar con Visual Studio 2012 y 2015 si está utilizando el marco de entidad. Si este no es el caso, puede instalarlo desde un instalador independiente o desde la página de descarga rápida de SQL Server (puede elegirla como la descarga que desea. Más detalles aquí: ¿Cómo instalar localdb por separado?
SQLCmd se puede descargar de la misma manera desde el paquete de características SQLServer, busque SQLCmdlnUtility.msi. Aquí está el link para la versión 2012.
Es posible que deba cambiar el directorio LocalDbDir y SQLCmdDir si no tiene la misma versión que yo.
guión
:: Script to Create Local DB Instance and a database
::echo setting variables - Default Server is v11 but it may be useful to evolve in a server instance of your own...
SET localdDbDir=C:/Program Files/Microsoft SQL Server/120/Tools/Binn
SET sqlCmdDir=C:/Program Files/Microsoft SQL Server/120/Tools/Binn
SET SRV_NAME=your-dev-srv
SET DB_NAME=your-dev-db
SET DB_PATH=C:/CurDev/Temp
echo Creates the localDB server instance
pushd "%localdDbDir%"
:: uncomment those lines if you want to delete existing content
::SqlLocalDb stop %SRV_NAME%
::SqlLocalDb delete %SRV_NAME%
SqlLocalDb create %SRV_NAME%
SqlLocalDb start %SRV_NAME%
popd
echo Create the database intance
pushd "%sqlCmdDir%"
sqlcmd -S "(localdb)/%SRV_NAME%" -Q "CREATE DATABASE [%DB_NAME%] ON PRIMARY ( NAME=[%DB_NAME%_data], FILENAME = ''%DB_PATH%/%DB_NAME%_data.mdf'') LOG ON (NAME=[%DB_NAME%_log], FILENAME = ''%DB_PATH%/%DB_NAME%_log.ldf'');"
popd
echo completed
¡Espero que esto ayude!
Solo use la sentencia CREATE DATABASE
SqlConnection connection = new SqlConnection(@"server=(localdb)/v11.0");
using (connection)
{
connection.Open();
string sql = string.Format(@"
CREATE DATABASE
[Test]
ON PRIMARY (
NAME=Test_data,
FILENAME = ''{0}/Test_data.mdf''
)
LOG ON (
NAME=Test_log,
FILENAME = ''{0}/Test_log.ldf''
)",
@"C:/Users/George"
);
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
}