none
Modifier la Tempsdb et les journeau de transaction sans couper les base de donnée RRS feed

  • Question

  • Bonjour,

    Suite a un problelme de performance sur mon serveur Sql Server 2008 R2 Standard, j'ai ajouter des disque dans la machine. je souhaite mettre le tempsdb sur un disque, et les journeau de transaction sur un autre disque. Les data reste sur le disque actuel (il sont tous en mirroire).

    J'ai actuellement

    300 go en SAS 10000trs pour les Data/Transaction/TempsDB

    et je souhaiterai passer a

    300go en SAS 10000trs Data (la partition original)

    300go en 15 000trs Tempsdb (il faut deplacer la base de donnée)

    900go en 10 000trs pour les transaction.

    Est ce qu'il est possible de déplacer le tempsdb et les journeau de transaction sans faire de coupure des base de donnée ?

    Merci,


    Cordialement Sébastien DataBase2Code

    jeudi 15 mars 2012 17:01

Toutes les réponses

  • Bonjour,

    à ma connaissance pour déplacer un fichier de log il faut au moins que la base soit offline, et pour un déplacement de tempdb, un reboot du service est obligatoire.

    Voir http://technet.microsoft.com/en-us/library/ms345408.aspx et http://technet.microsoft.com/en-us/library/ms345483.aspx

    Cordialement

    Fred

    jeudi 15 mars 2012 18:01
  • Bonsoir,

    Quelle est la volumétrie de vos bases, de votre TempDB (data et log).

    Histoire de voir le temps que peuvent prendre certaines manips (recréation d'un LDF pour la tempdb sur un autre volume). Les LDF ne sont pas sujet à l'instant file initialisation, contrairement aux fichiers de données.

    Vouspouvez créer des fichiers supplémentaires sur la tempdb sans couper el service. Seuls les déplacements nécéssitent un redémarrage du service. Pour les data bases de données utilisateur, on pourrait jouer avec des filegroup, si vous etes en édition entreprise, la recréation d'un index cluster ONLINE sur un FG différent peut se faire sans "trop" de perturbation utilisateur.

    Quelles est la charge de votre serveur ?

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    jeudi 15 mars 2012 20:54
  • Aujourdhui le disque de 300go est separer en 2 partition

    c:\ 40go pour le system et reste environ 6.22 go de libre

    d:\ 235go pour les base de donnée et reste environ 65go de libre

    j'ai environ 60 base de données sur un Microsoft SQL Server Standard Edition (64-bit)

    10 base fond une 10ene de giga (soit 100giga pour les 10 bases) et le reste sont des petites base de donnée de 100 a 500mo.

    Le probleme du serveur est principalement sur une seul base de donnée qui ne peu etre coupé, nous avons un logiciel qui trace l'arrivé de tout les fichiers de tout les client.

    tout les logiciel de traitement font appelle a cette base de donnée pour effectuer les traitement. nous ne pouvons donc pas couper cette base de donnée (les fichier proviennent d'entreprise qui peuvent les envoyer n'importe quaund ... le jour , la nuit, le week end, ...)

    Pour les autres base de donnée, nous pouvons ciblé l'arrivé des fichier clients et sortir des dates ou nous pouvons couper la base du client (en mettant la base hors ligne du client le temps du deplacement)

    Est ce que ces informations vous suffise ?

    Est ce que l'on peu faire de la replication avec des versions 2008 R2 standard ?

    merci,


    Cordialement Sébastien DataBase2Code

    vendredi 16 mars 2012 08:09
  • Bonjour,

    Vos bases ne sont pas vraiment volumineuses, les copies devraient être rapides. Par contre, vous ne pouvez éviter une coupure de service pour la partie TempDB.

    Pour votre base critique, pourquoi ne pas mettre en place temporairement un database mirroring avec une instance sur une autre machine afin de transférer le workload critique sur cette instance temporaire ? Si votre applicatif est développé avec des driver d’accès aux données relativement récent, cela ne devrait pas poser de soucis au niveau bascule vers l’instance temporaire.

    J’aurais même tendance à vous inciter à mettre en place une stratégie de haute disponibilité ou du moins de disaster recovery. Si vous dites que vos bases ne ‘peuvent être coupées’, il faut alors en tenir compte dans l’infrastructure et avoir une solution de HADR. Vous ne pouvez pas couper votre serveur SQL pour une simple reconfiguration.

    Que se passe-t-il si vous perdez complètement votre serveur SQL ? En combien de temps redevenez-vous opérationnel ? Quelques heures ? Un jour ? Plus ? Indépendamment de votre problème de config actuelle, je vous suggère d’avoir cette réflexion.

    En ce qui concerne la réplication, oui elle est disponible en édition standard. Ceci dit, la disponibilité d’une base inclut aussi des restauration partielles, des snapshots, des réindexations en ligne … Tout cela n’est présent que dans l’édition entreprise et participe aussi à la disponibilité d’une base.

    Cdlt,

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM


    vendredi 16 mars 2012 10:32
  • Bonjour,

    C'est justement pour mettre en place un deuxieme serveur (et augmenter les performances) que je fait cela.

    Actuellement j'ai un deuxieme server 2008 exactement la meme version, je compte ensuite migrer toute les base de donnée de ce serveur vers celui ci. ensuite soit mettre une replication (vue que c'est possible avec la standard) soit mettre en place un backup retaure directement sur le serveur de secours.

    Autrement je vais partir sur le fait que je fait une coupre, je ne suis pas un expert SqlServer, je ne me sens pas pres a mettre en place une replication sur des données de prod aussi sensible !

    par contre j'ai commencer a vouloir deplacer mes fichier de transaction, et j'ai constament une erreur ...

    La procedure que j'utilise pour deplacer les journeaux de transaction :

    1) Je détache ma base de donnée

    2) Je deplace mon journal de transaction sur mon autre partition

    3) je ratache ma base de donnée en lui donnais les 2 chemins, je clique sur Ok et il me met a message m'indiquant de regarder le message d'erreur.

    je vous le met ici, ce messag est sur une base de donné de test qui s'apelle TESTSEB

    ===================================
    
    Échec de Attacher la base de données pour Serveur « SRV-ED-MSSQL\SQL_PROD_ED ».  (Microsoft.SqlServer.Smo)
    
    ------------------------------
    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617.0+((KJ_RTM_GDR).110422-1901+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attacher+la+base+de+données+Server&LinkId=20476
    
    ------------------------------
    Emplacement du programme :
    
       à Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files)
       à Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabaseData.PrimaryFile.Attach()
       à Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabase.SendDataToServer()
    
    ===================================
    
    Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
    
    ------------------------------
    Emplacement du programme :
    
       à Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
       à Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType)
       à Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries)
       à Microsoft.SqlServer.Management.Smo.Server.AttachDatabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions)
       à Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files)
    
    ===================================
    
    Impossible d'ouvrir le fichier physique "F:\MSSQL_Tempdb\TESTSEB_log.ldf". Erreur du système d'exploitation 5 : "5(Accès refusé.)".
    Échec de l'activation du fichier. Le nom de fichier physique "F:\MSSQL_Tempdb\TESTSEB_log.ldf" est peut-être incorrect.
    Un nouveau fichier journal 'D:\SQLData\MSSQL10_50.SQL_PROD_ED\MSSQL\DATA\TESTSEB_log.LDF' a été créé. (.Net SqlClient Data Provider)
    
    ------------------------------
    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1617&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
    
    ------------------------------
    Nom du serveur : SRV-ED-MSSQL\SQL_PROD_ED
    Numéro de l'erreur : 5120
    Gravité : 16
    État : 101
    Numéro de la ligne : 1
    
    
    ------------------------------
    Emplacement du programme :
    
       à Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
       à Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
    
    


    Cordialement Sébastien DataBase2Code

    lundi 19 mars 2012 07:40
  • Bonjour,

    • Si vous craignez ne pas être en mesure de faire ces manipulations, n'hésitez pas à vous faire aider par un professionnel. Vous devez avoir des prestataires près de chez vous. Poutr ce type de travail des interventions à distance sont même possible.
    • Je vous suggère de mettre en place un database mirroring qui semble bien plus indiqué dans votre situation, pas une réplication. Avec un DBM, votre coupure sera d'une à 5 secondes je pense, donc quasiment transparent pour votre application.
    • Concernant votre erreur, le compte de service pour votre instance SQL Server doit avoir accès au répertoire sur lequel vous avez posé votre LDF.
    • Mais pour la tempDB en aucun cas on utiliser cette méthode, on fait un alter database ... Ce lien (http://conseilit.wordpress.com/2011/08/25/denali-base-tempdb-locale-pour-une-instance-en-cluster/) vouis indique la marche à suivre pour déplacer vos fichiers TempDB. La procédure est identique pour un SQL2008 et 2005, même pour une instance stand-alone.

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    • Proposé comme réponse Ould Mourad mercredi 28 mars 2012 07:58
    lundi 19 mars 2012 08:56