Question Accès base SQL Server (Résolu)

Plus d'informations
il y a 16 ans 10 mois #380 par Arnaud Petitjean
Comme certains d'entre nous sont concernés par l'administration des bases de données (pas moi ouf ! ;)) j'ai créé une catégorie \"Base de données\" dans la bibliothèque.

Et comme les bases de données ne sont pas ma spécialité, y aurait-il une âme charitable pour me traduire le \"script de connexion à une base Oracle\" en \"script de connexion à une base SQL Server\".

Un volontaire ? (François au hasard :), notre spécialiste local).

D'autres scripts sont également les bienvenus pour enrichir la bibliothèque.

Merci d'avance,
Arnaud<br><br>Message édité par: Arnaud, à: 23/07/07 10:47

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #385 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Accès base SQL Server
Salut,
je n'ai pas encore essayé ce coté de PowerShell, qui est à mon avis un des manques de la version 1, mais si PS s'appui sur .NET il s'appuie aussi sur ADO .NET. On peut donc supposer que seul la chaîne de connexion est à modifier.

A moins d'utiliser un provider spécifique, par exemple ODP pour Oracle qui est plus rapide et propose un peu plus de fonctionnalités.

Je regarde ça prochainement car je n'ai pas SQL Server sous la main.<br><br>Message édité par: BatchMan, à: 23/05/07 17:39

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #386 par Ciret
Réponse de Ciret sur le sujet Re:Accès base SQL Server
Je n'y connais rien à SQL mais j'ai vu ça dans une doc :
pour la connection :

PS C:\&gt; $conn = new-object system.data.sqlclient.sqlconnection
PS C:\&gt; $conn.connectionstring = \&quot;server=don-pc;database=mydata;\&quot; `
&gt;&gt; + \&quot;trusted_connection=true;\&quot;
&gt;&gt;
PS C:\&gt; $conn.open()

ou

PS C:\&gt; $conn = new-object system.data.oledb.oledbconnection
PS C:\&gt; $conn.connectionstring = \&quot;provider=microsoft.jet.oledb.4.0;\&quot; `
&gt;&gt; + \&quot;data source=c:\mydata.mdb;\&quot;
&gt;&gt;
PS C:\&gt; $conn.open()
PS C:\&gt;

Pour l'execution d'une requete


$query = \&quot;select col1,col2 from mytable\&quot;
PS C:\&gt; $cmd = new-object system.data.oledb.oledbcommand
PS C:\&gt; $cmd.connection = $conn
PS C:\&gt; $cmd.commandtext = $query
PS C:\&gt; $cmd.executenonquery()

Dans la doc il parle également de ce site où il y a pas d'info sur les connections au bdd
www.connectionstrings.com



Good Luck
JL<br><br>Message édité par: JLC, à: 23/05/07 18:38

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 10 mois #387 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Accès base SQL Server
Trés bon site j'allais le citer.
Un code adapté :
[code:1]
$Conn = new-object system.data.sqlclient.sqlconnection
# Connexion avec l'authentification Windows
$Conn.connectionstring = \&quot;Server=NomServeurSQL;database=MASTER;trusted_connection=yes;\&quot;
# Ouvre la connexion
$Conn.Open()
# On interroge une vue système de SQL Server 2005
$Requete = \&quot;select * from Information_Schema.Tables\&quot;

$cmd = New-object system.data.sqlclient.SqlCommand
$cmd.connection = $conn
$cmd.commandtext = $Requete
# Exécute la requête et retourne le nombre de lignes
$cmd.Executenonquery()

$DataAdapter = new-object System.Data.SqlClient.SQLDataAdapter($cmd)
$DataSet = new-object System.Data.DataSet
$DataAdapter.Fill($DataSet)
# Récupére les données en XML
$DataSet.GetXML()
# ou bien en texte
$DataSet.Tables[0].Rows

$Conn.Close() # on libére la connexion, etc.
[/code:1]
Il y a aussi SMO ;-)
Voir ce source d'un cmdlet c#
devhawk.net/2007/02/06/Perusing+Powershe...+1+GetSQLServer.aspx

Donc ce qui différe ici entre Oracle et SQLServer sous ADO .NET c'est la chaîne de connexion et le nom du client (OracleClient ou sqlclient ).
Je ne sais pas si on doit charger les assemblies utilisées dans ce code, sur mon poste ce n'était pas le cas.

Sinon la chaîne \&quot;provider=microsoft.jet.oledb.4.0;...\&quot; est pour ACCESS.<br><br>Message édité par: BatchMan, à: 23/05/07 21:00

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 3 semaines #1810 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Accès base ACCESS
Pour manipuler une base ACCESS on utilise un provider différent :
[code:1]
# Pour une base Access nul besoin d'avoir Access d'installer sur le poste
# La couche d'accés ADO.NET est installé par défaut via le runtime de .NET

$FileName=\&quot;C:\Scripts\Pool.mdb\&quot;
$NomTable=\&quot;SwimmingPool\&quot;

$StrConnexion=\&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$FileName\&quot;
$Connexion = new-object System.Data.OleDb.OleDBConnection($StrConnexion)

# On Doit impérativement récupèrer toutes les colonnes de toutes les lignes sinon
# on obtient soit une erreur soit on ne récupére aucune donnée
$Requete = \&quot;Select * From SwimmingPool\&quot;
$cmd = New-object System.Data.OleDb.OleDbCommand($Requete,$Connexion)

$DataAdapter = new-object System.Data.OleDB.OleDBDataAdapter($cmd)
$DataSet = new-object System.Data.DataSet
[void]$DataAdapter.Fill($DataSet)
$Connexion.Close()
# Pour effectuer un test de contenu, exécuter :
# $DataSet.GetXML()

#On modifie le nom de la table, par défaut il est égal à \&quot;Table\&quot;
$Dataset.Tables[0].TableName =$NomTable
$maTable= $dataset.Tables[$NomTable]

# Affiche les noms de colonnes et leurs type
# $maTable.Columns | Format-Table -autosize -property ColumnName, DataType

# Affiche pour ligne de la table les contenu de la colonne nommée \&quot;Customer\&quot;
#$maTable.Rows| %{$_[\&quot;Customer\&quot;]}
foreach ($R in $maTable.Rows)
{
Write-Output (\&quot;Nom client : \&quot; + $R[\&quot;Customer\&quot;])
}
}[/code:1]
Un tutoriel intéressant sur le PowerShell et ADO :
www.pluralsight.com/blogs/dan/archive/2006/10/29/41389.aspx

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 8 mois #2582 par Norman
Réponse de Norman sur le sujet Re:Accès base ACCESS
moi j'ai un souci avec le code de l'event 9 des scripting games..

j'essaie de l'adapter à mon besoin : je veux récupérer le contenu d'une colonne d'un table access et le mettre dans une variable, tout comme j'aurai fait le get-content d'un fichier.

voiçi le code, et ensuite j'aimerai updater un colonne..
dans un 1er temps je souhaite lire la table, ce serais déjà cool :side:
[code:1]$adOpenStatic = 3
$adLockOptimistic = 3

$cn = new-object -comobject ADODB.Connection
$rs = new-object -comobject ADoDB.Recordset

$FileName=\&quot;C:\Documents and Settings\nor1obr\Bureau\INNO\bd1.mdb\&quot;
$NomTable=\&quot;BaseAD\&quot;

$cn.Open(\&quot;Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $FileName\&quot;«»)
$rs.Open(\&quot;SELECT * FROM $NomTable\&quot;, $cn, $adOpenStatic, $adLockOptimistic)

$codeFil = Read-Host \&quot;Entrez un code Site (3 1ers chiffres)\&quot;
$codeSite = Read-Host \&quot;Entrez un code Magasin (3 derniers chiffres du PDT)\&quot;
$heure = Read-Host \&quot;Entrez une heure de reboot(de type hh:mm:«»ss sur 24 heures)\&quot;
#{Write-Host -f darkgreen \&quot;Vous souhaitez programmer le reboot des pc de\&quot; + $codeFil + $codeSite + \&quot;à\&quot; + $heure\&quot;}


$rs.MoveFirst()
$query = \&quot;SELECT $NomTable.Nom, $NomTable.CodeFiliale, $NomTable.CodeSite, $NomTable.Type, $NomTable.Localisation FROM $NomTable WHERE ((($NomTable.CodeFiliale)=[$codeFil]) AND (($NomTable.CodeSite)=[$codeSite]) AND (($NomTable.Type)='PDT') AND (($NomTable.Localisation)='magasin')) ORDER BY $NomTable.Nom;\&quot;
$complist = $cn.Execute($query)
foreach ($srv in $NomTable.Rows)
{
Write-Output (\&quot;Nom client : \&quot; + $srv[\&quot;Nom\&quot;])
Write-Output (\&quot;Efface les tâches de : \&quot; + $srv[\&quot;Nom\&quot;])
#schtasks /delete /s $srv /tn * /f
Write-Output (\&quot;Recrée les tâches de : \&quot; + $srv[\&quot;Nom\&quot;])
#schtasks /create /s $srv /tn *
}


$rs.Close()
$cn.Close()
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.077 secondes
Propulsé par Kunena