SQL 服务器 SSDT 发布失败,认为 PowerShell 命令正在使用 SQLCMD 变量
SQL Server SSDT publish fails thinking a PowerShell command is using a SQLCMD variable
我的 SSDT 数据库发布失败,因为它错误地认为嵌入的字符串引用了 SQLCMD 变量:
EXEC xp_cmdshell 'powershell.exe $(Get-Date).IsDaylightSavingTime()'
我可以手动 运行 此语句(在 SSMS 中)并获得所需的结果(令人遗憾的是,这是“真实的”)但是发布在尝试解析语句时遇到了阻碍:
SQL Execution error: A fatal error occurred. The variable Get-Date could not be found.
SQL Execution error: A fatal error occurred. Incorrect syntax was encountered while EXEC xp_cmdshell 'powershell.exe $(Get-Date).IsDaylightSavingTime()' was being parsed.
如何在不混淆它或将其添加到数据库项目中的 SQLCMD 变量列表的情况下使该语句不会使发布失败?
(或者也许有一种更简单的方法来检查服务器的时区是否遵守 godforsaken DST?美国的时区标识符说“标准”,不管我们的开发人员机器上是否真的盛行。并从 GETDATE 更改所有引用() 到 GETUTCDATE() 是不可行的。)
以前没见过这个,但我又一次从未尝试过从 t-sql 调用 powershell :).
最简单的方法是使用如下方式拆分传递给 xp_cmdshell 的字符串:
' + CHAR(36) + '
没有 powershell 的更简单的解决方案,不确定我是否可以设想在 t-sql 上必须做的更痛苦的事情,抱歉 :)
我的 SSDT 数据库发布失败,因为它错误地认为嵌入的字符串引用了 SQLCMD 变量:
EXEC xp_cmdshell 'powershell.exe $(Get-Date).IsDaylightSavingTime()'
我可以手动 运行 此语句(在 SSMS 中)并获得所需的结果(令人遗憾的是,这是“真实的”)但是发布在尝试解析语句时遇到了阻碍:
SQL Execution error: A fatal error occurred. The variable Get-Date could not be found.
SQL Execution error: A fatal error occurred. Incorrect syntax was encountered while EXEC xp_cmdshell 'powershell.exe $(Get-Date).IsDaylightSavingTime()' was being parsed.
如何在不混淆它或将其添加到数据库项目中的 SQLCMD 变量列表的情况下使该语句不会使发布失败?
(或者也许有一种更简单的方法来检查服务器的时区是否遵守 godforsaken DST?美国的时区标识符说“标准”,不管我们的开发人员机器上是否真的盛行。并从 GETDATE 更改所有引用() 到 GETUTCDATE() 是不可行的。)
以前没见过这个,但我又一次从未尝试过从 t-sql 调用 powershell :).
最简单的方法是使用如下方式拆分传递给 xp_cmdshell 的字符串:
' + CHAR(36) + '
没有 powershell 的更简单的解决方案,不确定我是否可以设想在 t-sql 上必须做的更痛苦的事情,抱歉 :)