我应该安装什么来从Powershell查询SQL Server数据库 - 无法加载文件或程序集Microsoft.SqlServer.Types?

时间:2018-02-19 10:14:16

标签: sql-server powershell

在我的计算机上,我只安装了SQL Server Management Studio。 我使用runas.exe /netonly /user:myDomain\myUser powershell.exe打开Powershell控制台(我需要使用Windows身份验证对SQL Server进行身份验证)。 然后我使用以下代码连接到SQL Server DB:

$myConnectionString = "Server=$($serverName);Database=$($dbName);Trusted_Connection=True;"

$SQLConnection = New-Object System.Data.SQLClient.SQLConnection
$SQLConnection.ConnectionString = $myConnectionString
$SQLConnection.Open()

$SQLCommand = New-Object System.Data.SqlClient.SqlCommand 
$SQLCommand.CommandText = "SELECT top 2 * FROM [myTable]" 
$SQLCommand.Connection = $SQLConnection

不幸的是,当我输入: $SQLCommand.ExecuteReader()

我收到错误:

  

枚举集合时发生错误:无法   加载文件或程序集' Microsoft.SqlServer.Types,V ersion = 10.0.0.0,   Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其中一个   依赖。系统找不到指定的文件..在行:1   焦炭:1   + $ SQLCommand.ExecuteReader()   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(System.Data.Common.DbEnumerator:DbEnumerator)[],RuntimeException       + FullyQualifiedErrorId:BadEnumeration

在搜索互联网后,我认为我应该安装' SQLSysClrTypes' (来自SQL Server Feature Pack)。

因此我下载了它,但似乎我在本地计算机上安装了此组件(安装程序允许我仅修复或删除此组件)。

我应该安装什么才能从Powershell查询数据库?我应该在哪台计算机上安装该计算机?

修改

当我通过RDP(mstsc)登录服务器时,使用以下连接字符串:

$myConnectionString = "Server=.;Database=$($dbName);Trusted_Connection=True;"

我没有遇到此类问题 - ExecuteReader()会返回结果。

2 个答案:

答案 0 :(得分:1)

假设您运行的是Windows 7或更高版本,则无需安装任何其他工具或库来从PowerShell查询MS SQL Server。

安装的.NET框架具有执行此操作所需的所有ADO.NET组件。

如果您收到错误,则表示您的脚本或环境出现问题。

答案 1 :(得分:0)

我确信必须有更好的解决方案,因此我不会将此回复标记为答案......

我查看了C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types路径的内容,发现版本为12,13和14的版本为Microsoft.SqlServer.Types.dll。 因此,我只是将文件10.0.0.0__89845dcd8080cc91中提到的文件从服务器复制粘贴到我的计算机上......它可以工作 因此,从Powershell连接到SQL Server时,似乎在某处使用此特定版本的程序集是硬编码的(?)