OVH Cloud OVH Cloud

Verifier l'existance d'une base

3 réponses
Avatar
Dge
Bonjour à tous,

Je cherche à verifier l'existance d'une base sur un serveur.
Si elle existe je fais un truc sinon un autre.

Le soucis c'est qu'en faisant :

USE base
Select * from table

si la base n'existe pas, une erreur est générée.

Il me faudrait un truc style

If exists (USE table)
...

Et cela est impossible.

Quelqu'un a t il une idée ?

Merci par avance

Dge

3 réponses

Avatar
bruno reiter [MVP]
IF EXISTS (SELECT * FROM MASTER.DBO.SYSDATABASES WHERE NAME = 'PUBSI')
BEGIN
GOTO PUBS
END
ELSE
BEGIN
GOTO NORTHWIND
END

PUBS:
USE PUBS
GOTO DEBUT

NORTHWIND:
USE NORTHWIND
GOTO DEBUT

DEBUT:

SELECT * FROM DBO.SYSOBJECTS



br

"Dge" wrote in message
news:
Bonjour à tous,

Je cherche à verifier l'existance d'une base sur un serveur.
Si elle existe je fais un truc sinon un autre.

Le soucis c'est qu'en faisant :

USE base
Select * from table

si la base n'existe pas, une erreur est générée.

Il me faudrait un truc style

If exists (USE table)
...

Et cela est impossible.

Quelqu'un a t il une idée ?

Merci par avance

Dge


Avatar
Fred BROUARD
Si c'est en production que tu veut faire ce test, mieux vaut utiliser les vues
d'information de schéma (INFORMATION_SCHEMA.SCHEMATA) et non les tables systèmes
(SYSDATABASES) en effet, Microsoft se réserve le droit de modifier sans préavis
la structure des tables systèmes car elles sont réservées à l'usage interne. En
revanche les vues d'information de schéma sont normalisée (SQL:1992) et leur
structure ne varie pas d'une version à l'autre.

Donc :

IF EXISTS (SELECT *
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE CATALOG_NAME = 'PUBSI')
...

Autre chose : ce que t'as donné bruno :
IF EXISTS (SELECT * FROM MASTER.DBO.SYSDATABASES WHERE NAME = 'PUBSI')
Est susceptible de ne pas fonctionner si le serveur a été installé avec une
collation forte.
En effet il faut faire :
IF EXISTS (SELECT * FROM master.dbo.sysdatabases WHERE name = 'PUBSI') ...
car les noms des objets MS SQL Server sont la plupart du temps en minuscule

A +


--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Dge a écrit:
Bonjour à tous,

Je cherche à verifier l'existance d'une base sur un serveur.
Si elle existe je fais un truc sinon un autre.

Le soucis c'est qu'en faisant :

USE base
Select * from table

si la base n'existe pas, une erreur est générée.

Il me faudrait un truc style

If exists (USE table)
...

Et cela est impossible.

Quelqu'un a t il une idée ?

Merci par avance

Dge


Avatar
Dge
Merci encore pour vos reponses super rapides et tres claires.

Dge