Pregunta

Estoy tratando de hacer algunas cosas de SQL (respaldar una base de datos, restaurar una base de datos, ejecutar algunos archivos de script) como parte de un script MSBuild. La tarea SQL2008.Database del paquete de extensión MSBuild parecía ser una buena manera fácil de hacerlo, sin embargo, no puedo encontrar una manera de especificar una instancia de servidor o nombre de usuario y contraseña. Me resulta difícil creer que se limite a la instancia predeterminada en la máquina en la que está construyendo y desea conectarse a medida que el usuario MSBuild se está ejecutando, pero no puedo encontrar una manera de hacer otra cosa. Este es la documentación de la que estoy trabajando. ¿Alguien puede explicar cómo hacer esto o necesito mirar un enfoque diferente?

¿Fue útil?

Solución 2

Descubrí que el MSBuild.ExtensionPack.BaseTask La clase tiene las propiedades MachineName UserName y UserPassword. SQL2008.Database La clase hereda de esta clase. Estoy acostumbrado a la documentación de estilo MSDN donde los miembros heredados están documentados en la clase derivada, por lo que no pensé en buscarlos allí, aunque debería haberlo hecho. Sin embargo, parece un lugar extraño para ellos, ya que no tienen sentido en el contexto de muchas de las otras clases que heredan de MSBuild.ExtensionPack.BaseTask.

Otros consejos

Hay propiedades de Nombre de usuario y UserPassword que puede usar:

<MSBuild.ExtensionPack.Sql2008.Database 
MachineName="$(SQLServer)" 
TaskAction="Backup" 
DatabaseItem="$(SQLDatabaseName)" 
DataFilePath="$(SQLBackupLocation)" 
UserName="$(SQLUserName)"
UserPassword="$(SQLPassword)" />

¿No tiene esa tarea al miembro de MachineName? Creo que ese es solo el nombre de instancia de SQL que necesitas.

Utilizo la tarea msbuild.extensionpack.sqlserver.sqlexeCute y una instrucción SQL para hacer todo lo demás, por ejemplo,

<MSBuild.ExtensionPack.SqlServer.SqlExecute TaskAction="ExecuteReader"
                                                Sql="RESTORE DATABASE $(DatabaseName) FROM  DISK = N'$(RestoreFileDestination)\Source\$(Branch)\Build\$(DatabaseFile)' WITH FILE = 1,MOVE N'Accelerate' TO N'$(dataDir)\$(DatabaseName)_1.LDF', MOVE N'Accelerate_log' TO N'$(logsDir)\$(DatabaseName)_2.LDF', NOUNLOAD, REPLACE, KEEP_CDC, STATS = 10"
                                                ConnectionString="Data Source=Localhost\SQLExpress;Initial Catalog=master;Integrated Security=True"
                                                CommandTimeout="660">

Nunca pensarían en todas las opciones que parece necesitar ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top