.net - utilizando las variables SqlCmd con el proveedor dbDacFx de MsDeploy
msdeploy command (2)
Estoy tratando de usar msdeploy usando el proveedor dbDacFx para implementar mi archivo dacpac. Este proyecto de base de datos usa una variable llamada Nombre de usuario para crear inicios de sesión y usuarios, etc. El valor para esto debe pasarse durante el tiempo de despliegue.
Así que estoy haciendo algo como ...
msdeploy.exe -verb:Sync -Source:dbDacFx="c:/dev/pmwuiservices/trunk/Build/database/Database.dacpac"-dest:dbDacFx="Data Source=localhost;Integrated Security=True;Database=UIConfig", -setParam:Kind=SqlCommandVariable,scope=dbDacFx,match=UserName,value="IIS AppPool/ASP.NET V4.0"
pero obtengo lo siguiente (y por cierto la url en el mensaje de error no existe)
Info: Adding MSDeploy.dbDacFx (MSDeploy.dbDacFx).
Info: Adding database (data source=localhost;integrated security=True;database=U
IConfig)
Info: Creating deployment plan: Pending.
Info: Verifying deployment plan: Pending.
Info: Deploying package to database: Pending.
Info: Creating deployment plan: Running.
Info: Initializing deployment (Start)
Info: Initializing deployment (Failed)
Info: Creating deployment plan: Faulted.
Info: Verifying deployment plan: Faulted.
Info: Deploying package to database: Faulted.
Error Code: ERROR_EXECUTING_METHOD
More Information: Could not deploy package.
Missing values for the following SqlCmd variables:UserName.
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXECUTING_M
ETHOD.
Error: Could not deploy package.
Error: Missing values for the following SqlCmd variables:UserName.
Error count: 1.
¿cómo puede un usuario SqlCmd variables con el proveedor DbDacFx en MSDeploy?
Gracias
Confirmaré que recibo el mismo error. El artículo de Ahmed Elsayed http://www.iis.net/learn/publish/using-web-deploy/dbdacfx-provider-for-incremental-database-publishing , además de tener errores tipográficos atroces, tampoco aborda las variables sqlcmd. Personalmente no pude encontrar la referencia "real" como uno normalmente esperaría, como la de dbSqlPackage . Además, encontré una variación anecdótica y alegórica inexplicada entre "-setParam: kind" y "-setParam: type". De nuevo, sin documentación que lo respalde y sin tener una solución de trabajo real, parece que el alcance puede ser un nombre de archivo (expresión regular). Dicho esto, también he visto fragmentos parciales mediante los cuales los autores definen el alcance como el proveedor al que se le asigna el parámetro. Las cosas de Richard me han funcionado en el pasado, así que me siento cómodo avanzando con su sugerencia.
El scope
de un parámetro SqlCommandVariable
debe ser el nombre de archivo al que lo está aplicando, no el proveedor:
msdeploy.exe -verb:sync ^
-Source:dbDacFx="c:/dev/pmwuiservices/trunk/Build/database/Database.dacpac"
-dest:dbDacFx="Data Source=localhost;Integrated Security=True;Database=UIConfig"
-setParam:kind=SqlCommandVariable,scope=Database.dacpac$,match=UserName,value="IIS AppPool/ASP.NET V4.0"