Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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_SERVEUR\MON_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.

4 réponses

Avatar
WonderMan
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.
Avatar
WonderMan
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 !
:-))
Avatar
Fred BROUARD
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 *************************
Avatar
helios services
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