Question

Je suis en train de faire des choses SQL (retour d'une base de données, restaurer une base de données, exécuter des fichiers de script) dans le cadre d'un script MSBuild. La tâche Sql2008.Database du pack d'extension MSBuild semblait être une belle façon facile de le faire, mais je ne peux pas trouver un moyen de spécifier une instance de serveur ou nom d'utilisateur et mot de passe. Je trouve difficile de croire qu'il est limité à l'instance par défaut sur la machine que vous compilez et que vous souhaitez connecter en tant qu'utilisateur MSBuild est en cours d'exécution, mais je ne peux pas trouver un moyen de faire quoi que ce soit d'autre. Cette est la documentation I je travaille à partir. Quelqu'un peut-il expliquer comment faire ceci ou ai-je besoin de regarder une approche différente?

Était-ce utile?

La solution 2

J'ai découvert que la classe MSBuild.ExtensionPack.BaseTask a la MachineName et UserName des propriétés. hérite de la classe UserPassword de cette classe. Je suis habitué à la documentation de style MSDN où les membres hérités sont documentés sur la classe dérivée donc je ne pensais pas à les chercher là-bas, bien que je devrais avoir. Il ne semble un endroit étrange pour eux si, comme ils sont dénués de sens dans le contexte de la plupart des autres classes qui héritent de SQL2008.Database.

Autres conseils

Il y a des propriétés UserName et UserPassword vous pouvez utiliser:

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

Doesnt cette tâche ont le membre MachineName? Pensez c'est juste le nom d'instance SQL dont vous avez besoin.

J'utilise la tâche MSBuild.ExtensionPack.SqlServer.SqlExecute et une instruction SQL pour faire tout le reste par exemple.

<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">

Ils ne l'avait jamais penser à toutes les options i semblent avoir besoin ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top