Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3069 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Les variables sont-elles stockées dans la base dans MS SQL Server ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les variables sont-elles stockées dans la base dans MS SQL Server ?

n°1634113
Apokrif
Le million ! Le million !
Posté le 30-10-2007 à 21:04:30  profilanswer
 

Bonjour,
 
J'ai une question simple à laquelle je n'ai pas trouvé de réponse en regardant rapidement sur le web: en SQL Server, les variables créées par un utilisateur sont-elles des objets de la table (accessibles par les autres utilisateurs) ou bien est-ce que ce sont des objets temporaires propres à l'utilisateur (comme un variable d'environnement sous DOS)? Je pose la question parce qu'en essayant de créer une procédure, j'ai eu l'erreur "Autorisation CREATE PROCEDURE refusée", ce qui me fait penser que les variables et les procédures sont des objets de la base de données qu'on ne doit pas créer, pour son usage personnel, si on ne veut pas polluer la base (j'ai des besoins simples, par exemple stocker un nombre dans une variable ou constante qui sera utilisée dans plusieurs requêtes, ou stocker le résultat d'une requête dans une variable; je n'ai pas besoin de partager ces variables/constantes avec d'autres utilisateurs).
 
Merci.

mood
Publicité
Posté le 30-10-2007 à 21:04:30  profilanswer
 

n°1634676
MagicBuzz
Posté le 31-10-2007 à 14:35:06  profilanswer
 

ouhla...
 
je crois qu'on part de très loin, je sais pas par où commencer :D
 
en gros.
 
imagine qu'une base de données, c'est comme un dossier utilisateur sous Windows.
=> Chaque table, procédure, etc. sont des fichiers. avec des autorisations, tu peux donner des droits à différents utilisateurs pour certaines actions spécifiques sur ces fichiers.
=> les données à l'intérieur des table sont accessibles à tout ceux qui ont accès à la table.
 
lorsque tu crées un objet dans une base de données, il est associé à ton login. selon les paramètres de ton rôle, il est alors accssible aux autres utilisateurs ou non. mais là ça commence à devenir plus compliqué, et vu que j'utilise jamais 36 utilisateurs, j'ai jamais trop creuse : un compte dbo pour faire de l'administration, et un compte guest pour la consultation, basta.
 
 
pour répondre à tes besoins par contre euh...
je vois pas trop ce que tu veux faire avec une base.
c'est pas fait pour stocker des variables, mais des données. c'est pas pareil.
 
explique quel est ton besoin réel, histoire qu'on sâche déjà si t'as besoin de sql server pour y répondre ou non. là c'est pas clair.


Message édité par MagicBuzz le 31-10-2007 à 14:36:33
n°1634916
Apokrif
Le million ! Le million !
Posté le 31-10-2007 à 19:38:59  profilanswer
 

Je suis depuis peu utilisateur d'une base SQLServer qui existe depuis longtemps et qui a de nombreux utilisateurs. Mes besoins (pour l'instant) se limitent, par exemple, à faire (dans une même fenêtre de Management Studio) plusieurs fois une série de requêtes dont certaines contiennent "and numeroEmploye=12345", sachant que la valeur de numeroEmploye varie d'une exécution à l'autre: plutôt que d'avoir à modifier plusieurs occurrences de numeroEmploye chaque fois que je m'intéresse à un employé différent, je voudrais affecter avant les requête une variable avec un nom comme employeCourant (et rempalcer les and numeroEmploye=12345 par des and numeroEmploye=employeCourant), pour moins me fatiguer, pour avoir un code plus lisible et pour diminuer le risque d'erreur dû à la saisie multiple d'un code cabalistique. Ma question, c'est de savoir si ces variables/constantes resteront chez moi, ou si elles tomberont dans l'architecture de la base comme un cheveu dans la soupe du DBA.


Message édité par Apokrif le 31-10-2007 à 19:40:07
n°1634922
MagicBuzz
Posté le 31-10-2007 à 19:57:00  profilanswer
 

OK. Donc une variable déclarée avec l'instruction DECLARE est :
- Liée à ta session, et uniquement ta session
- Sa portée ne dépasse as le bloc BEGIN - END dans lequel elle se trouve.
 

Code :
  1. declare @toto AS varchar(50);
  2. SET @toto = 'plop';
  3.  
  4. begin
  5.  declare @titi AS varchar(50);
  6.  SET @titi = 'coin';
  7. end;
  8.  
  9. SELECT @toto; --> "plop"
  10. SELECT @titi; --> boum


 
Si tu ouvres en même temps une autre session avec le même utilisateur, alors tu ne peux pas accéder à ces variables, mais tu peux tout à fait en déclarer de nouvelles du même nom, ça n'impactera absolument pas la première session.


Message édité par MagicBuzz le 31-10-2007 à 19:57:25
n°1635481
Apokrif
Le million ! Le million !
Posté le 02-11-2007 à 13:07:10  profilanswer
 

Merci pour la réponse. J'ai l'impression qu'il n'y a pas de possibilité d'avoir en SQLServer des procédures/macro qui (comme les variables) seraient stockées uniquement dans l'espace de travail de l'utilisateur et pas dans la base (il faut utiliser un langage hôte) ?

n°1635536
MagicBuzz
Posté le 02-11-2007 à 14:21:45  profilanswer
 

De quoi tu parles ?
 
Les "variables", ne sont pas stockées.
 
declare @toto;
=> C'est une variable. Rien n'est écrit dans la base.
 
J'ai l'impression que tu mélanges un peu tout en fait.
 
Sinon, effectivement, tout le code T-SQL que tu vas écrire :
1/ Tourne sur le SERVEUR et non sur la station cliente
2/ N'accède à rien d'autre que les éléments de la base de données
 
Donc effectivement, selon ce que tu veux faire, tu vas avoir besoin d'un langage "hôte" afin d'écrire une application cliente.

n°1636532
moi23372
Posté le 04-11-2007 à 21:09:13  profilanswer
 

je confirme que les variables déclarée dans les bloc TSQL sont propres à la session et ne seront effective que jusqu'a ce que la session de l'utilisateur/de la connexion sera fermée.  
 
Après ce que dit MagicBuzz est tout à fait correct. Il ne faut pas mélanger les pommes et les poires.  
Je pense qu'il serait nécessaire de se renseigner un peu mieux sur les SGBD et leur fonctionnement avant de démarrer n'importe quel développement d'une application ;-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Les variables sont-elles stockées dans la base dans MS SQL Server ?

 

Sujets relatifs
[SQL] message d'erreur qui n'a pa lieu d'être[RESOLU]Site chez Free - Base SQL distante
recherche dans une base de mot cléserreur langage SQL
Architecteure Client/serveur - base de donnéesRécupération du calendrier de outlook dans une base de donnée sql
DTS SQL Server 2000[SQL,ORACLE]Message d'erreur mutating, trigger....(RESOLU)
Plus de sujets relatifs à : Les variables sont-elles stockées dans la base dans MS SQL Server ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR