0

MSBuildスクリプトの一部として、SQL関連の処理(データベースのバックアップ、データベースの復元、スクリプトファイルの実行)を実行しようとしています。MSBuild ExtensionパックのSql2008.Databaseタスクは、これを行うための非常に簡単な方法のように見えましたが、サーバーインスタンスまたはユーザー名とパスワードを指定する方法が見つかりません。ビルドしているマシンのデフォルトインスタンスに制限されており、ユーザーMSBuildが実行されているときに接続したいのですが、他に何もする方法が見つかりません。これは私が作業しているドキュメントです。誰かがこれを行う方法を説明できますか、それとも別のアプローチを検討する必要がありますか?

4

3 に答える 3

2

使用できるUserNameプロパティとUserPasswordプロパティがあります。

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

于 2012-05-04T10:47:32.733 に答える
1

MSBuild.ExtensionPack.BaseTaskクラスにプロパティMachineName UserNameとが含まれていることを発見しましたUserPasswordSQL2008.Databaseクラスはこのクラスを継承します。継承されたメンバーが派生クラスに文書化されているMSDNスタイルの文書化に慣れているので、必要なのにそこでそれらを探すことは考えていませんでした。から継承する他の多くのクラスのコンテキストでは意味がないため、彼らにとっては奇妙な場所のように見えますMSBuild.ExtensionPack.BaseTask

于 2011-09-06T11:52:54.027 に答える
0

そのタスクにはMachineNameメンバーがありませんか?必要なSQLインスタンス名だけだと思います。

タスクMSBuild.ExtensionPack.SqlServer.SqlExecuteとsqlステートメントを使用して他のすべてを実行します。

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

彼らは私が必要と思われるすべてのオプションを考えたことはありませんでした。

于 2011-09-05T14:40:15.833 に答える