it-swarm.com.de

Stellen Sie von PowerShell aus eine Verbindung zur SQL Server-Datenbank her

Ich habe mich schon eine Weile online umgesehen und festgestellt, dass es viele ähnliche Probleme gibt, aber aus irgendeinem Grund kann ich das nicht zum Laufen bringen.

Ich versuche nur, eine Verbindung zu einer SQL Server-Datenbank herzustellen und die Abfrageergebnisse in einer Datei auszugeben. Siehe PowerShell-Skript unten. Ich bin mir nicht sicher, wie die Benutzer-ID und das Kennwort in die Verbindungszeichenfolge integriert werden sollen.

$SQLServer = "aaaa.database.windows.net"
$SQLDBName = "Database"
$uid ="john"
$pwd = "pwd123"
$SqlQuery = "SELECT * from table;"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True; User ID = $uid; Password = $pwd;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

$DataSet.Tables[0] | out-file "C:\Scripts\xxxx.csv"

Die folgende Fehlermeldung wird angezeigt:

Ausnahme beim Aufrufen von "Fill" mit "1" -Argumenten: "Windows-Anmeldungen werden in dieser Version von SQL Server nicht unterstützt."

30
Johnathan

Ändern Sie Integrated Security in der Verbindungszeichenfolge in false.

Sie können dies überprüfen/verifizieren, indem Sie das SQL Management Studio mit Ihrem Benutzernamen/Kennwort öffnen und prüfen, ob Sie die Datenbank von dort aus verbinden/öffnen können. HINWEIS! Könnte auch ein Firewall-Problem sein.

18
ojk

Integrated Security Und User ID\Password Authentifizierung schließen sich gegenseitig aus. Entfernen Sie User ID Und Password aus Ihrer Verbindungszeichenfolge, um eine Verbindung zu SQL Server als Benutzer herzustellen, der den Code ausführt:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"

Entfernen Sie Integrated Security, Um eine Verbindung mit bestimmten Anmeldeinformationen herzustellen:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID = $uid; Password = $pwd;"
25
Aaron Jensen
# database Intraction

$SQLServer = "YourServerName" #use Server\Instance for named SQL instances!
$SQLDBName = "YourDBName"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; 
User ID= YourUserID; Password= YourPassword" 
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = 'StoredProcName'
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) 
$SqlConnection.Close() 

#End :database Intraction
clear
6
Mike Clark

Angenommen, Sie können integrierte Sicherheit verwenden, können Sie die Benutzer-ID entfernen und übergeben:

$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"
2
ne1410s

Die Antwort für die Windows-Authentifizierung lautet wie folgt

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$SQLDBName;Integrated Security=True;"
1
Arjun Walmiki