我收到以下例外:
新物件:找不到“SqlCommand”的多載和引數計數:“2”。在 C:\Users\aaaaaaaaaaaaaaaaaaps.ARMTemplate\CoreDbScripts\RunSqlScripts.ps1:128 char:19
- ... $comm = 新物件 System.Data.SqlClient.SqlCommand( $file,$conn) ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
- FullQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
這是我的代碼:
Using-Object ($conn = New-Object System.Data.SqlClient.SqlConnection $connString) {
$conn.Open();
Using-Object ($tran = $conn.BeginTransaction) {
foreach ($file in $sqlFiles)
{
Write-Host "file: " $file.Name
$comm = New-Object System.Data.SqlClient.SqlCommand($file, $conn);
$comm.Transaction = $tran
[void]$comm.ExecuteNonQuery()
}
$tran.Commit();
};
};
我究竟做錯了什么?我們如何執行SqlCommand?
uj5u.com熱心網友回復:
該錯誤訊息意味著您傳遞的建構式引數中至少有一個是錯誤的資料型別(假設不是引數數量有問題)。
您嘗試呼叫的類System.Data.SqlClient.SqlCommand的雙引數建構式具有以下簽名:
public SqlCommand (string cmdText, System.Data.SqlClient.SqlConnection connection);
相比之下,您的代碼建議您將 type 實體System.IO.FileInfo作為第一個引數傳遞,即將檔案描述為檔案系統條目的物件。
相反,傳遞檔案的內容,您可以通過以下方式獲取完整內容:Get-Content -Raw
$comm = New-Object System.Data.SqlClient.SqlCommand ($file | Get-Content -Raw), $conn
或者,使用替代的 PSv5 語法呼叫建構式,通過PowerShell 在型別上提供的內在靜態::new()方法:
$comm = [System.Data.SqlClient.SqlCommand]::new(($file | Get-Content -Raw), $conn)
uj5u.com熱心網友回復:
我在這里看到了很多示例,Using-Object但這是自定義函式(請參閱其他一些 SO 頁面)來模擬using()C# 中的塊。Powershell 沒有。您只需將 SqlConnection 和 SqlCommand 物件宣告為物件。不要忘記處理它們。我強烈推薦使用 try-catch-finally 塊,并確保在finally塊中處理 SqlConnection 物件。
我想你正在尋找這個。(警告:我沒有運行測驗,但它非常接近):
try
{
$conn = New-Object System.Data.SqlClient.SqlConnection($ConnectionString)
$conn.Open();
$tran = $conn.BeginTransaction()
foreach ($file in $sqlFiles)
{
Write-Host "file: " $file.Name
$comm = New-Object System.Data.SqlClient.SqlCommand($file, $conn);
$comm.Transaction = $tran
[void]$comm.ExecuteNonQuery()
$comm.Dispose()
}
$tran.Commit()
}
catch
{
# Handle your error here.
}
finally
{
# Make sure the SQL connection closes.
$conn.Dispose()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/345238.html
上一篇:驗證AD用戶密碼
