Bonjour,
Voila tout ets dans le titre, je souhaite alimenté une table sur un serveur différent et donc sur une instance différente dans une base de données de nom différent.
Actuellement, je rempli ma table en local... comment faire ?
merci beaucoup
Version imprimable
Bonjour,
Voila tout ets dans le titre, je souhaite alimenté une table sur un serveur différent et donc sur une instance différente dans une base de données de nom différent.
Actuellement, je rempli ma table en local... comment faire ?
merci beaucoup
Regade du côté des Linked Server
Tu ajoutes un serveur lié et tu deal avec ensuite...
Tu as deux possibilités:
- Utiliser des serveurs liées en préfixant ta table de la manière suivante:
nomServeur.nomBase.propriétaire.nomTable
- Utiliser la fonction opendatasource().nomBase.propriétaire.nomTable
Le serveur lié est recommandé si tu dois effectuer plusieurs opérations vers ton autres instances.
Dans le cadre de connexion ponctuelle, tu peux utiliser la fonction opendatasource.
avant de lancer ta requête il faut que le serveur distant soit lié à ton serveur local, pour ce faire tu lance la commande :
après :Code:sp_addlinkedserver [nomServeurDistant]
tu peux faire ce que tu veux à partir de ton serveur local du genre :
Bon courage :mouarf:Code:
1
2
3
4 SELECT * FROM nomServeurDistant.nomBaseDonnees.dbo.nomTable
merci pour vos réponses, je suis en train de faire des tests mais cela ne marche pas :
je faismon serveur est SNS-TECHNETCode:sp_addlinkedserver [SNS-TECHNET]
puis :
Avec SNSTECHNET2005 qui est mon instance, mais cela me renvoie une erreur à la creation de la requete :Code:INSERT INTO [SNSTECHNET2005.SNSTechNetWeb.dbo.SNSTechNet_MsspReports]
Code:
1
2 Msg*15028, Niveau*16, État*1, Procédure*sp_MSaddserver_internal, Ligne*89 Le serveur*'SNS-TECHNET' existe déjà.
si tu as bien lu le message d'erreur tu comprendras qu'il te faudra juste d'enlever leCitation:
Envoyé par dahu17
car apparemnt tes deux serveurs sont déjà linkés.Code:sp_addlinkedserver [SNS-TECHNET]
exécutes directement ta requête d'insertion.
question bete tes serveurs sont sur un même réseau?
oui quand même, mais je ne te jette pas la piere lol, tu as raison de poser la question. mais j'ai quand même une erreur lorsque j'essaye de passer des parametres :
mon code :Code:
1
2 Msg*208, Niveau*16, État*1, Procédure*SNSTechNet_Generer_mssp, Ligne*82 Nom d'objet 'SNSTECHNET2005.SNSTechNetWeb.dbo.SNSTechNet_MsspReports' non valide.
Code:
1
2 INSERT INTO [SNSTECHNET2005.SNSTechNetWeb.dbo.SNSTechNet_MsspReports] ( ProduitNumeroSerie, SiteNom, PersonneEmail, Report, ReportFrequency, ReportFirewall, ReportWeb, ReportIps, ReportContent) VALUES (@ProduitSN, @SiteNom, @Mail, @Report, @Frequencyid, @Firewallid, @Webid, @Ipsid, @Contentid)
Certainement ;)
Ok lol, merci pour les infos, je vais essayer de depatouiller tout ca 8O
es-tu sur que tes tables ont bien pour propriétaire dbo
tu peux faire sans dboCitation:
SNSTECHNET2005.SNSTechNetWeb.dbo.SNSTechNet_MsspReports'
Code:SNSTECHNET2005.SNSTechNetWeb..SNSTechNet_MsspReports'
j'ai essayé une autre syntaxe et ca a l'air mieu, mais cela m'étone de ne pas devoir spécifier une authentification SQL...
j'ai ce message d'erreur :
Code:
1
2
3
4 Le fournisseur OLE DB 'SQLNCLI' du serveur lié 'SNS-TECHNET' a retourné le message 'Délai d'attente de connexion expiré'. Le fournisseur OLE DB 'SQLNCLI' du serveur lié 'SNS-TECHNET' a retourné le message 'Une erreur s'est produite lors de l'établissement d'une connexion au serveur. Lors de la connexion à SQL Server 2005, cet échec peut être dû au fait que les paramètres par défaut de SQL Server n'autorisent pas les connexions à distance.'. Msg*2, Niveau*16, État*1, Ligne*0 Fournisseur de canaux nommés : Impossible d'ouvrir une connexion à SQL Server [2].
Citation:
Envoyé par dahu17
essaie avec :
tes paramètres sont bien typés?Code:
1
2 INSERT INTO SNSTECHNET2005.SNSTechNetWeb.dbo.SNSTechNet_MsspReports( ProduitNumeroSerie, SiteNom, PersonneEmail, Report, ReportFrequency, ReportFirewall, ReportWeb, ReportIps, ReportContent) VALUES (@ProduitSN, @SiteNom, @Mail, @Report, @Frequencyid, @Firewallid, @Webid, @Ipsid, @Contentid)
EUhhh, je ne sais pas si mes parametres sont typés mais ce dont je suis sur c'est que c'est une erreur de communication !
toujours la même erreur :
Code:
1
2
3
4 Le fournisseur OLE DB 'SQLNCLI' du serveur lié 'SNS-TECHNET' a retourné le message 'Délai d'attente de connexion expiré'. Le fournisseur OLE DB 'SQLNCLI' du serveur lié 'SNS-TECHNET' a retourné le message 'Une erreur s'est produite lors de l'établissement d'une connexion au serveur. Lors de la connexion à SQL Server 2005, cet échec peut être dû au fait que les paramètres par défaut de SQL Server n'autorisent pas les connexions à distance.'. Msg*2, Niveau*16, État*1, Ligne*0 Fournisseur de canaux nommés : Impossible d'ouvrir une connexion à SQL Server [2].
j'avance :
comment on spécifie l'utilisateur ?Code:
1
2 Msg*18452, Niveau*14, État*1, Ligne*1 Échec de l'ouverture de session de l'utilisateur*''. L'utilisateur n'est pas associé à une connexion SQL Server approuvée.
il te faut passer par un OPENQUERY
http://msdn2.microsoft.com/en-US/lib...8(SQL.80).aspx
car un insert direct passe par ton authentification windows et pas celle de SQL serveur donc si ton compte windows n'est pas autorisé sur le serveur lié :cry:
je suis sur que c'est pas loin mais je ne m'en sors pas et j'essaye plein de méthodes, mes yeux vont tomber je crois
ca marche pas avec openquery ?
ou tu sais pas comment faire ?
Quand tu essaie un simple SELECT à partir de ton PC local mais sur la base du serveur distant est ce que ça marche?
quand tu fais :
ça donne quoi?Code:
1
2 SELECT * FROM [ServeurDistant].DBO.taBase.taTable
cela ne marche pas car je fais la requete mais je n'ai pas les droits...
j'ai cette erreur :
Code:
1
2
3
4
5 Le fournisseur OLE DB 'SQLNCLI' du serveur lié 'SRV-LOGS' a retourné le message 'Échec de la liaison de communication'. Msg*10054, Niveau*16, État*1, Ligne*0 Fournisseur TCP : Une connexion existante a dû être fermée par l'hôte distant. Msg*18452, Niveau*14, État*1, Ligne*0 Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection.