【问题标题】:TFS SqlExecute Custom ActivityTFS SqlExecute 自定义活动
【发布时间】:2014-01-27 18:30:56
【问题描述】:

我用SqlExecute activity of Build Extension

我希望在我的活动参数中传递参数

但是我的问题是 Te 参数没有注入到 SQL 脚本中,请你帮帮我。你使用过 SqlExecute 活动吗?

编辑器中的参数部分,在我的模板 tfs / wwf 构建设计器中:

New String(5) {
    "BackupFilePath = F:\MSSQL10.IS_CLTLIVE_DE\DUMP\ClearProdDump\CP.dmp",
    "LogicalDataFile = CP_Data01",
    "DataFilePath = F:\MSSQL10.IS_CLTLIVE_DE\data\",
    "LogicalLogFile = CP_TLog01",
    "LogFilePath = F:\MSSQL10.IS_CLTLIVE_DE\log\",
    "DatabaseName = AghilasCP_Tmp"
}

我的脚本.sql

IF  EXISTS (SELECT name FROM sys.databases WHERE name = $(DatabaseName ))

【问题讨论】:

    标签: tfs workflow-foundation tfsbuild


    【解决方案1】:

    阅读该活动的代码,您似乎需要将参数指定为

    New String(5) {
        "@BackupFilePath='F:\MSSQL10.IS_CLTLIVE_DE\DUMP\ClearProdDump\CP.dmp'",
        "@LogicalDataFile='CP_Data01'",
        "@DataFilePath='F:\MSSQL10.IS_CLTLIVE_DE\data\'",
        "@LogicalLogFile='CP_TLog01'",
        "@LogFilePath='F:\MSSQL10.IS_CLTLIVE_DE\log\'",
        "@DatabaseName='AghilasCP_Tmp'"
    }
    

    声明为

    IF  EXISTS (SELECT name FROM sys.databases WHERE name = @DatabaseName)
    

    '=' 周围没有空格,使用唯一名称作为参数名称,这让我有点害怕,我个人会以不同的方式编写此活动,并在参数数组中的参数值周围加上引号或在 SQL 代码中。

    【讨论】:

    • 非常感谢杰西,我编辑了为了安全起见重命名参数
    • 错误:工具\TeamBuild\RestoreDatabaseForTesting.sql。必须声明标量变量“@DatabaseName”.. 堆栈跟踪:在 TfsBuildExtensions.Activities.SqlServer.SqlExecute.ExecuteSql() 在 TfsBuildExtensions.Activities.SqlServer.SqlExecute.ExecuteFiles() 在 TfsBuildExtensions.Activities.BaseCodeActivity.Execute(CodeActivityContext context) .内部异常:必须声明标量变量“@DatabaseName”。
    • 尝试将构建日志提高到详细,正在执行的实际语句应该记录到构建日志中。我不倾向于自己安装和调试活动。
    • 我刚刚提取了替换参数的代码并为其创建了一个小测试,上面的参数应该与上面的语句一起使用。如果他们不这样做,那么一定有你没有告诉我们的事情。
    • 谢谢你,杰西我解决了我的问题,我忘记了参数的简单引用,我编辑了你的答案以添加简单的引用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多