Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2011, 09h55   #1
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
Par défaut requete sur bases différentes

Salut à tous, j'ai une requete bien arude que je ne sais pas construire.

J'ai, actuellement un dataset (.net) branché sur une base SQL et rempli par une requete spécifique style SELECT A,B,C,... FROM MaTableSQLDans le cas d'une migration d'application, je dois désormais brancher mon dataset, aussi, sur une base propriétaire accessible à travers un driver ODBC.

Donc en gros il faudra que je modifie ma requete du dataset de la sorte :
Code :
1
2
3
SELECT A,B,C,... FROM MaTableSQL
UNION
SELECT Z,Y,X, ... FROM MaSourceODBC.MaTableProprio
Le tout évidemment en gérant les logins et pwd de connexion ODBC sans que l'utilisateur ait quoique ce soit à saisir.
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 10h09   #2
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Pourquoi ne pas utiliser un linked server dans ce cas ?
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 10h11   #3
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Ca ne marche pas en liant la base ODBC à ton serveur SQL Server ?

Sinon, tu peux faire deux dataset en .NET, et les merger ensuite depuis le code, ça doit se faire, et ce sera pas forcément plus lent.

Sinon, d'après ce que j'ai compris, il vaut mieux faire un :

Code :
1
2
3
4
5
 
SELECT a, b, c...
FROM matable
union ALL
SELECT a, b, c FROM openrowset(provider, cnxstring, SELECT a, b, c... FROM matable')
C'est plus performant, surtout si tu as un filtre dans la requête sur les données distantes.
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/09/2011, 10h18   #4
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
oui, mes requêtes auront des filtres, différent pour chaque requête en plus.

J'en suis à récupérer le code de la première requête qui fait déjà une trentaine de ligne et je vais essayer d'y greffer dessus la seconde que je dois créer.
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 13h59   #5
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
Bon j'ai fait quelques tests, non concluant. Comme provider pour openRowSet, j'utilise MSDAOSP, mais j'ai systématiquement une erreur comme quoi le serveur doit être lié.
Je n'ai pas accès au serveur SQL et le driver ODBC n'est pas installé sur le serveur physique ou tourne le serveur SQL.

J'ai donc essayer sur mon poste avec un SQLExpress, mais je ne peux pas monter mon ODBC en serveur lié, car apparement le SQLExpress est un 64bits et mon driver n'est compatible que 32bits.

Faut-il obligatoirement un serveur lié pour openrowset ?
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h15   #6
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Pas à ma connaissance.

Normalement, une fois que tu as indiqué le provider, tu peux spécifier une connexion string "dsn less", qui devrait t'affranchir de la notion de serveur lié.

A vérifier tout de même, ça fait (TRES) longtemps que j'y a pas touché, et c'était avec SQL Server 2000, ça a peut-être changé depuis !
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h31   #7
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
Le serveur de prod est un SQL2000 et j'utilise ça :
Code :
FROM openrowset('MSDAOSP',DSN=toto;uid=titi;pwd=tutu','SELECT ...')
Ça vient peut-être du fait alors que le driver ODBC n'y est pas encore installé. Il va falloir que je coince l'admin système pour, déjà savoir si le serveur est un 32 ou 64bits, et ensuite pour installer le driver odbc.
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h36   #8
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Oui mais il faut quand même que le driver adéquat soit installé dans le serveur.

Quel est le type de db à accéder en odbc ?
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h38   #9
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
base propriétaire SAGE
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h52   #10
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Il faut donc installer les drivers pour accéder à cette db propriétaire et créer une source de données système (ODBC) dans le serveur sql, et openrowset devrait alors fonctionner correctement.
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 15h35   #11
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Je vois aussi que votre connexion string passe par un DSN (ça existe encore ça ? )

N'oubliez donc pas de le créer dans le panneau de configuration (sources de données 32 bits)
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 15h39   #12
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
ben oui, ça existe encore ! Les connexions ODBC passent par des sources DSN.


Par contre, mon SQLExpress tourne en 64bits apparemment, comment le faire tourner en 32bits pour pouvoir faire mes tests avant d'attaquer le serveur de prod ? L'instance est modifiable, ou il faut réinstaller une nouvelle instance ?
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 16h04   #13
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Citation:
Envoyé par sevyc64 Voir le message
ben oui, ça existe encore ! Les connexions ODBC passent par des sources DSN.


Par contre, mon SQLExpress tourne en 64bits apparemment, comment le faire tourner en 32bits pour pouvoir faire mes tests avant d'attaquer le serveur de prod ? L'instance est modifiable, ou il faut réinstaller une nouvelle instance ?
Selon les drivers, il existe des chaines de connexion DSN-less même pour de l'ODBC.

En revanche, à part réinstaller SQL Server Express en version 32 bits, je n'ai pas de solution à vous proposer.

PS : Et chez Sage, ils ont pas de drivers 64 bits ?
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h35.


 
 
 
 
Partenaires

Hébergement Web