在我的计算机上,我只安装了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()
会返回结果。
答案 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时,似乎在某处使用此特定版本的程序集是硬编码的(?)