我在System.Data.SqlClient.SqlCredential类中遇到了一些问题。我尝试使用此
在powershell中创建一个对象cls;
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Data");
$creds = New-Object System.Data.SqlClient.SqlCredential;
但我收到此错误消息
New-Object : Конструктор не найден. Не удается найти соответствующий конструкто
р для типа System.Data.SqlClient.SqlCredential.
строка:3 знак:10
+ $creds = New-Object System.Data.SqlClient.SqlCredential;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [New-Object], PSArgumentExce
ption
+ FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.C
ommands.NewObjectCommand
此错误消息的翻译如下:
找不到构造函数。无法为类型找到合适的构造函数。
我读了technet,发现System.Data.SqlClient.SqlCredential类包含在System.Data(System.Data.dll)中。
但我尝试加载此程序集,如前面的示例所示。我使用Windows 7,PowerShell 4.0。我安装了.NET Frameworks 4.6.1。我真的很感激任何帮助。
我尝试使用GodEater提供给我的提示,但仍然收到错误消息
cls;
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Data");
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection;
$SqlConnection.ConnectionString = "Server=192.168.1.220,1433;Database=Archimed;";
$creds = New-Object System.Data.SqlClient.SqlCredential`
((Read-Host -AsSecureString), (Read-Host -AsSecureString));
$SqlConnection.Credential = $creds;
$SqlConnection.Open();
$SqlConnection.Close();
错误信息就像这样
New-Object : Не удается найти тип [System.Data.SqlClient.SqlCredential]: убедит
есь в том, что сборка, содержащая этот тип, загружена.
строка:7 знак:10
+ $creds = New-Object System.Data.SqlClient.SqlCredential`
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentExcepti
on
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewOb
jectCommand
System.Security.SecureString
System.Security.SecureString
Исключение при вызове "Open" с "0" аргументами: "Ошибка входа пользователя ""."
строка:11 знак:1
+ $SqlConnection.Open();
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SqlException
翻译如下:
找不到[System.Data.SqlClient.SqlCredential]的类型:确保已加载包含此类型的程序集
从“0”参数调用“打开”时出现异常:“用户登录失败”。
我为用户使用sa和1并传递。
答案 0 :(得分:1)
我知道这是一个老问题,但是以防万一有人偶然发现了它。
先前的答案几乎是正确的。您确实需要将用户ID和密码传递给构造函数,但是密码必须是安全字符串。
$SecurePassword = ConvertTo-SecureString -AsPlainText -Force "ThePassword"
$creds = New-Object System.Data.SqlClient.SqlCredential('UserName', $SecurePassword)
答案 1 :(得分:0)
据我所知,该类型的构造函数需要用户ID和密码 - 您无法在不指定的情况下创建它 - 因此您需要像这样调用它:
$creds = New-Object System.Data.SqlClient.SqlCredential('UserName','Password')
显然用您的实际用户名和密码替换它们。