【问题标题】:Powershell, fail to load SqlCredentialPowershell,无法加载 SqlCredential
【发布时间】:2013-06-05 12:18:52
【问题描述】:

我是 PowerShell 的新手,我正在尝试一个执行 SQL 查询的简单脚本。它在我的 Windows 8 机器 (PS 3.0) 上运行良好,但在客户端机器 (2008R2, PS 2.0) 上运行良好 - 我在这一行遇到异常:

$credentials = New-Object System.Data.SqlClient.SqlCredential -argumentlist $user, $password

New-Object : Cannot find type [System.Data.SqlClient.SqlCredential]: make sure the assembly containing this type is loaded.

两台机器都安装了 .NET 2.0-4.0。

任何有关如何调试和修复此问题的建议都将不胜感激。

另外,我如何知道什么程序集文件/dll 定义了给定的类型?例如,如何找到包含 System.Data.SqlClient.SqlCredential 的 DLL 的完整路径(我在我的 Windows 8 机器上的 GAC 中没有看到 System.Data.SqlClient,但它在那里工作......)?

谢谢!

【问题讨论】:

  • 同样的问题,但在 Mac OSX 中。有没有办法为 .Net Core 2.0 加载它?

标签: .net sql-server powershell


【解决方案1】:

您是说机器安装了 .NET 2.0-4.0。但是,.NET 4.5 中已经引入了 SqlCredential 类:

http://blogs.msdn.com/b/adonet/archive/2012/03/09/safer-passwords-with-sqlcredential.aspx

也许这就是问题所在?也许Win8已经安装了?

【讨论】:

  • 有趣。 .NET 4.5 没有出现在 C:\Windows\Microsoft.NET\Framework 下,但我猜它是 Windows 8 的默认设置,并且可能存在于其他地方......所以我想这让我没有使用安全连接字符串的简单方法来自 Powershell,除非我还安装 .NET 4.5?
  • @JimBalo - .NET 4.5 覆盖了 4.0 目录中的框架 dll,因此除非您专门查看内容,否则您不会注意到差异。详情见这篇文章:west-wind.com/weblog/posts/2012/Mar/13/…
【解决方案2】:

我相信你可以下载 .Net 4.5。我相信这会解决您的问题。
在我目前的工作中,我无法升级 .Net,因为我正在编写在服务器上远程运行的 Powershell 脚本,其中一些可能没有最新版本的 .Net。例如,我不能使用 System.Data.sqlclient.SqlQuery,因为即使加载了大部分 System.Data.SqlClient 程序集,System.Data.sqlclient.SqlQuery 的类也不属于该程序集。太糟糕了,因为许多使用 DataAdapter 的示例脚本都引用了 .SQLQuery 类,该类位于 .Net 4.5 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多