2

如何在托管代理的VSTS构建任务中针对Azure SQL数据库执行SQL,作为PowerShell脚本的一部分?如何在PowerShell脚本中执行SQL作为Visual Studio Team Services构建任务的一部分?

有许多可用于生成定义许多任务:我们可以远程执行PowerShell脚本

enter image description here

或部署使用DACPAC或SQLCMD

enter image description here

甚至SQL执行的PowerShell机器

enter image description here

但如何简单地执行SQ​​L作为PowerShell脚本的一部分? Invoke-Sqlcmd不作为“Azure PowerShell”任务的一部分提供。

我想可以远程桌面到一个应用程序服务,在那里安装SQL Server相关的位并使用'目标机器上的PowerShell',但我觉得必须有一个更简单的方法 - 也许我只是缺少东西明显

+0

您是使用托管代理还是私人代理?你的SQL服务器是一个本地SQL实例还是一个Azure SQL实例? –

+0

托管代理和Azure SQL数据库。更新了问题 – karl25233

回答

1

您可以使用Azure SQL数据库部署任务,这里有SQL脚本文件和内联SQL脚本类型。

enter image description here

注意:您可以使用托管代理人,而不是托管VS 2017年代理。

+0

我们的SQL批处理脚本必须从一个自定义的PowerShell脚本执行;这用于版本化数据库。它应该也能够退出错误,至少可以通过Invoke-Sqlcmd – karl25233

+0

@thomius使用托管代理(而不是托管的vs2017),然后您可以在PowerShell脚本中调用Invoke-SqlCmd。 –

+0

(托管而不是vs2017)做到了! – karl25233

1

但如何简单地执行SQ​​L作为PowerShell脚本的一部分? Invoke-Sqlcmd不作为“Azure PowerShell”任务的一部分提供。

我认为,我们可以利用这个PowerShell脚本来运行SQL与Azure的PowerShell执行Azure的SQL数据库:

$connectionString = "Data Source=jasontest321.database.windows.net;Initial Catalog=jasonsql;User ID=jason;Password='password';Connection Timeout=90" 
$connection = New-Object -TypeName System.Data.SqlClient.SqlConnection($connectionString) 
$query = "insert into test1 values (3) ; ;" 
$command = New-Object -TypeName System.Data.SqlClient.SqlCommand($query, $connection) 
$connection.Open() 
$command.ExecuteNonQuery() 
$connection.Close() 

这里是我的测试:

enter image description here

同时,我们也可以使用Azure门户查询编辑器查询表如下:

enter image description here

+0

有可能在出错时停止吗?我们正在进行修补,其中包括由GO语句分隔的模式更新(以及类似于“如果当前版本不支持,然后错误/退出”的逻辑) – karl25233

+0

您的意思是使用powershell来实现逻辑吗?是的,我们可以使用PowerShell检查版本并运行 –

+0

@thomius检查是否提供的信息是有帮助的请让我知道是否需要进一步的帮助 –

相关问题