質問

MSBUILDスクリプトの一部として、SQLのものをいくつか実行しようとしています(データベースのバック、データベースの復元、スクリプトファイルの実行)。 MSBuild拡張機能パックのSQL2008.Databaseタスクはこれを行う簡単な簡単な方法のように思えましたが、サーバーインスタンスまたはユーザー名とパスワードを指定する方法を見つけることができません。それがあなたが構築しているマシンのデフォルトインスタンスに限定されており、ユーザーMSBUILDが実行されているときに接続したいと思うのは難しいと思いますが、他に何もする方法が見つかりません。 これ 私が働いているドキュメントです。誰もがこれを行う方法を説明できますか、それとも別のアプローチを見る必要がありますか?

役に立ちましたか?

解決 2

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

他のヒント

使用できるユーザー名とuserPasswordプロパティがあります。

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

そのタスクには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">

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top