OVH Cloud OVH Cloud

Lister les bases utilisateurs

4 réponses
Avatar
Christophe
Bonjour,
Par l'intermédiaire des plans de maintenances ont peut définir soit les
bases utlisateurs soit les bases systèmes.
Ma question est donc la suivantes :
Est-il possible de faire la même choses en SQL sachant qu'à première vue
dans sysdatabases je ne vois pas comment les distinguer ?
merci d'avance.

Christophe

4 réponses

Avatar
jcampo
Bonjour Christophe

Il y a 4 bases system dans SQL server: Tempdb, master, msdb et model... donc
on peut considérer que toutes les autres sont des user databases.

http://msdn.microsoft.com/library/en-us/architec/8_ar_da2_1lcx.asp?frame=true

Si on utilise les vues information_schema (c'est préférable plutôt que
d'utiliser directement les tables systèmes , exemple master..sysdatabases),
on peut utiliser sans trop de risques:

SELECT CATALOG_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME NOT
IN ('TEMPDB','MASTER','MODEL','MSDB')

Cordialement,



"Christophe" a écrit :

Bonjour,
Par l'intermédiaire des plans de maintenances ont peut définir soit les
bases utlisateurs soit les bases systèmes.
Ma question est donc la suivantes :
Est-il possible de faire la même choses en SQL sachant qu'à première vue
dans sysdatabases je ne vois pas comment les distinguer ?
merci d'avance.

Christophe


Avatar
Michel PRIORI
Ajouter la base DISTRIBUTION qui n'existe qu'en cas de replication.

"" a écrit :

Bonjour Christophe

Il y a 4 bases system dans SQL server: Tempdb, master, msdb et model... donc
on peut considérer que toutes les autres sont des user databases.

http://msdn.microsoft.com/library/en-us/architec/8_ar_da2_1lcx.asp?frame=true

Si on utilise les vues information_schema (c'est préférable plutôt que
d'utiliser directement les tables systèmes , exemple master..sysdatabases),
on peut utiliser sans trop de risques:

SELECT CATALOG_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME NOT
IN ('TEMPDB','MASTER','MODEL','MSDB')

Cordialement,



"Christophe" a écrit :

> Bonjour,
> Par l'intermédiaire des plans de maintenances ont peut définir soit les
> bases utlisateurs soit les bases systèmes.
> Ma question est donc la suivantes :
> Est-il possible de faire la même choses en SQL sachant qu'à première vue
> dans sysdatabases je ne vois pas comment les distinguer ?
> merci d'avance.
>
> Christophe


Avatar
Fred BROUARD
a écrit:
Bonjour Christophe

Il y a 4 bases system dans SQL server: Tempdb, master, msdb et model... donc
on peut considérer que toutes les autres sont des user databases.

http://msdn.microsoft.com/library/en-us/architec/8_ar_da2_1lcx.asp?frame=true

Si on utilise les vues information_schema (c'est préférable plutôt que
d'utiliser directement les tables systèmes , exemple master..sysdatabases),
on peut utiliser sans trop de risques:

SELECT CATALOG_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME NOT
IN ('TEMPDB','MASTER','MODEL','MSDB')



Attention : cette requête est fausse si la collation du serveur est sensible à
la casse.

Donc :

SELECT CATALOG_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE CATALOG_NAME NOT IN ('tempdb','master','model','msdb', 'distribution')

A +


Cordialement,



"Christophe" a écrit :


Bonjour,
Par l'intermédiaire des plans de maintenances ont peut définir soit les
bases utlisateurs soit les bases systèmes.
Ma question est donc la suivantes :
Est-il possible de faire la même choses en SQL sachant qu'à première vue
dans sysdatabases je ne vois pas comment les distinguer ?
merci d'avance.

Christophe





--
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 *************************
Avatar
Christophe
bonjour,

et merci à tous pour cette information je n'avais effectivement pas pensé à
cela.

merci et @+

"Fred BROUARD" a écrit :



a écrit:
> Bonjour Christophe
>
> Il y a 4 bases system dans SQL server: Tempdb, master, msdb et model... donc
> on peut considérer que toutes les autres sont des user databases.
>
> http://msdn.microsoft.com/library/en-us/architec/8_ar_da2_1lcx.asp?frame=true
>
> Si on utilise les vues information_schema (c'est préférable plutôt que
> d'utiliser directement les tables systèmes , exemple master..sysdatabases),
> on peut utiliser sans trop de risques:
>
> SELECT CATALOG_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME NOT
> IN ('TEMPDB','MASTER','MODEL','MSDB')

Attention : cette requête est fausse si la collation du serveur est sensible à
la casse.

Donc :

SELECT CATALOG_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE CATALOG_NAME NOT IN ('tempdb','master','model','msdb', 'distribution')

A +

>
> Cordialement,
>
>
>
> "Christophe" a écrit :
>
>
>>Bonjour,
>>Par l'intermédiaire des plans de maintenances ont peut définir soit les
>>bases utlisateurs soit les bases systèmes.
>>Ma question est donc la suivantes :
>>Est-il possible de faire la même choses en SQL sachant qu'à première vue
>>dans sysdatabases je ne vois pas comment les distinguer ?
>>merci d'avance.
>>
>>Christophe

--
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 *************************