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

Administration SQL Server Discussion :

Publication site ASP.net --> comment rattacher les bases SQL serveur


Sujet :

Administration SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Publication site ASP.net --> comment rattacher les bases SQL serveur
    Bonjour à tous,

    Je rencontre un souci ou plutôt je suis complètement perdu et je pense qu'il me manque un truc à la con qui me bloque actuellement.

    Après le développement d'un application web, l'achat d'un serveur pour la publier et la configuration d'IIS pour la faire fonctionner je me retrouve bloquer avec mes bases SQL serveur.

    Je possède trois fichier .mdf contenu dans le répertoire app_data de mon application, mais je n'ai aucun idée de comment les déclarer à mon application sur le serveur...

    Que dois-je faire ? Dois-je installer l'outil d'administration SQL Serveur pour faire cette déclaration?

    Désolé pour la question bête mais je suis perdu, je vous remercie par avance de votre aide !

    Emilien

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Le fichier.mdf est le fichier de données de votre base de données.
    Possédez-vous le fichier de journal des transactions de celle-ci (par défaut l'extension de celui-ci est .ldf) ?

    Pour attacher la base de données : CREATE DATABASE maBD ON (FILENAME = 'C:\monFichier.mdf')
    Le fichier de journal des transactions doit se trouver dans le même répertoire, sauf si vous ne l'avez pas :

    - Si vous disposez du fichier de journal des transactions, ajouter FOR ATTACH
    - Sinon, ajoutez FOR ATTACH_REBUILD_LOG

    Le plus propre restant de faire une sauvegarde complète de la base de données depuis l'instance source pour le restaurer sur l'instance cible

    Que dois-je faire ? Dois-je installer l'outil d'administration SQL Serveur pour faire cette déclaration?
    Pas forcément même si c'est plus pratique, disons que ça dépend de l'urgence de la manoeuvre

    Vous pouvez faire avec l'utilitaire SQLCMD, dans une console DOS :

    - ouvrez la console
    - tapez SQLCMD -S monServeur\monInstance -U user -P pass -d master
    - tapez la commande que je vous ai décrite plus haut, puis entree
    - tapez GO puis entrée

    Si vous voulez faire avec SSMS, c'est par ici si vous êtes sous SQL Server 2005.

    @++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour CTEMan,

    Merci pour toute ces précisions.
    Je suis rentré en contact avec mon hébergeur car à priori je devrais avoir depuis mon espace client des outils d'administration pour ce genre de chose.

    Pour info j'ai souscrit une offre 1&1 WinServeur Virtuel XL chez 1and1 me permet d'administrer mon serveur avec Virtuozzo et surtout Plesk qui ne veut pas s'installer. Du coup je fais tout à la mimine coté serveur...

    Selon leur réponse j'installerai SSMS sur mon serveur sinon je me lancerais dans la découvert de l'utilitaire SQLCMD.

    Sinon pour répondre à votre question, je possède effectivement le journal des transactions pour chacune de mes database.

    Je suis tout de même étonné de ne pas trouver de tutoriel sur le web pour effectuer ce genre de chose...

    En tout cas merci de votre réponse rapide et très détaillée !

    Emilien

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Référez vous à la documentation ici, ici, ou encore ici elle est assez bien faite et en l'occurence "marque-pageable" et téléchargeable depuis ma signature

    @++

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Merci pour ces indications j'ai paluché la doc.
    Donc actuellement j'ai réussis à installer le site web sur le serveur en utilisant plesk.

    Le gros souci concerne toujours le rattachement de mes bases de données au site. J'ai donc installer SQL Express + SSMS et j'ai déclaré mes bases au serveur.

    Tout va bien sauf que, lors du rattachement je ne pouvais laisser mes bases (fichier.mdf) dans le répertoire app_data du site web, car le browser de SSMS ne me permettait pas de descendre dans les répertoire enfant du répertoire InetPub.
    Du coup je les ai copié dans le répertoire data du répertoire de SQL server et j'ai pu les déclarer.

    Je me suis dit que cela aurait pas d'influence si ce n'est dans mes connexion string de mon web.config.

    Et effectivement ca m'a l'air de marcher, j'arrive à lancer le site mais je me retrouve confronté à une erreur qui me parle pas du tout et donc je ne trouve pas d'explications sur le net.

    La voici j'espère que vous pourrez m'aider :

    Échec de la création d'une instance d'utilisateur SQL Server en raison d'une défaillance d'extraction du chemin d'accès aux données de l'application locale de l'utilisateur. Vérifiez que l'utilisateur a un profil d'utilisateur local sur l'ordinateur. Fermeture de la connexion.
    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: Échec de la création d'une instance d'utilisateur SQL Server en raison d'une défaillance d'extraction du chemin d'accès aux données de l'application locale de l'utilisateur. Vérifiez que l'utilisateur a un profil d'utilisateur local sur l'ordinateur. Fermeture de la connexion.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:


    [SqlException (0x80131904): Échec de la création d'une instance d'utilisateur SQL Server en raison d'une défaillance d'extraction du chemin d'accès aux données de l'application locale de l'utilisateur. Vérifiez que l'utilisateur a un profil d'utilisateur local sur l'ordinateur. Fermeture de la connexion.]
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
    System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
    System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144
    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +342
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4859187
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
    System.Data.SqlClient.SqlConnection.Open() +122
    System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87
    System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221
    System.Web.Security.SqlMembershipProvider.GetNumberOfUsersOnline() +513
    System.Web.Security.Membership.GetNumberOfUsersOnline() +37
    MasterPage.Page_Init(Object sender, EventArgs e) +145
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
    System.Web.UI.Control.OnInit(EventArgs e) +99
    System.Web.UI.UserControl.OnInit(EventArgs e) +77
    System.Web.UI.Control.InitRecursive(Control namingContainer) +333
    System.Web.UI.Control.InitRecursive(Control namingContainer) +210
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378




    --------------------------------------------------------------------------------
    Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Une petite astuce pour les messages d'erreur : lorsque vous ne trouvez pas d'aide en français, vous pouvez rechercher le message en anglais de la façon suivante :

    Recherche de l'identifiant du message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM sys.messages
    WHERE text LIKE 'Échec de la création%extraction du chemin%'
    identifiant du message : 15382

    Recherche de sa traduction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM sys.messages
    WHERE message_id = 15382
    AND language_id = 1033 -- anglais
    on trouve le message :

    Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.%.*ls
    Une petite recherche sur votre moteur de recherche préféré (je ne suis pas en train de me plaindre que vous n'avez pas cherché, je sais que c'est l'inverse sinon je ne vous n'essaierai pas de vous aider ) vous oriente souvent dans la bonne direction.

    J'ai lu un peu dans ce que j'ai trouvé, et pour aller plus loin, dites-nous comment vous avez fait pour rattacher la base de données ?

    @++

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    Je travaille avec Emilien69 sur ce site.

    Voilà la connectionstring que l'on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
    On a rattaché les bases de données via SqlServerManagement elles sont accessibles . J'arrive même a exécuter des requêtes depuis plesk avec l'outil de visualisation de base de donnée.

    Est ce qu'il faut mettre le user mot de passe dans la chaine de connection. J'ai l'impression que celle-ci a un problème.

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Comme vous avez monté le fichier de base de données et que maintenant la base de données est hébergée par l'instance SQL Server de la machine, vous pouvez écrire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=adresseIPDuServeur;Initial Catalog=maBD;Integrated Security=SSPI;
    Plu globalement vous pouvez vous référer à cette page.

    @++

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour

    En cherchant des détails avec une recherche sur le web avec le message d'erreur en anglais, on retrouve pas mal de réponse.
    J'ai mis en œuvre la solution de positionner le User Instance à False au lieu d'être à True.
    Et cela a pour effet de ne plus donner le message d'erreur donner plus haut.
    Ci dessous les 3 connexions string que l'on utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True; User Instance=False" />
        <add name="DatabaseConnectionString1" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;  User Instance=False" />
        <add name="yafnet" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Forum.mdf;Integrated Security=True; User Instance=False" />
      </connectionStrings>
    Maintenant le message d'erreur est le suivant :

    Autorisation CREATE DATABASE refusée dans la base de données 'master'.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb\App_Data\ASPNETDB.MDF. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.
    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: Autorisation CREATE DATABASE refusée dans la base de données 'master'.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb\App_Data\ASPNETDB.MDF. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:


    [SqlException (0x80131904): Autorisation CREATE DATABASE refusée dans la base de données 'master'.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb\App_Data\ASPNETDB.MDF. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.]
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
    System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
    System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144
    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +342
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
    System.Data.SqlClient.SqlConnection.Open() +122
    System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87
    System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221
    System.Web.Security.SqlMembershipProvider.GetNumberOfUsersOnline() +513
    System.Web.Security.Membership.GetNumberOfUsersOnline() +37
    MasterPage.Page_Init(Object sender, EventArgs e) +145
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
    System.Web.UI.Control.OnInit(EventArgs e) +99
    System.Web.UI.UserControl.OnInit(EventArgs e) +77
    System.Web.UI.Control.InitRecursive(Control namingContainer) +333
    System.Web.UI.Control.InitRecursive(Control namingContainer) +210
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378
    Et la je me demande si ca ne provient pas du rattachement des DB avec sql server.
    En effet comme décrit dans un de mes premiers posts je vous donne plus en détail la facon dont nous avons déclaré les DB :
    - Joindre data base dans SSMS par contre k'ai du possitionner les tables dans le répertoire Data de SQL Server et non pas dans le repertoire app_data du site web.
    Pourquoi? car impossible de descendre dans l'arborescence du repertoire c:\Inetpub\vhosts. Le repertoire contenant le site web et le suivant :
    C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb.
    Nous avons 3 bases de données (ASPNETDB.MDF, Database.madf et forum.mdf) et nous possédons les trois journaux de transactions correspondants (.ldf). Peut être ce sont ces journaux qui posent problème, y a t il une utilité à essayer de rattacher les bases en ayant supprimé les .ldf?


    Ainsi je me demande si le lancement de l'application n'essaye pas de regénérer les bases (on l'occurence ASPNETDB.MDF dans le message d'erreur donné ci-dessus).

    Je me demande si nos bases sont bien positionnées, ne devraient-elles pas être dans le répertoire du site web?

    Merci a tous pour votre aide, c'est vraiment la galère, il ne doit pas manquer grand chose...

    elsuket, en essayant de modifier la connexion string comme proposé j'obtiens le message d'erreur :

    A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
    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: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Emilien

  10. #10
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Malheureusement je ne connais pas grand chose à ASP.NET.
    En revanche je ne vois pas l'intérêt de stocker les fichiers de la base de données dans le répertoire virtuel du site, à mon sens c'est même supprimer un minimum de sécurité.

    Nous avons 3 bases de données (ASPNETDB.MDF, Database.madf et forum.mdf) et nous possédons les trois journaux de transactions correspondants (.ldf). Peut être ce sont ces journaux qui posent problème, y a t il une utilité à essayer de rattacher les bases en ayant supprimé les .ldf?
    Le fichier du journal des transactions est le seul garant de l'intégrité de votre base de données, surtout en cas de crash
    Comme vous l'a montré CTEMan, vous auriez-du rattacher la base de données avec le fichier LDF.

    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb\App_Data\ASPNETDB.MDF
    Je ne comprends plus ce que vous essayez de faire ...
    Vos fichiers de base de données (MDF et LDF sont-ils situés dans le même répertoire ?
    Sont-ils maintenant stockés dans un autre répertoire que le répertoire virtuel de votre site ? et si oui, lequel ?

    Rattachez vos bases de données comme vous l'a décrit CTEMan, ça doit fonctionner

    @++

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Actuellement les fichier .mdf sont stockés dans le répertoire data de SQL server (C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data).

    Je donc laissé tomber l'idée de les laisser dans le repertoire app_data du repertoire virtuel ou est stocké le site web.

    J'ai supprimé le rattachement que nous avions fait et je l'ai refait depuis SSMS et une requete comme expliqué par CTEMan.
    Il n'a pas voulu de mes fichiers .ldf car l'ordre SQL de création les recherchais sur un chemin inexistant car ce chemin provenait de mon pc local de dev.
    Enfin bon, je les ai re-créés avec l'ordre FOR ATTACH_REBUILD_LOG.

    Mais toujours un problème, lorsque j'essaye de parcourir le site web depuis IIS et donc la page par defaut, on dirait qu'il essaye de reconstruire une database :

    Autorisation CREATE DATABASE refusée dans la base de données 'master'.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier C:\Inetpub\vhosts\MonDomaine.eu\httpdocs\MonSiteWeb\App_Data\ASPNETDB.MDF. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.


    Je ne sais pas pourquoi le site essaye de créer cette database, de plus le repertoire app-data est vide....

    Je deviens fou ....

  12. #12
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Quelle chaîne de connexion avez-vous spécifié dans le web.config ?

    @++

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    avec celle la :

    <add name="LocalSqlServer" connectionString="Data Source=ipduserveur;Initial Catalog=|DataDirectory|\ASPNETDB.MDF;Integrated Security=SSPI" />


    on obtiens le message d'erreur :

    A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    ET avec celle la :

    <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True; User Instance=False" />

    on obtiens le message d'erreur listé dans mon post précédent

    Merci de ton aide elsuket

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 295
    Points
    295
    Par défaut
    Petit précision on travaille avec sqlexpress.

  15. #15
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Sans être un expert d'ASP.NET, il me semble que le déploiement s'apparente plutot à un xcopy: on copie tout dans le répertoire virtuel.

    Pour les fichiers attachés, c'est sans doute parce que visual studio à la drole d'habitude de voouloir monter automatiquement les bases. On ne sert pas de ça en production.

    Pour SQL Server express. Il n'écoute pas en standard sur TCP/IP et si j'ai bien compris, ce n'est pas nécessaire. Il sera juste accédé par la couche web locale.

    @+

  16. #16
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Pour compléter la réponse de agemis31, jetez un oeil dans le gestionnaire de configuration de SQL Server (SQLServerManager.msc) et dans "configuration du réseau pour SQL Server 2005", puis "protocoles pour monInstance", vérifiez que le protocole TCP/IP est activé que que l'IP qui est paramétrée est correcte.

    @++

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Suite des aventures :
    Du coup je suis reparti de zero en ce qui concerne les database
    - création des mes trois bases de données depuis Plesk
    - création de trois admin relatif à une database chacun
    - génération du contenu des bases depuis un script sql généré depuis mon pc local avec l'utilitaire SQL server publishing wizard.
    - SQL server paramétré en TCP/IP

    Du coup je lance l'appli et la je me retrouve avec un message que l'utilisateur IWAM_Plesk(defaut) ne peut se connecter à la database Aspnetdb (membreship : une de mes trois database).
    --> suppression de cet utilisateur Plesk.

    Maintenant je me retrouve face à cet anomalie :

    Échec de l'ouverture de session de l'utilisateur ''. L'utilisateur n'est pas associé à une connexion SQL Server approuvée.
    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: Échec de l'ouverture de session de l'utilisateur ''. L'utilisateur n'est pas associé à une connexion SQL Server approuvée.


    Les connection string associées :
    Data Source=87.106.206.5\SQLEXPRESS;database=Aspnetdb;Initial Catalog=Aspnetdb;Integrated Security=SSPI;user id=utilisateur1;Password=Password1

    Data Source=87.106.206.5\SQLEXPRESS;database=Database;Initial Catalog=Aspnetdb;Integrated Security=SSPI;user id=utilisateur2;Password=Password2

    Data Source=87.106.206.5\SQLEXPRESS;database=Forum;Initial Catalog=Forum;Integrated Security=SSPI; user id=utilisateur3;Password=Password3
    J'ai vu que cela pouvait provenir du fait que SQL Server était en mode d'authentification Windows et qu'il faudrait le passe en mode mixte.
    Mais comment faire?

    Merci d'avance,

    Emilien

  18. #18
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    J'ai vu que cela pouvait provenir du fait que SQL Server était en mode d'authentification Windows et qu'il faudrait le passe en mode mixte.
    Mais comment faire?
    Dans SQL Server Management Studio, cliquez droit sur l'instance et rendez-vous dans la page "Sécurité", sous "Authentification du serveur"

    @++

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Suite de la galère...

    Malheuresement il semble que SQL server est bien en mode d'authentification mixte. Du mois par rapport aux données dans l'onglet sécurité.

    Du coup je me suis motivé et j'ai tout supprimé et tout recréé.

    - Domaine qui va bien avec un pool d'application dédié.
    - création des bases depuis l'outil Plesk et génération de leur contenu depuis les script sql.
    - upload du site web.

    Par contre je me retrouve avec l'erreur suivante :


    Impossible d'ouvrir la base de données 'Aspnetdb.mdf' demandée par la connexion. La connexion a échoué.
    Échec de l'ouverture de session de l'utilisateur 'S15337873\IWPD_4(OMFTP)'.
    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 'Aspnetdb.mdf' demandée par la connexion. La connexion a échoué.
    Échec de l'ouverture de session de l'utilisateur 'S15337873\IWPD_4(OMFTP)'.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:


    [SqlException (0x80131904): Impossible d'ouvrir la base de données 'Aspnetdb.mdf' demandée par la connexion. La connexion a échoué.
    Échec de l'ouverture de session de l'utilisateur 'S15337873\IWPD_4(OMFTP)'.]
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
    System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
    System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144
    System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +342
    System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221
    System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189
    System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
    System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31
    System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433
    System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
    System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499
    System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65
    System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
    System.Data.SqlClient.SqlConnection.Open() +122
    System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87
    System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221
    System.Web.Security.SqlMembershipProvider.GetNumberOfUsersOnline() +513
    System.Web.Security.Membership.GetNumberOfUsersOnline() +37
    MasterPage.Page_Init(Object sender, EventArgs e) +145
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
    System.Web.UI.Control.OnInit(EventArgs e) +99
    System.Web.UI.UserControl.OnInit(EventArgs e) +77
    System.Web.UI.Control.InitRecursive(Control namingContainer) +333
    System.Web.UI.Control.InitRecursive(Control namingContainer) +210
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint
    Le lancement du site depuis IIS me donne cette erreur au chargement de la page d'accueil car j'accede à la base aspnetdb (membership).

    J'ai tous essayé afin de donner les droits au user IWPD_4(OMFTP) :
    - nouvelle connexion dans SQL server
    - rajout de l'utilisateur pour la base de donnée aspnetdb
    - rajout des droits sur les repertoires app_data du site web et sur le dossier data de sql server dans programmes files.
    - tenté x connectionstring sans plus de succés.

    Avez vous une idée sur le problème? il ne doit pas manquer grand chose mais je ne sais pas ou aller taper...

    Merci par avance

    emilien

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Je viens de tenter de modifier le trust level de l'application (web.config) mais cela n'a pas résolu le problème.


    Pour plus de détail : j'arrive à me connecter à ma base aspnetdb avec SSMS en utilisant le user que j'ai créé depuis plesk comme étant utilisateur de la db.
    Par contre pas moyen d'y arriver depuis la connection string...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Publication site ASP.Net IIS6
    Par Nanais19 dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 18/10/2012, 10h39
  2. Réponses: 1
    Dernier message: 22/07/2011, 14h30
  3. [ASP.NET][C#]Comment modifier les entetes d'un DataGrid?
    Par Cervantes dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/04/2007, 17h51
  4. Réponses: 5
    Dernier message: 28/11/2005, 09h52

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