0
如果我運行SQL Server 2012的上下面,它的工作原理演員IP地址要插入的字符串到SQL Server 2012
BEGIN
IF NOT EXISTS (SELECT *
FROM dbo.Computers
WHERE Computer_ID = 'A1E8AC100AFB160500BAD934ACD97536')
BEGIN
INSERT INTO dbo.Computers(Date_of_Record, Computer_Name, IP_Address, Operating_System, Agent_Version, BIOS_Version, Computer_ID)
VALUES (CAST(GETDATE() AS DATE), 'LPB0FLYX', '10.10.10.10', 'Windows 7 Enterprise Edition', '12.1.2015.2015', 'LENOVO - 6040000 Phoenix BIOS SC-T v2.2', 'A1E8AC100AFB160500BAD934ACD97536')
END
END
但是,如果我在PowerShell中運行(其中$k[1]
的值爲10.10以下。 10.10),這是行不通的
$SQL_UPDATE = "BEGIN
IF NOT EXISTS (SELECT *
FROM dbo.Computers
WHERE Computer_ID = $k[5])
BEGIN
INSERT INTO dbo.Computers(Date_of_Record, Computer_Name, IP_Address, Operating_System, Agent_Version, BIOS_Version, Computer_ID)
VALUES (CAST(GETDATE() AS DATE), $k[0], $k[1], $k[2], $k[3], $k[4], $k[5])
END
END
這是我創建
表的結構如何投放$k[1]
爲字符串,所以實際上我傳遞'10 .10.10.10'
編輯
這裏是回聲$ SQL_UPDATE
BEGIN
IF NOT EXISTS (SELECT *
FROM dbo.Computers
WHERE Computer_ID = 9D2838890AFB16050170A8AEE4F15517)
BEGIN
INSERT INTO dbo.Computers(Date_of_Record, Computer_Name, IP_Address, Operating_System, Agent_Version, BIOS_Version, Computer_ID)
VALUES (CAST(GETDATE() AS DATE), LMG0033SZ, 10.10.10.10, Windows 7 Enterprise Edition, 12.1.4013.4013, LENOVO - 1180 LENOVO BIOS Rev: FNKT24A 0.0, 9D2838890AFB16050170A8AEE4F15517)
END
END
錯誤的:
Exception calling "ExecuteNonQuery" with "0" argument(s): "Incorrect syntax near 'D2838890AFB16050170A8AEE4F15517'.
Incorrect syntax near '.194'."
At D:\Script\unknowns.ps1:259 char:5
+ $cmd_update.executenonquery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SqlException
我懷疑你在生成的查詢中缺少單引號。你能迴應$ SQL_UPDATE的結果內容並添加到問題嗎? – 2014-10-08 15:49:17
@JoachimIsaksson我更新了問題。如何添加單引號? – Glowie 2014-10-08 17:17:27
我懷疑它很簡單,就像'VALUES(CAST(GETDATE()AS DATE)','$ k [0]','$ k [1]','$ k [2]','$ k [3]' ,'$ k [4]','$ k [5]')' – 2014-10-08 17:19:18