Sql-Server-2008-R2

Powershell:Powershell 中的 System.Data.SqlClient.SqlDataAdapter 使用是否需要一些 ADO.Net 安裝?

  • May 25, 2016

在 PowerShell 中,目標是從 Sql Server 查詢一些數據並將其放入預先格式化的 Excel 文件中。為此,以下 PowerShell 腳本片段會引發錯誤,提示“缺少程序集”。

從我可以線上收集的內容來看,它SqlClient.SqlDataAdapter是 的一部分ADO.Net,它不需要包含任何程序集(因為它始終存在於 OS .Net 框架安裝中)。它是否正確?我該如何糾正這個問題?

...
... other connection code
...
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand;
$SqlCmd.Connection = $SqlConnection;
$SqlCmd.CommandText = $ActiveTransactions_Count_Query;

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter;
$SqlAdapter.SelectCommand = $SqlCmd;

$DataSet_ActiveTransaction = New-Object System.Data.DataSet;
$SqlAdapter.Fill($DataSet_ActiveTransaction);
$DataSetTable = $DataSet_ActiveTransaction.Tables[0];
$DataSetTable

錯誤:

New-Object : Cannot find type [Sql.Data.SqlClient.SqlDataAdapter]: make sure
the assembly containing this type is loaded.
At M:\Build.ps1:21 char:25 + $SqlAdapter = New-Object <<<< 
Sql.Data.SqlClient.SqlDataAdapter;
   + CategoryInfo          : InvalidType: (:) [New-Object],
   PSArgumentException
   + FullyQualifiedErrorId :     TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

將其放在腳本的頂部:

Add-Type -AssemblyName System.Data

是的,它是作業系統的一部分,不,這通常不是必需的,但是您的作業系統版本 + PowerShell 版本 + SQL 2008 R2 的組合肯定存在一些問題。

引用自:https://dba.stackexchange.com/questions/139521