Problème avec un serveur distant et un caractère ''
4 réponses
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 ?
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 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 ! :-))
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 !
:-))
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
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 *************************
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 *************************
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
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 ?
-- Dr Thierry HOLZ HELIOS SERVICES 180 rue de la croix du chene 60250 HEILLES www.openqm.com02.net www.pick.com02.net
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 ?
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 ?