IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

The current user is not the database or object owner of table '#tmp1'. Cannot perform


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut The current user is not the database or object owner of table '#tmp1'. Cannot perform
    Bonjour,

    j'obtiens cette erreur lorsque j'exécute ceci dans une procédure stockée :
    - creation d'une table temporaire
    - bulk insert sur cette table

    Avec l'utilisateur "sa", ça marche.
    Avec un autre utilisateur, on a l'erreur.

    Pour corriger cette erreur, je dois ajouter les droits suivants à l'utilisateur sur la table tempdb : ddl_admin, ddl_datawriter.

    Le problème est que le contenu de tempdb est effacé à l'arrêt du système.

    En conclusion, à chaque démarrage de SQL Server, je suis obligé de remettre les droits de l'utilisateur sur tempdb.

    Auriez-vous des solutions à ce problème ?

    Merci pour vos suggestions ....


    "The current user is not the database or object owner of table '#tmp1'. Cannot perform SET operation."

    ----------------------------------
    D'autres sources d'informations sur le sujet :

    http://groups.google.fr/group/micros...8504b305ebb647

    http://support.microsoft.com/default...b;en-us;302621

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Est-ce que ton user est ajouté au rôle Serveur "Bulk Insert Administrator" ?
    Mais il semble que même si c'est le cas, le problème peut se produire.
    référence du bug ici : http://support.microsoft.com/default...b;en-us;302621

    Tu pourrais ajouter les droits dans la base système model, elles seraient reproduites dans tempdb, mais toutes les autres bases créées ensuite auront ce user et les droits.

    Une meilleure solution serait de créer tes tables dans une base utilisateur, et de les dropper ensuite

  3. #3
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut
    comment les créer sur cette base utilisateur ?

    faudrait-il les préfixer avec le "@@SPID" dans une base classique ?

    supposons que le nom de la base créée soit "MaBaseTemp"
    faudrait faire ceci : CREATE TABLE [MaBaseTemp].dbo.tmp1 { ... }

    pourrais-tu être plus précis.

    Exemple de code avec table temporaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE PROCEDURE testCreationTableTemporaire
    AS
    BEGIN
     
    	CREATE TABLE #tmp1
    	(
    		n INT
    	)
     
          BULK INSERT #tmp1 from 'cheminFichier' with ( CODEPAGE = 'RAW', FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' )
     
    END
     
    GO

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Tu peux faire l'un ou l'autre,
    - CREATE TABLE [MaBaseTemp].dbo.tmp1 { ... }
    - une table avec un identifiant , par exemple @@SPID et current_timestamp, ce que tu veux pour la rendre unique, avec qqch comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    CREATE PROCEDURE testCreationTableTemporaire
    AS
    BEGIN
    	DECLARE @sql varchar(8000)
     
    	SET @sql = '
    	CREATE TABLE tmp1_' + CAST(@@spid as varchar(20)) + '
    	(
    		n INT
    	)
     
          BULK INSERT tmp1_' + CAST(@@spid as varchar(20)) + ' from ''cheminFichier'' with ( CODEPAGE = ''RAW'', FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''\n'' )'
     
    	PRINT @sql
     
    END
    - autrement, tu pourrais faire un DTS, dans lequel tu places une connexion avec un compte sysadmin, qui aura le droit de faire un BULK INSERT dans tempdb, et tu appelles ton DTS par code, soit après l'avoir encapsulé dans un job, par un sp_start_job, ou via xp_cmdshell, ou OLE Automation
    (exemples : http://www.mssqlcity.com/FAQ/Devel/DTSviaQA.htm)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Typo3] Database Error - The Current Username, Password Or Host Was Not Accepted etc.
    Par poumtatalia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/09/2010, 11h07
  2. Réponses: 4
    Dernier message: 11/03/2010, 17h02
  3. Réponses: 15
    Dernier message: 18/02/2009, 18h53
  4. Erreur "The chosen Operation is not currently available"
    Par Shiftane dans le forum Eclipse Platform
    Réponses: 13
    Dernier message: 18/01/2007, 10h06
  5. Réponses: 1
    Dernier message: 11/05/2006, 22h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo