15 messaggi dal 06 aprile 2001
www.pccom.it
Buon pomeriggio a tutti.
Avrei bisogno di un aiuto.
Ho il seguente probelma devo inserire un campo in una tabella in SQLserver 2000.
mi viene segnalato il seguente errore:

 Utente non autorizzato per l'esecuzione di questa operazione in tabella 'AAA'.
L' utente è quello utilizzato per scrivere, leggere, e cancellare nel DB

 questa è la funzione:

Sub InserisciCampo()
Dim SQL
MyConnection = New SqlConnection(ConnectionString)

SQL= "ALTER TABLE AAA ADD Numero011 FLOAT NULL "

Dim myCommand As SqlCommand = New SqlCommand(SQL, MyConnection)

MyCommand.Connection.Open()
MyCommand.ExecuteNonQuery()

MyConnection.close()


end sub
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
rdd ha scritto:

Utente non autorizzato per l'esecuzione di questa operazione in tabella 'AAA'.
L' utente è quello utilizzato per scrivere, leggere, e cancellare nel DB


Se un utente ha il permesso di leggere (select), aggiungere (insert), modificare (update) o eliminare (delete) i dati di una tabella, non è detto che abbia la possibilità di modificarne la struttura (alter table). Questo tipo di attività richiedono permessi espliciti che NON dovrebbero essere assegnati ad utenti generici ma lasciati svolgere ad utenti amministrativi per i motivi che puoi ben comprendere. Se vuoi assegnare ad un utente il permesso di modificare la struttura di una tabella devi renderlo membro del database role db_owner o db_ddladmin. Ti invito a far riferimento al Book On Line di SQL Server per ulteriori approfondimenti sull'argomento.
Ciao

15 messaggi dal 06 aprile 2001
www.pccom.it
Grazie per avermi cortesemente risposta.

Il problema persiste.
Operazioni eseguite:
Creato utene "DBmodifica" in SQLserver
ho assegnato i ruoli public, db_owner e db_ddladmin
Ho assegnato l'utente alla tabella AAA.

L'errore è:
Utente non autorizzato per l'esecuzione di questa operazione in tabella 'AAA'.

sull'istruzione:
MyCommand.ExecuteNonQuery()
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
rdd ha scritto:
Grazie per avermi cortesemente risposta.

Il problema persiste.
Operazioni eseguite:
Creato utene "DBmodifica" in SQLserver
ho assegnato i ruoli public, db_owner e db_ddladmin

Ho assegnato l'utente alla tabella AAA.

L'errore è:
Utente non autorizzato per l'esecuzione di questa operazione in tabella 'AAA'.

sull'istruzione:
MyCommand.ExecuteNonQuery()


Per eseguire il comando ALTER TABLE non è necessario far parte di entrambi i ruoli db_owner e db_ddladmin. E' sufficiente uno solo dei 2. Non ho capito inoltre che cosa intendi per "ho assegnato l'utente alla tabella AAA" (non è necessario assegnare alcun tipo di permesso sulla tabella ad un utente membro di uno di quei 2 ruoli per poterne modificare la struttura).
Visto comunque che hai abbondato con i permessi ( :-) ) se hai seguito tutti i passi necessari l'utente DBModifica giunti a questo punto DEVE poter eseguire il comando ALTER TABLE su tutte le tabelle del database in cui fa parte di uno dei ruoli in questione. Se continui a ricevere l'errore mi vengono in mente 2 possibili cause:
1) hai assegnato l'utente DBModifica ai database role di un altro database
2) il comando viene eseguito da un utente diverso da DBModifica (controlla la connection string)

15 messaggi dal 06 aprile 2001
www.pccom.it
Mi permetto di disturbarti per l'utima volta.

L'errore persiste.
Ho eseguito i seguenti controlli:
 ConnectionStringMOD = "server=rddnotebook03;Trusted_Connection=Yes;Initial Catalog=OSIcenter; Integrated Security=SSPI; uid =DBModifica; Password=dbmod"
punta correttamente al DB.
 ho assegnato un solo ruolo db_owner.


Domanda: è corratta la funzione MyCommand.ExecuteNonQuery() per eseguire ALTER TABLE ??

grazie mille
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
rdd ha scritto:
Mi permetto di disturbarti per l'utima volta.


:-) non ti preoccupare...


L'errore persiste.
Ho eseguito i seguenti controlli:
 ConnectionStringMOD = "server=rddnotebook03;Trusted_Connection=Yes;Initial Catalog=OSIcenter; Integrated Security=SSPI; uid =DBModifica; Password=dbmod"
punta correttamente al DB.
 ho assegnato un solo ruolo db_owner.
Domanda: è corratta la funzione MyCommand.ExecuteNonQuery() per eseguire ALTER TABLE ??

grazie mille


Ecco l'errore!
Esegui la connessione utilizzando una connessione trusted (proprietà Trusted_Connection=Yes) e quindi l'account che esegue tutti i comandi non è DBModifica (le sue credenziali fornite nella connection string vengono ignorate) ma è l'account con cui sei loggato in quel momento (IUSR_nomemacchina se esegui il comando per mezzo di IIS). Se vuoi eseguire una connessione per mezzo di un utente SQL Server devi modificare la stringa di connessione (e devi anche accertarti che SQL Server sia configurato per accettare ANCHE connessioni di tipo standard); se invece vuoi continuare ad utilizzare la sicurezza integrata DEVI concedere le necessarie autorizzazioni all'account con cui viene eseguito l'accesso a SQL Server.
Per la stringa di connessione da utilizzare ti consiglio di far riferimento al link

http://www.connectionstrings.com

Per quanto riguarda invece il metodo ExecuteNonQuery dell'oggetto Command non sono in grado di aiutarti, ma stando a quanto indicato al link

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatasqlclientsqlcommandclassexecutenonquerytopic.asp

dovrebbe essere lecito utilizzarlo in questo contesto e ad ogni modo il messaggio di errore che ottieni fa stato della mancanza di permessi e non di un comando non valido.

Bye
15 messaggi dal 06 aprile 2001
www.pccom.it
Ti rigrazio per la preziosa collaborazione.

ora faccio delle prove come da tue indicazioni

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.