sql-server - Azure PowerShell Invoke-Sqlcmd:将数据类型 nvarchar 转换为 uniqueidentifier 时出错
问题描述
我有一个 SQL Server 存储过程,它接受前两个参数 asuniqueidentifier
和第三个 as nvarchar
。当我在 SSMS 中对 Azure SQL 数据库执行时,它工作正常并且没有问题,但是当我使用 Azure PowerShell 时,我得到以下异常
Invoke-Sqlcmd:将数据类型 nvarchar 转换为 uniqueidentifier 时出错。
PowerShell 脚本
$parameter1 = New-Guid
$parameter2 = New-Guid
$parameter3 = "Test"
$DatabaseName = "xxxx"
$ServerName = "xxxx"
$sqlQuery = "
EXEC [dbo].[spxxxxxx]
@parameter1 = [Guid]${parameter1},
@parameter2 = [Guid]${parameter2},
@parameter3 = '${parameter3}'
"
$params = @{
'Database' = $DatabaseName
'ServerInstance' = $ServerName
'Username' = 'xxxx'
'Password' = 'xxxx'
'OutputSqlErrors' = $true
'Query' = $sqlQuery
}
Invoke-Sqlcmd @params
谁能建议我如何通过Guid
parameters
PowerShell 中的存储过程Invoke-Sqlcmd
来解决此问题?
解决方案
与构建 SQL 查询时一样,将它们打印出来并检查它们。你正在生成类似的东西:
EXEC [dbo].[spxxxxxx]
@parameter1 = [Guid]2e244a72-1e11-496d-8a7f-37844ae8ce6b,
@parameter2 = [Guid]5fe0e88f-9bea-4a9f-b67e-fe55cdcadfbc,
@parameter3 = 'Test'
但批次应该看起来像
EXEC [dbo].[spxxxxxx]
@parameter1 = '2e244a72-1e11-496d-8a7f-37844ae8ce6b',
@parameter2 = '5fe0e88f-9bea-4a9f-b67e-fe55cdcadfbc',
@parameter3 = 'Test'
传递将隐式转换为 UNQUEIDENTIFIER 的字符串文字时。
推荐阅读
- python - 当我将视图注入 html 时,为什么查询集是空的?
- authentication - 在 Kubernetes 上使用带有 nginx 入口的客户端证书身份验证时,如何修复 cert-manager 对 Let's Encrypt ACME 挑战的响应?
- apache-spark - 如何在没有数据块的情况下“挂载”数据湖第 1 代
- regex - 从文件名中删除某个字符之后的所有字符
- r - 如何解决 Jags 模型中的尺寸不匹配问题。?
- perl - 使用 perl 将图形添加到 htm 网页
- r - 通过 facet 向 geom_smooth() 提供自定义结值
- elasticsearch - elasticsearch中的空字符串与NULL值
- php - GMB PHP API 2020 问题
- python - VS 代码:ModuleNotFoundError:没有名为“pandas”的模块