2016-05-11 10 views
0

Ich mache einige Powershell-Skripte zum Ausführen von SQL-Befehlen für SQL Server und müssen das Windows-Konto angeben, um in der Verbindungszeichenfolge zu verwenden. Ich habe folgendes versucht, was nicht funktioniert.Ausführen von SQL-Befehl mit Powershell und Angabe des Domänenkontos

$SQLServer = ".\sqlexpress" 
$SQLDBName = "dbname" 
$uid ="domain\user 
$pwd = "password" 
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = false; User ID = $uid; Password = $pwd;" 
$SqlCmd.Connection = $SqlConnection 
$SqlConnection.Open(); 

.... Execute query... 

Ich bekomme den folgenden Fehler.

Exception "Öffnen" mit "0" Argumente Aufruf (e): „Fehler bei der Anmeldung für den Benutzer 'Domain \ user'

Ich war führen zu verstehen, dass, wenn Sie auf integrierte false angeben. Sicherheit dann würde der Benutzername und das Passwort übernehmen und schließen Sie das entsprechende Fenster Konto.

Für mich zu verbinden versagt. Bin ich hier etwas fehlt?

Vielen dank

Darren

+0

Ok, ich habe ein wenig mehr gelesen und verstehe jetzt, dass das Domänenkonto nicht angegeben werden kann. Ich muss entweder ein SQL-Konto erstellen oder sich irgendwie als Domänenbenutzer ausgeben. – zybroxz

+0

Sie sollten wahrscheinlich nur das SQL-Konto erstellen und den Namen des SQL-Kontos Ihrem Programmnamen ähnlich machen. – Chuck

+0

Wie wir das umgehen können, verwenden wir "Integrated Security = true" und führen das PowerShell-Skript mit einem Dienstkonto aus. Ich nehme an, Sie könnten auch eine PSSession aufrufen, die ein PSCredential-Objekt übergibt. – websch01ar

Antwort

1

Ein anderer Weg, dies zu bewältigen wäre, den SQL-Powershell-Modul (SQLPS) zu verwenden, die durch die Installation von „Management Tool“ aus den SQL Management Studio Installer erhalten werden kann. Bei der Verwendung von Invoke-Sqlcmd wird standardmäßig eine Verbindung als Windows-Konto hergestellt, das die PowerShell-Instanz initiiert hat. Wenn Sie ein anderes Windows-Konto als das mit der Anmeldung verwenden möchten, wechseln Sie mit der rechten Maustaste auf PowerShell und wählen Sie die Option "Als anderer Benutzer ausführen".

Sobald Modul installiert wurde, Sie Modul durch Ausführen importieren:

Import-Module SQLPS 

Weiter Sie Ihre Abfrage wie folgt ausführen würde:

Invoke-Sqlcmd -ServerInstance "ServerName\Instance" -Database "DatabaseName" -Query "Some Query Here" 

Während völlig optional, empfehle ich -Verbose Zugabe würde Dies zeigt Ihnen die Ausgabe, genau wie Sie es in Sql Management Studio sehen würden.

Hoffe, das hilft.

+0

Vielen Dank für Ihre Antwort. Ich werde es mir ansehen. Allerdings muss ich das auf einer Remote-Box ausführen, so dass ich die Runas-Sache nicht ausführen kann. Ich änderte die Art, wie ich das Problem ansprach, indem ich eine SQL-Anmeldung erstellte, die ich jetzt in einer sqlcommand-Verbindungszeichenfolge verwendete. Das löste das Problem, obwohl er es vorgezogen hätte, ein Domänenkonto zu imitieren. Danke – zybroxz

Verwandte Themen