Problème avec un serveur distant et un caractère ''

Le
WonderMan
Bonjour,

Je travaille avec une base de données SQL Server 2005, et elle est
rattachée (linked server) à un autre serveur.

Je cherche à exécuter sur mon serveur une procédure stockée qui fait
appel à une table du serveur distant (le nom du serveur est stocké dans
la variable @SystemName) :

SET @SystemName = 'MON_SERVEURMON_INSTANCE'
SET @sqlCmd = 'SELECT * FROM ' + @SystemName + 'MaBase.dbo.MaTable'
EXECUTE (@sqlCmd)

A l'exécution, j'obtiens une erreur : INCORRECT SYNTAX NEAR ''
Je n'arrive pas à comprendre (ni à résoudre) le problème. IL me
semblait qu'en remplaçant le caractère '' contenu dans @SystemName par
un '\', ce caractère ne poserait plus de problème ?

Merci de vos conseils.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
WonderMan
Le #11880491
Petit ajout à mon message : voici le code complet de ma procédure
stockée (avec la gestion du caractère '', oubliée dans mon message
précédent) :

SET @SystemName = 'MON_SERVEURMON_INSTANCE'
SET @SystemName = REPLACE(@SystemName,'','\')
SET @sqlCmd = 'SELECT * FROM ' + @SystemName + 'MaBase.dbo.MaTable'
EXECUTE (@sqlCmd)

Merci.
WonderMan
Le #11880481
Le 29/04/2008, WonderMan a supposé :
Bonjour,

Je travaille avec une base de données SQL Server 2005, et elle est rattachée
(linked server) à un autre serveur.

Je cherche à exécuter sur mon serveur une procédure stockée qui fait appel à
une table du serveur distant (le nom du serveur est stocké dans la variable
@SystemName) :

SET @SystemName = 'MON_SERVEURMON_INSTANCE'
SET @sqlCmd = 'SELECT * FROM ' + @SystemName + 'MaBase.dbo.MaTable'
EXECUTE (@sqlCmd)

A l'exécution, j'obtiens une erreur : INCORRECT SYNTAX NEAR ''
Je n'arrive pas à comprendre (ni à résoudre) le problème. IL me semblait
qu'en remplaçant le caractère '' contenu dans @SystemName par un '\', ce
caractère ne poserait plus de problème ?

Merci de vos conseils.



J'ai réglé mon problème : il venait du fait que ma variable @sqlCommand
était définie en varchar(40) alors que la chaine que je lui alloue est
bien plus longue que 40 caractères !
Avec un DECLARE @sqlCommand AS VARCHAR(150), ça marche beaucoup mieux !
:-))
Fred BROUARD
Le #11880451
WonderMan a écrit :
Bonjour,

Je travaille avec une base de données SQL Server 2005, et elle est
rattachée (linked server) à un autre serveur.

Je cherche à exécuter sur mon serveur une procédure stockée qui fait
appel à une table du serveur distant (le nom du serveur est stocké dans
la variable @SystemName) :

SET @SystemName = 'MON_SERVEURMON_INSTANCE'
SET @sqlCmd = 'SELECT * FROM ' + @SystemName + 'MaBase.dbo.MaTable'
EXECUTE (@sqlCmd)

A l'exécution, j'obtiens une erreur : INCORRECT SYNTAX NEAR ''
Je n'arrive pas à comprendre (ni à résoudre) le problème. IL me semblait
qu'en remplaçant le caractère '' contenu dans @SystemName par un '\',
ce caractère ne poserait plus de problème ?

Merci de vos conseils.




vous devez utiliser un serveur lié. Pour lier une serveur à un autre,
utilisez les procédures stockées sp_addlinkedserver et sp_addlinkedsrvlogin.

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
helios services
Le #11879011
Fred BROUARD a écrit :
WonderMan a écrit :
Bonjour,

Je travaille avec une base de données SQL Server 2005, et elle est
rattachée (linked server) à un autre serveur.

Je cherche à exécuter sur mon serveur une procédure stockée qui fait
appel à une table du serveur distant (le nom du serveur est stocké
dans la variable @SystemName) :

SET @SystemName = 'MON_SERVEURMON_INSTANCE'
SET @sqlCmd = 'SELECT * FROM ' + @SystemName + 'MaBase.dbo.MaTable'
EXECUTE (@sqlCmd)

A l'exécution, j'obtiens une erreur : INCORRECT SYNTAX NEAR ''
Je n'arrive pas à comprendre (ni à résoudre) le problème. IL me
semblait qu'en remplaçant le caractère '' contenu dans @SystemName
par un '\', ce caractère ne poserait plus de problème ?

Merci de vos conseils.




vous devez utiliser un serveur lié. Pour lier une serveur à un autre,
utilisez les procédures stockées sp_addlinkedserver et
sp_addlinkedsrvlogin.

A +



mais peut on faire confiance à quelqu'un qui prétends coder plus de
65536 valeurs sur 2 octets ?

http://groups.google.com/group/fr.comp.applications.sgbd/msg/621527f995585842?dmode=source





et donc les écrits ont été bannis de wikipedia

--
Dr Thierry HOLZ
HELIOS SERVICES
180 rue de la croix du chene
60250 HEILLES
www.openqm.com02.net
www.pick.com02.net
Publicité
Poster une réponse
Anonyme