OVH Cloud OVH Cloud

recuperer le nom du serveur sql 2005 "data source = " & mavariable & "...."

11 réponses
Avatar
JohnPaulGeorgeRingo
bonjour
je developpe en asp.net 2.0 VB sur 3 postes differents et le nom du
serveur sql est bien sur different sur chacun des postes.
je souhaiterai recuperer son nom (server name je crois) dans une
variable que je passe ensuite dans une chaine de connection devenu
dynamique.
cela me permettrai de ne plus avoir (sur chaque machine dans laquelle je
mets a jour le dernier dev du site) a remodifier le "Data Source="
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"

10 réponses

1 2
Avatar
Laulau
Bonjour,

Si sur chaque poste l'instance SQL Server que tu utilises est l'instance
local alors une chaine de connexion contenant "Data Source=localhost" ou bien
"Data Source=(local)" devrait fonctionner. Dans le cas où tu utilises des
instances nommées tout dépend si tu as des règles précises pour savior
quelles instances choisir.

Laulau

"JohnPaulGeorgeRingo" a écrit :


bonjour
je developpe en asp.net 2.0 VB sur 3 postes differents et le nom du
serveur sql est bien sur different sur chacun des postes.
je souhaiterai recuperer son nom (server name je crois) dans une
variable que je passe ensuite dans une chaine de connection devenu
dynamique.
cela me permettrai de ne plus avoir (sur chaque machine dans laquelle je
mets a jour le dernier dev du site) a remodifier le "Data Source="
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"



Avatar
JohnPaulGeorgeRingo
merci ! Laulau
"Data Source=(local)"


j'y a vais pensé mais voila sur une des machines il y a un serveur 2000
ET 2005 !

en fait je voudrais pouvoir au premier demarrage de mon programme
(initialisation) "voir" tous les serveurs sql presents sur le reseau et
pouvoir choisir celui qui sera le bon
(ce peut etre le local mais aussi pourquoi pas un autre se trouvant sur
une autre machine)

et pourquoi pas demain (voire plus tard....mdr) choisir le serveur de
bascule en cas de pepin sur le premier... mais la...

merci pour tes conseils.
que les autres ne s'abstiennent surtout pas :)

bonne journée a toutes & tous

In article ,
says...
Bonjour,

Si sur chaque poste l'instance SQL Server que tu utilises est l'instance
local alors une chaine de connexion contenant "Data Source=localhost" o u bien
"Data Source=(local)" devrait fonctionner. Dans le cas où tu utilises des
instances nommées tout dépend si tu as des règles précises pour s avior
quelles instances choisir.

Laulau

"JohnPaulGeorgeRingo" a écrit :

>
> bonjour
> je developpe en asp.net 2.0 VB sur 3 postes differents et le nom du
> serveur sql est bien sur different sur chacun des postes.
> je souhaiterai recuperer son nom (server name je crois) dans une
> variable que je passe ensuite dans une chaine de connection devenu
> dynamique.
> cela me permettrai de ne plus avoir (sur chaque machine dans laquelle j e
> mets a jour le dernier dev du site) a remodifier le "Data Source="
> ---------------------------------------------------------------------
> Cordialement
> JPGR
> "A splendid time is guaranteed for all"
>




--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Laulau
Dans ce cas là tu devrais regarder du côté du namespace
Microsoft.SqlServer.Management.Smo
A l'intérieur de celui-ci tu troouveras notamment une méthode
SmoApplication.EnumAvailableSqlServers qui te permettra de récupérer une
liste des instances SQL Server disponibles. Si tu es dans l'impossibilité
d'utiliser SMO alors tu peux regarder DMO qui est son ancêtre et qui existait
déjà avec sql server 2000, mais là attention il s'agit de COM.

En espérant que cela t'aide un peu plus.

Laulau

"JohnPaulGeorgeRingo" a écrit :

merci ! Laulau
> "Data Source=(local)"
j'y a vais pensé mais voila sur une des machines il y a un serveur 2000
ET 2005 !

en fait je voudrais pouvoir au premier demarrage de mon programme
(initialisation) "voir" tous les serveurs sql presents sur le reseau et
pouvoir choisir celui qui sera le bon
(ce peut etre le local mais aussi pourquoi pas un autre se trouvant sur
une autre machine)

et pourquoi pas demain (voire plus tard....mdr) choisir le serveur de
bascule en cas de pepin sur le premier... mais la...

merci pour tes conseils.
que les autres ne s'abstiennent surtout pas :)

bonne journée a toutes & tous

In article ,
says...
> Bonjour,
>
> Si sur chaque poste l'instance SQL Server que tu utilises est l'instance
> local alors une chaine de connexion contenant "Data Source=localhost" ou bien
> "Data Source=(local)" devrait fonctionner. Dans le cas où tu utilises des
> instances nommées tout dépend si tu as des règles précises pour savior
> quelles instances choisir.
>
> Laulau
>
> "JohnPaulGeorgeRingo" a écrit :
>
> >
> > bonjour
> > je developpe en asp.net 2.0 VB sur 3 postes differents et le nom du
> > serveur sql est bien sur different sur chacun des postes.
> > je souhaiterai recuperer son nom (server name je crois) dans une
> > variable que je passe ensuite dans une chaine de connection devenu
> > dynamique.
> > cela me permettrai de ne plus avoir (sur chaque machine dans laquelle je
> > mets a jour le dernier dev du site) a remodifier le "Data Source="
> > ---------------------------------------------------------------------
> > Cordialement
> > JPGR
> > "A splendid time is guaranteed for all"
> >
>

--
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"



Avatar
Fred
Dans : news:
JohnPaulGeorgeRingo écrit :

en fait je voudrais pouvoir au premier demarrage de mon programme
(initialisation) "voir" tous les serveurs sql presents sur le reseau
et pouvoir choisir celui qui sera le bon



Bonjour,
En complément de la réponse de Laulau
J'utilise ceci en framework 2.0

System.Data.SqlClient
SqlClientFactory.CreateDataSourceEnumerator

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
JohnPaulGeorgeRingo
merci, encore merci pour vos lumieres
j'ai enfin trouvé ceci.....
http://msdn2.microsoft.com/fr-fr/library/a6t1z9x2.aspx

Énumération d'instances de SQL Server

SQL Server 2000 et SQL Server 2005 permettent à des applications de
trouver des instances de SQL Server dans le réseau actuel. La classe
SqlDataSourceEnumerator expose ces informations au développeur
d'applications, en fournissant un DataTable contenant des informations
sur tous les serveurs visibles. Cette table retournée contient une liste
des instances de serveur disponibles sur le réseau, qui correspond à
celle fournie quand un utilisateur tente de créer une nouvelle connexion
et développe la liste déroulante contenant tous les serveurs disponible s
dans la boîte de dialogue Propriétés des connexions. Les résultats
affichés ne sont pas toujours complets.

Imports System.Data.Sql
Imports System.Data

Module Module1
Sub Main()
' Retrieve the enumerator instance and then the data.
Dim instance As SqlDataSourceEnumerator = _
SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()

' Display the contents of the table.
DisplayData(table)

Console.WriteLine("Press any key to continue.")
Console.ReadKey()
End Sub

Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
Next
Console.WriteLine("================ ============")
Next
End Sub
End Module

malheureusement ce mode ne fonctionne pas chez moi sur une page web
je regarde vos solutions et je reviens vers vous ;)
---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
Fred
Dans : news:
JohnPaulGeorgeRingo écrit :

malheureusement ce mode ne fonctionne pas chez moi sur une page web



C'est peut-être dû au fait que le service SQL Browser n'est pas activé
sur les serveurs ? Ou autres limitations liées au réseau (firewall) ?
Fais une recherche sur ce service dans la msdn pour voir comment il
interagit avec des instances de SQL 2000 et les ports à ouvrir.
Normalement, cela te retourne exactement ce que tu peux voir dans
Management Studio lorsque tu demandes à parcourir le réseau dans la
fenêtre de login.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
JohnPaulGeorgeRingo
merci !
j'ai activé le service sql browser
j'ai reactivé le firewall de xp
j'ai lancé les scripts dos batch proposés par microsoft
rien n'y fait
voici les services arretes :
SQL Server Active Directory Helper (desactivé)
SQL Server Analysis Services (MSSQLSERVER)(manuel arreté)
SQL Server Integration Services (manuel arreté)
SQL Server VSS Writer (manuel arreté)

oui je sais je dois avoir une ##*%@@ quelque part....
en attendant j'essaye Management.Smo qui semble prometteur lui aussi :)

merci encore pour votre aide, votre attention

---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
Avatar
JohnPaulGeorgeRingo
bonjour !
Smo : excellent mais toujours pas le parcours reseau des serveurs sql
sur machines distantes.
si vous aviez un bout de code....

voici le mien

une info toutefois j'ai bien peur qu'il ne fasse que recuperer le nom
"bios" de la machine.
Je n'ai aucune certitude si ma machine se nomme "yam_SY99" et mon
serveur sql "yam_DX7" qu'il m'affiche bien "yam_DX7"...
merci d'avance pour votre aide




---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"


-----------------------------
Imports Microsoft.SqlServer.Management.Smo
Imports System.Data.Sql
Imports System.Data

Partial Class serveurSQL
Inherits System.Web.UI.Page


Private Function GetListe() As StringBuilder
Dim liste As New StringBuilder
Return liste
End Function

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
connexionSMO()
End Sub


Public Function connexionSMO() As Boolean
Dim monServeur As New Server(Environment.MachineName)
Label1.Text = monServeur.ToString
End Function

Protected Sub BtListBases_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtListBases.Click
listerBases()
End Sub

Public Function listerBases() As StringBuilder

Dim liste As StringBuilder = GetListe()

' Instanciation d'u objet SMO Server
Dim monServeur As New Server(Environment.MachineName)
' Paramétrage du contexte de connexion
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password = "password_sqlServer"
LblServeur.Text = monServeur.ToString
' "bases" va contenir une collection comportant le nom des bases
Dim bases As DatabaseCollection
Dim uneBase As Database

bases = monServeur.Databases
Label1.Text = bases.ToString

For Each uneBase In bases
' utilisation de la méthode Append sur le StringBuilder
"liste"
liste.Append(uneBase.Name.ToString & "</BR>")
Next

' Renvoie du StringBuilder comportant les noms des bases
Label1.Text = liste.ToString
Return liste

End Function

Protected Sub BtSauve_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtSauve.Click
backupBase("baseMaitre", "F:App_DatabaseMaitre.bak")

End Sub

Public Function backupBase(ByVal baseASauvergarder As String, ByVal
fichierSauvegarde As String) As Boolean


Dim etatSauvegarde As Boolean

Try

Dim monServeur As New Server(Environment.MachineName)
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password =
"password_sqlServer"

' Instanciation d'un objet SMO.Backup qui va nous permettre
de réaliser notre backup
Dim maSauvegarde As New Backup

' Définition du type d'action de sauvergarde
maSauvegarde.Action = BackupActionType.Database

' Base de données à sauvegarder
' maSauvegarde.Database = nomBaseBackup
maSauvegarde.Database = baseASauvergarder

' Choix du périph et de la destination de la sauvegarde
maSauvegarde.Devices.AddDevice(fichierSauvegarde,
DeviceType.File)

' Réalisation de la sauvegarde
maSauvegarde.SqlBackup(monServeur)

etatSauvegarde = True

Catch ex As SmoException

etatSauvegarde = False
Response.Write(ex.Message)

End Try

Return etatSauvegarde

End Function

Protected Sub BtRecup_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtRecup.Click
restaureBase("F:App_DatabaseMaitre.bak", "baseMaitre")
End Sub

Public Function restaureBase(ByVal cheminSauvegarde As String, ByVal
nomBase As String) As Boolean
Dim etatRestauration As Boolean
Try
Dim monServeur As New Server(Environment.MachineName)
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password =
"password_sqlServer"

' Instanciation d'un objet SMO.Restore qui va nous permettre
de réaliser notre restauration
Dim maRestauration As New Restore

' Nom de la base à restaurer
maRestauration.Database = nomBase

' Type de restauration : restauration d'une base de données
maRestauration.Action = RestoreActionType.Database

' Chemin vers le fichier ou se trouve la sauvegarde à
restaurer
maRestauration.Devices.AddDevice(cheminSauvegarde,
DeviceType.File)

' Action à effectuer si la base existe déjà
maRestauration.ReplaceDatabase = True

' Réalisation de la restauration
maRestauration.SqlRestore(monServeur)

etatRestauration = True

Catch ex As SmoException
etatRestauration = False
Response.Write(ex.Message)
End Try
Return etatRestauration

End Function

Protected Sub BtServeurs_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtServeurs.Click
serveur2()
serveur()
End Sub

Public Sub serveur2()
' Retrieve the enumerator instance, and
' then retrieve the data sources.
Dim instance As SqlDataSourceEnumerator =
SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()

' Filter the sources to just show SQL Server 2005 instances.
Dim rows() As DataRow = table.Select("Version LIKE '9%'")
For Each row As DataRow In rows
LblServeur.Text &= "|" & row("ServerName")

Next
'Console.WriteLine("Press any key to continue.")
'Console.ReadKey()

End Sub

Public Sub serveur()
'----------------------------------------------------------
' Retrieve the enumerator instance and then the data.
Dim instance As SqlDataSourceEnumerator =
SqlDataSourceEnumerator.Instance
Dim table As DataTable = instance.GetDataSources()

' Display the contents of the table.
DisplayData(table)

'Console.WriteLine("Press any key to continue.")
'Console.ReadKey()
'----------------------------------------------------------
End Sub

Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
LblServeur.Text &= "|" & "{0} = {1}" & "|" &
col.ColumnName & "|" & row(col)
Next
'Response.Write("=============== =============")
Next
End Sub
End Class
Avatar
Laulau
Bonjour,

Voici un bout de code avec SMO pour obtenir la liste des instances SQL
Server en local mais aussi sur les machines distantes :

DataTable dtInstances = null;
dtInstances = SmoApplication.EnumAvailableSqlServers(false);

Pour la description des colonnes du datatable et plus généralement la
description de la méthode employée je te laisse te référer au lien MSDN
suivant :
http://msdn2.microsoft.com/en-us/library/ms210334.aspx

Laulau

"JohnPaulGeorgeRingo" a écrit :

bonjour !
Smo : excellent mais toujours pas le parcours reseau des serveurs sql
sur machines distantes.
si vous aviez un bout de code....

voici le mien

une info toutefois j'ai bien peur qu'il ne fasse que recuperer le nom
"bios" de la machine.
Je n'ai aucune certitude si ma machine se nomme "yam_SY99" et mon
serveur sql "yam_DX7" qu'il m'affiche bien "yam_DX7"...
merci d'avance pour votre aide




---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"


-----------------------------
Imports Microsoft.SqlServer.Management.Smo
Imports System.Data.Sql
Imports System.Data

Partial Class serveurSQL
Inherits System.Web.UI.Page


Private Function GetListe() As StringBuilder
Dim liste As New StringBuilder
Return liste
End Function

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
connexionSMO()
End Sub


Public Function connexionSMO() As Boolean
Dim monServeur As New Server(Environment.MachineName)
Label1.Text = monServeur.ToString
End Function

Protected Sub BtListBases_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtListBases.Click
listerBases()
End Sub

Public Function listerBases() As StringBuilder

Dim liste As StringBuilder = GetListe()

' Instanciation d'u objet SMO Server
Dim monServeur As New Server(Environment.MachineName)
' Paramétrage du contexte de connexion
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password = "password_sqlServer"
LblServeur.Text = monServeur.ToString
' "bases" va contenir une collection comportant le nom des bases
Dim bases As DatabaseCollection
Dim uneBase As Database

bases = monServeur.Databases
Label1.Text = bases.ToString

For Each uneBase In bases
' utilisation de la méthode Append sur le StringBuilder
"liste"
liste.Append(uneBase.Name.ToString & "</BR>")
Next

' Renvoie du StringBuilder comportant les noms des bases
Label1.Text = liste.ToString
Return liste

End Function

Protected Sub BtSauve_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtSauve.Click
backupBase("baseMaitre", "F:App_DatabaseMaitre.bak")

End Sub

Public Function backupBase(ByVal baseASauvergarder As String, ByVal
fichierSauvegarde As String) As Boolean


Dim etatSauvegarde As Boolean

Try

Dim monServeur As New Server(Environment.MachineName)
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password =
"password_sqlServer"

' Instanciation d'un objet SMO.Backup qui va nous permettre
de réaliser notre backup
Dim maSauvegarde As New Backup

' Définition du type d'action de sauvergarde
maSauvegarde.Action = BackupActionType.Database

' Base de données à sauvegarder
' maSauvegarde.Database = nomBaseBackup
maSauvegarde.Database = baseASauvergarder

' Choix du périph et de la destination de la sauvegarde
maSauvegarde.Devices.AddDevice(fichierSauvegarde,
DeviceType.File)

' Réalisation de la sauvegarde
maSauvegarde.SqlBackup(monServeur)

etatSauvegarde = True

Catch ex As SmoException

etatSauvegarde = False
Response.Write(ex.Message)

End Try

Return etatSauvegarde

End Function

Protected Sub BtRecup_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtRecup.Click
restaureBase("F:App_DatabaseMaitre.bak", "baseMaitre")
End Sub

Public Function restaureBase(ByVal cheminSauvegarde As String, ByVal
nomBase As String) As Boolean
Dim etatRestauration As Boolean
Try
Dim monServeur As New Server(Environment.MachineName)
'monServeur.ConnectionContext.LoginSecure = False
'monServeur.ConnectionContext.Login = "login_sqlServer"
'monServeur.ConnectionContext.Password =
"password_sqlServer"

' Instanciation d'un objet SMO.Restore qui va nous permettre
de réaliser notre restauration
Dim maRestauration As New Restore

' Nom de la base à restaurer
maRestauration.Database = nomBase

' Type de restauration : restauration d'une base de données
maRestauration.Action = RestoreActionType.Database

' Chemin vers le fichier ou se trouve la sauvegarde à
restaurer
maRestauration.Devices.AddDevice(cheminSauvegarde,
DeviceType.File)

' Action à effectuer si la base existe déjà
maRestauration.ReplaceDatabase = True

' Réalisation de la restauration
maRestauration.SqlRestore(monServeur)

etatRestauration = True

Catch ex As SmoException
etatRestauration = False
Response.Write(ex.Message)
End Try
Return etatRestauration

End Function

Protected Sub BtServeurs_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles BtServeurs.Click
serveur2()
serveur()
End Sub

Public Sub serveur2()
' Retrieve the enumerator instance, and
' then retrieve the data sources.
Dim instance As SqlDataSourceEnumerator =
SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()

' Filter the sources to just show SQL Server 2005 instances.
Dim rows() As DataRow = table.Select("Version LIKE '9%'")
For Each row As DataRow In rows
LblServeur.Text &= "|" & row("ServerName")

Next
'Console.WriteLine("Press any key to continue.")
'Console.ReadKey()

End Sub

Public Sub serveur()
'----------------------------------------------------------
' Retrieve the enumerator instance and then the data.
Dim instance As SqlDataSourceEnumerator =
SqlDataSourceEnumerator.Instance
Dim table As DataTable = instance.GetDataSources()

' Display the contents of the table.
DisplayData(table)

'Console.WriteLine("Press any key to continue.")
'Console.ReadKey()
'----------------------------------------------------------
End Sub

Private Sub DisplayData(ByVal table As DataTable)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
LblServeur.Text &= "|" & "{0} = {1}" & "|" &
col.ColumnName & "|" & row(col)
Next
'Response.Write("============================")
Next
End Sub
End Class



Avatar
JohnPaulGeorgeRingo
merci beaucoup
j'essaye

---------------------------------------------------------------------
Cordialement
JPGR
"A splendid time is guaranteed for all"
1 2