MSBuild 스크립트의 일부로 일부 SQL 작업 (데이터베이스 백업, 데이터베이스 복원, 일부 스크립트 파일 실행)을 시도하고 있습니다. MSBuild Extension 팩의 Sql2008.Database 작업은 서버 인스턴스 나 사용자 이름 및 암호를 지정하는 방법을 찾을 수 없지만이 작업을 수행하는 좋은 방법이었습니다. 나는 당신이 구축하고있는 컴퓨터의 기본 인스턴스에 제한되어 있으며 MSBuild 사용자가 실행 중일 때 연결하려고하지만 나는 다른 것을 할 수있는 방법을 찾을 수 없다고 생각하는 것이 어렵다고 생각합니다. This은 내가 작업하는 문서입니다. 누구든지이 작업을 수행하는 방법을 설명하거나 다른 접근 방식을 찾아야합니까?MSBuild ExtensionPack Sql2008.Database 작업
답변
은 내가 MSBuild.ExtensionPack.BaseTask
클래스는 속성 MachineName
UserName
및 UserPassword
을 가지고 있음을 발견했다. SQL2008.Database
클래스는이 클래스에서 상속받습니다. 나는 상속 된 멤버가 파생 된 클래스에 문서화되어있는 MSDN 스타일 문서에 익숙해 져 있으므로 반드시 찾아야한다고 생각했습니다. MSBuild.ExtensionPack.BaseTask
을 상속받은 많은 다른 수업의 맥락에서 의미가 없으므로 이상한 장소로 보입니다.
해당 작업에 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">
그들은 내가 필요로하는 것 모든 옵션을 생각 없었어요 ....
아니 그것의 MachineName이 없습니다. 위와 같이 SqlExecute 작업을 사용하여 찾고 있지만 백업/복원 옵션을 SQL 명령의 일부가 아닌 작업 정의의 일부로 가능한 Sql2008.Database 작업을 사용하는 것이 좋습니다. –
작업에서 도움말 :
OK 나는 여기에 정의 된 Database 클래스의 멤버를보고 있었다. http://www.msbuildextensionpack.com/help/4.0.1.0/html/2dfa8205-e7ff-59bb-771b-d107fd8cb0da.htm MachineName은 그 중 하나가 아닙니다. 그러나 그것은 내 문제의 특정 사용자 이름과 암호 부분에 도움이되지 않습니다. Windows 통합 인증을 사용할 수 없도록 도메인의 일부가 아닌 원격 SQL 서버에 대해 스크립트를 실행해야합니다. –
사용자 이름과 경우 userpassword 속성을 사용할 수 있습니다
<MSBuild.ExtensionPack.Sql2008.Database
MachineName="$(SQLServer)"
TaskAction="Backup"
DatabaseItem="$(SQLDatabaseName)"
DataFilePath="$(SQLBackupLocation)"
UserName="$(SQLUserName)"
UserPassword="$(SQLPassword)" />
입력 해 주셔서 감사합니다.하지만 내 자신의 답변을 살펴보면 몇 달 전에 나 자신을 발견했습니다. –
여전히 기본 인스턴스로 제한되어 있습니까? – Burt
아니요. 명명 된 인스턴스에 일반 구문을 사용하면 안됩니다. 즉 MachineName 매개 변수를 machinename/instance로 설정합니다. –