Pb de droits sur la base TempDB d'SQL Server

Signaler
Messages postés
76
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
8 septembre 2006
-
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
-
Bonjour,

Voilà, mon appli utilise la base Tempdb d'SQL server. Le truc de cette base, c'est qu'elle se vide à chaque redémarrage d'SQL server. Le Pb est le suivant: j'ai crée un user propriétaire de tempdb mais celui ci se fait virer au redémarrage du server. C'est un poil pénible...
Qqun saurait'il pallier à ça???
Merci d'avance!

6 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Je ne connais rien de SQL Server, mais vu le nom de ta base et des explications que tu donne, je dirais que cette base est une base temporaire créée par le server à destination exclusive de celui-ci.

Tu ne devrais en aucun cas, je pense, utiliser cette base directement. Seul le serveur devrai avoir accès à cette base.

C'est un peu comme si tu allais ouvrir directement avec ton appli le fichier de mémoire virtuelle de Windows.

Quant à t'approprier la propriété du fichier, au mieux tu n'y arrivera pas, au pire tu risque de faire planté le serveur SQL voire de foutre en l'air toute la config peut-etre.

Soit prudent quand même.

Sevyc64  (alias Casy)
<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
76
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
8 septembre 2006

Euh, désolé de te contredire, mais la base tempDB est faite exprès pour être utilisée, elle est optimisée poour les opérations temporaires.
Ceci est tiré de la doc Microsoft:





Base de données tempdb 

<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->





Mis à jour : 5 décembre 2005


La base de données système tempdb est une ressource globale disponible pour tous les utilisateurs connectés à l'instance de SQL Server et sert de conteneur aux éléments suivants :



<li>Les objets utilisateurs temporaires créés explicitement, tels que : les tables temporaires locales ou globales, les procédures stockées temporaires, les variables de table ou les curseurs.
</li>
<li>Les objets internes créés par Moteur de base de données SQL Server 2005, par exemple, les tables de travail servant à stocker des résultats intermédaires pour les mises en attente ou le tri.
</li>
<li>Les versions de ligne générées par les transactions de modification de données dans une base de données qui utilise l'isolement de capture instantanée read committed ou les transactions d'isolement de capture instantanée.
</li>
<li>Les versions de ligne générées par des transactions de modification de données pour des fonctionnalités telles que : les opérations d'index en ligne, les déclencheurs et les connexions MARS (Multiple Active Result Sets).
</li>

Les opérations effectuées dans tempdb sont soumises à un enregistrement minimal dans le journal. Les transactions peuvent ainsi être restaurées. La base de données tempdb est recréée à chaque redémarrage SQL Server, de sorte que le système démarre toujours avec une copie vide de cette base de données. Les tables et les procédures stockées temporaires sont automatiquement supprimées à la déconnexion et aucune connexion n'est active lorsque le système est arrêté. Par conséquent, aucune donnée de la base de données tempdb ne doit être enregistrée d'une session de SQL Server à l'autre.
Messages postés
76
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
8 septembre 2006

Euh, au fait tu t'appelle Casy en référence à Casimodo??? c'est pas très flatteur...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Merci pour les explications, ça prouve effectivement que je ne connais rien à SQL Server. Il y a certainement une utilité de donner accès à des infos temporaires donc par définitions volatiles et pas forcement à jours. Mais bon, faut connaitre et je ne connais.

D'un autre coté avec ces explications, tu donne toi même la réponse à ta question : "... aucune donnée de la base de données tempdb ne doit être enregistrée d'une session de SQL Server à l'autre". Donc par conséquent ce que tu essaye de faire n'est tout simplement pas à faire.
Le risque est bien de corrompre petit à petit ta base et à terme de planté le serveur, les transactions, ou d'avoir des données completement fausses. C'est clairement dit : "La base de données tempdb est recréée à chaque redémarrage SQL
Server, de sorte que le système démarre toujours avec une copie vide de
cette base de données".

Et non, mon pseudo ne viens pas de Casimodo, mais de mon nom, ceux qui me connaissent ont vite fait de trouver l'astuce
Puis moi c'est pas Casimodo, mais plutot Calimero

Sevyc64  (alias Casy)
<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
76
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
8 septembre 2006

Meeeeuuuuh non, on ne corrompt pas un server SQL en utilisant la tempDb... Tu peux me croire. Et à vrai dire, c'est pas mon application qui fait ça, c'est un sytèe proffessionnel (mondialement utilisé), développé par des gens assez doués... Moi je ne suis qu'un humble consultant intégrateur...
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
7
Salut à tous,


tempdb comme tout le monde l'a fait remarqué est une base de données destinée à contenir des "choses" temporaires, on peut y mettre quasiement ce que l'on veut, mais au redémarrage du serveur (du service SQL) elle est vidée.


Quant à la question de l'utilisateur créée dedans, quelques explications s'imposent. Un utilisateur est un compte définie dans une base de données qui ne lui donne des droits que dans cette base de données, donc un utilisateur créée dans une base de données ne peut être propriétaire de la base de données. De plus tempdb étant une base de données système, elle est forcément la propriété de sa, comme toutes les bases de données systèmes. Elle dispose aussi de droits par défaut, en fait tout le monde à accès à cette base de données s'il peut se connecter au serveur.

En tout cas aucuns risques à utiliser tempdb, il faut juste savoir que ce qu'il y a dedans est à durée de vie limitée.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration