Probleme autorisation sur SQLServer2005

Résolu
joe10155 Messages postés 7 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 juillet 2006 - 18 juil. 2006 à 09:08
 Charef Hassen - 6 juil. 2014 à 04:31
Bonjour,

je viens d'intaller sqlserver2005_express en local sur mon PC et j'essaye d'éxécuter une requete SQL à partir d'une page aspx.

Voila le code ma page :
Dim mySqlConnection as SqlConnection = new SqlConnection("server=JOE10155\SQLEXPRESS;Trusted_Connection=yes;UID=sa;PWD=xxxx;database=xxxx")    Dim mySqlDataAdapter as SqlDataAdapter new SqlDataAdapter("SELECT * FROM Entreprise WHERE (EntrepriseNr999)", mySqlConnection)
    Dim myDataSet as DataSet = new DataSet()
    mySqlDataAdapter.Fill(myDataSet,"Entreprise")

Et voila le probleme :
System.Data.SqlClient.SqlException: Autorisation SELECT refusée sur l'objet 'Entreprise', base de données 'xxxx', schéma dbo'.

Apres plusieurs recherche, j'ai vu qu'il fallait peut etre rajouter un user ASPNET dans la base mais je n'ai pas compris comment....

Merci d'avance si quelqu'un a une idée.

PS : J'utilise Microsoft SQL Server Management Studio Express pour gérer la base.

7 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
18 juil. 2006 à 10:53
Ca dépend de ta version de Windows en fait, sur un Windows XP c'est bien ASPNEt qu'il faiut ajouter, si c'est du 2003 c'est un poil plus compliqué, en local c'est NetworkService et en cas d'accès distant (serveur SQL séparé du serveur ASP.net) c'est le compte de la machine ASP.net.

Pour donner des droits à un compte sur SQL Express en SQL :

-- Exemple pour ASPNET
CREATE LOGIN [MACHINE\ASPNET] FROM WINDOWS

-- Puis ensuite sur la base de données, création de l'utilisateur
CREATE USER ASPNET FROM LOGIN [MACHINE\ASPNET' ]

Ensuite il faut accorder les droits aux objets :

-- Ici donne le droit en SELECT sur la table enterprise
GRANT SELECT ON Enterprise TO ASPNET

-- Ou utiliser un rôle, par exemple ici lecture sur tous les objets de la base.
EXEC sp_addrolemember 'db_reader', 'aspnet'

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
3
joe10155 Messages postés 7 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 juillet 2006
19 juil. 2006 à 15:05
J'ai testé et cela marche trés bien.

Une petite précision pour ceux qui auraient le meme problème :
la dernière commande qui donne tous les droits ne marche pas : il faut donc aller dans les authorisations de la base données concernées et cocher à la main les authorisations pour le user ASPNET.
3
joe10155 Messages postés 7 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 juillet 2006
18 juil. 2006 à 11:02
Je suis effectivement sous Windows XP.

Juste une petite précision :
la première requête "CREATE LOGIN...", je l'execute à partir de quel endroit?

J'essaye cela dès ce soir.

Merci beaucoup de ton aide.
0
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
18 juil. 2006 à 11:28
Avec SQLCMD sur master par exemple, même si çà n'est pas très important

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
joe10155 Messages postés 7 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 22 juillet 2006
18 juil. 2006 à 11:30
Encore merci.
Je teste ce soir et je valide la réponse.
0
issousam Messages postés 17 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 3 septembre 2008
9 juil. 2008 à 15:58
Bonjour,
je suis tout nouveau dans la programmation ASP.NET et j'ai un problème au niveau de l'accés à ma base de données.

Voilà l'erreur :
Server Error in '/' Application.
<hr width= "100%" color="silver" size="1" />Impossible d'ouvrir la base de données "document" demandée par la connexion. La connexion a échoué.
Échec de l'ouverture de session de l'utilisateur 'sa'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Impossible d'ouvrir la base de données "document" demandée par la connexion. La connexion a échoué.
Échec de l'ouverture de session de l'utilisateur 'sa'.
Source Error:






Line 25:         {
Line 26:             SqlCommand cmd  = new SqlCommand("SELECT COUNT(*) FROM authors", cn);

Line 27:             cn.Open();
Line 28:             SqlDataReader rdr =  cmd.ExecuteReader(CommandBehavior.CloseConnection);
Line 29:             rdr.Read();





Source File:

x:\Inetpub\wwwroot\SITE_COTIC\Savoirs\Documents\ListeDoc.ascx    Line: 27
Stack Trace:




[SqlException (0x80131904): Impossible d'ouvrir la base de données "document" demandée par la connexion. La connexion a échoué.
Échec de l'ouverture de session de l'utilisateur 'sa'.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +171
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +199
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2406
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +34
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +223
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +371
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +184
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +193
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +502
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +28
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +429
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +70
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +510
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +85
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +89
System.Data.SqlClient.SqlConnection.Open() +160
ASP.documents_listedoc_ascx.Page_Load(Object sender, EventArgs e) in x:\Inetpub\wwwroot\SITE_COTIC\Savoirs\Documents\ListeDoc.ascx:27
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +43
System.Web.UI.Control.OnLoad(EventArgs e) +80
System.Web.UI.Control.LoadRecursive() +49
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Control.LoadRecursive() +132
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3745





Version Information:

 Microsoft .NET Framework Version:2.0.50727.832; ASP.NET Version:2.0.50727.832
et voici le code que j'utilise pour ma connexion :



protected void Page_Load(object sender, EventArgs e) {




using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectString"].ToString())) {




SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM document", cn);

cn.Open();

SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);


rdr.Read();

Response.Write(rdr[0].ToString()); //read a value



}

}




Et le fichier web.config :

<connectionStrings>
   
  </connectionStrings>
<system.web>
<compilation
         defaultLanguage="c#"
         debug="true"
         strict="false"
         explicit="true"
    />

   <namespaces>
    <clear/>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
               
   </namespaces>
  

<customErrors
      mode="Off"
      defaultRedirect="Erreur.htm"
    >
    <error
        statusCode="404"
        redirect="Erreur404.htm"
      />
    </customErrors>
<trace
        enabled="false"
        requestLimit="10"
        pageOutput="false"
        traceMode="SortByTime"
  localOnly="true"
    />
    <sessionState
            mode="InProc"
            stateConnectionString="tcpip=?????"
            sqlConnectionString="data source=L'adresse IP de mon serveur"
            cookieless="false"
            timeout="20"
    />
    <globalization
            requestEncoding="utf-8"
            responseEncoding="utf-8"
   />
 </system.web>
</configuration>

Voila, et je developpe en langage C# sous l'environnement Web Matrix et, j'accède à ma base de données via une connexion à un serveur (connexion machine/serveur avec un switch) qui heberge SQL SERVER EXPRESS 2005, et que j'utilise une authentification SQL (avec id et mot de passe).


Merci d'avance pour vos reponses,
Ca m'aiderait vraiment à avancer dans mon projet...


Je vous suis déjà tres reconnaissant pour l'existence de ce genre de forum...
0
Charef Hassen
6 juil. 2014 à 04:31
Si vous essayez de créer une base de données SQL Server , vous pouvez rencontrer un message d' erreur indiquant que l'autorisation est refusée, même si vous êtes connecté à votre ordinateur avec un administrative compte. C'est parce que les privilèges d'administrateur sur votre ordinateur ne s'appliquent pas automatiquement à la base de données SQL Server. Pour résoudre ce problème , vous devez ajouter manuellement ces autorisations . Instructions

1- Connectez-vous à votre ordinateur et cliquez sur le bouton "Démarrer" . Choisissez "Tous les programmes " puis " Microsoft SQL Server. "

2- Cliquez sur l'onglet "Outils de configuration" , puis "Configuration de la surface d' exposition SQL Server. " Choisissez " Ajouter un nouvel administrateur. "

3- Aller à la " SQL Server User Provisioning sur Vista " boîte de dialogue . Cliquez sur la case " Privilèges disponibles " .

4-Cliquez sur " privilèges seront accordés à " et choisissez " Membre du SQL Server SysAdmin " rôle . Cliquez sur " OK" pour confirmer vos modifications .
Ou vous pouvez tout simplement ajouter le droit que vois allez trouver vers la droite.
0
Rejoignez-nous