J'ai regardé en ligne pendant un moment et j'ai trouvé beaucoup de problèmes similaires, mais pour une raison quelconque, je n'arrive pas à faire en sorte que cela fonctionne.
J'essaie simplement de me connecter à une base de données SQL Server et de générer les résultats de la requête dans un fichier - Voir le script PowerShell ci-dessous. Ce que je ne sais pas, c'est comment intégrer l'ID utilisateur et le mot de passe dans la chaîne de connexion.
$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"
Le message d'erreur suivant est reçu:
Exception appelant "Remplir" avec le ou les arguments "1": "Les connexions Windows ne sont pas prises en charge dans cette version de SQL Server."
Définissez la sécurité intégrée sur false dans la chaîne de connexion.
Vous pouvez vérifier/vérifier cela en ouvrant le studio de gestion SQL avec le nom d'utilisateur/mot de passe que vous avez et voir si vous pouvez vous connecter/ouvrir la base de données à partir de là. REMARQUE! Peut-être un problème de pare-feu aussi.
Integrated Security
et User ID
_ Password
authentification s’excluent mutuellement. Pour vous connecter à SQL Server en tant qu'utilisateur exécutant le code, supprimez User ID
et Password
de votre chaîne de connexion:
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"
Pour vous connecter avec des informations d'identification spécifiques, supprimez Integrated Security
:
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; User ID = $uid; Password = $pwd;"
# 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
En supposant que vous puissiez utiliser la sécurité intégrée, vous pouvez supprimer l'ID utilisateur et transmettre:
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"
La réponse est comme ci-dessous pour l'authentification Windows
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$SQLDBName;Integrated Security=True;"