【发布时间】:2020-12-01 03:14:58
【问题描述】:
我有下面的代码 sn-p 并且一切正常,只是看起来没有一个值被包含在存储过程给出的单引号中。
有没有办法告诉它在执行 SQL 之前将 $p 中的每个元素用单引号括起来?
$p 包含 30 个不同的元素,可以是数字或字母数字。
Param (
[Parameter(Mandatory=$true)][array]$p
)
Process {
$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Data Source=OurServer;Initial Catalog=OurDatabase;Integrated Security=true"
$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.Connection = $conn
$cmd.CommandTimeout = 0
$cmd.CommandText = "EXEC sp_test $p"
}
【问题讨论】:
-
请考虑使用
$cmd.Parameters和$cmd.CommandType = "StoredProcedure",避免引用问题和可能的SQL 注入。
标签: sql-server powershell stored-procedures