La edición de base de datos de Visual Studio viene con una herramienta, vsdbcmd.exe, que debería permitirle a alguien implementar un archivo .dbschema (que es generado por el proyecto de base de datos en compilación) en una base de datos. Esto se logra mediante la construcción del primer guión, a continuación, ejecutarlo:Implementación de la base de datos (vsdbcmd.exe): se ignoran DatabaseName y DefaultDataPath?
vsdbcmd.exe/a: Implementar/cs: "Data Source = (local); Integrated Security = true; Pooling = false"/dsp: SQL/dd /model:"..\Database.dbschema "/ t: TargetDatabase = TargetDB /manifest:"..\Database.deploymanifest"
que se puede esperar que se pueda implementar la secuencia de comandos a un servidor de base de datos diferente sin problemas. Sin embargo, la ruta completa al archivo .mdf real está codificada en el script, junto con algunas otras referencias al databse original. O no hay una opción para controlar esto, o no puedo encontrarlo.
¿Alguien está usando esto? ¿Cómo se despliega? ¿Debería haber usado un tipo diferente de proyecto de base de datos (recuerdo haber tenido la opción de elegir entre "Proyecto de base de datos" y "Proyecto de servidor", pero no sé si eso importa)?
EDITAR
puedo anular los .sqlcmdvars muy bien, pero esto no resuelve el problema. Este es un extracto del archivo sql generada mediante un comando como el anterior:
GO
:setvar DatabaseName "TargetDB"
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\"
lo que existe la base de datos destino "TargetDB" se graba correctamente. Sin embargo, unas pocas líneas adicionales:
CREATE DATABASE [$(DatabaseName)]
ON
PRIMARY(NAME = [Original], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original.mdf', SIZE = 3072 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
LOG ON (NAME = [Original_log], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original_log.ldf', SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %)
donde Original.mdf es el nombre de la base de datos original (es decir, el PP, donde desplegamos durante el desarrollo, y que se encuentra en las propiedades del proyecto del proyecto de base de datos). Aquí es donde falla la implementación, ya sea porque esa ruta exacta puede ser diferente en la máquina de destino o en mi máquina porque esa db ya existe.
Estos valores parecen simplemente codificados en el script generado.
Genial. Aceptaré su respuesta porque creo que habría funcionado, pero no lo he comprobado. Desde entonces, he cambiado de trabajo :) –
El mismo problema, pero no tengo ningún archivo en este directorio. –