none
Requêtes entre 2 bases sur 2 deux instances différentes RRS feed

  • Question

  • Bonjour

    Je suis en train de développer une application sur une base sql server 2005 workgroup. Cette base sera alimentée par les données d'une base sql server 2005 workgroup sur un autre serveur.

    Tous les nuits, les modifications de la base A doivent être reportées dans la base B.

    Existe-t'il un moyen de faire ça directement en SQL ou dois-je passer par le développement d'un service?

    Merci

    vendredi 22 février 2008 10:10

Réponses

  • 1- comment définissez-vous la connexion ?

     

    essayez :

     

    Code Snippet

    if not exists (select * from master..sysservers where srvname = 'server')

    begin

    EXEC master.dbo.sp_addlinkedserver @server = N'server', @srvproduct=N'SQL Server' ;

    Exec sp_addlinkedsrvlogin @rmtsrvname = N'server', @useself = false, @rmtuser = 'user', @rmtpassword = 'password'

    end

     

     

    2- Si vous voulez copier des modifications de la base de données A à la base de données B , vous pouvez faire

    a- Utiliser SSIS pour copier Data De A à B.

    b- Utiliser replication.

     

     

     

    lundi 25 février 2008 13:12

Toutes les réponses

  • Bon j'ai avancé. J'ai ajouté un serveur lié (sp_addlinkedserver ou par l'explorateur d'objet dans serveur lié).

    J'arrive à lancé ma requête mais j'ai une erreur de connexion. Dans les propriétés du serveur lié, j'ai choisi que les connexions "seront effectuées dans le contexte de sécurité de la connexion actuelle". Je n'ai pas défini de mappage entre les 2 serveurs.

    si j'exécute ma requête, j'obtiens ça

     

    Msg 18456, Niveau 14, État 1, Ligne 1

    Échec de l'ouverture de session de l'utilisateur 'AUTORITE NT\ANONYMOUS LOGON'.

     

    J'ai testé d'autres configurations de sécurité mais sans succès.

    vendredi 22 février 2008 11:29
  • 1- comment définissez-vous la connexion ?

     

    essayez :

     

    Code Snippet

    if not exists (select * from master..sysservers where srvname = 'server')

    begin

    EXEC master.dbo.sp_addlinkedserver @server = N'server', @srvproduct=N'SQL Server' ;

    Exec sp_addlinkedsrvlogin @rmtsrvname = N'server', @useself = false, @rmtuser = 'user', @rmtpassword = 'password'

    end

     

     

    2- Si vous voulez copier des modifications de la base de données A à la base de données B , vous pouvez faire

    a- Utiliser SSIS pour copier Data De A à B.

    b- Utiliser replication.

     

     

     

    lundi 25 février 2008 13:12
  • Bonjour

    1 . Je faisais presque pareil sauf que je passe @useself = true car je ne voulais pas passer mes credentials.

    voilà ce que j'obtiens avec ma méthode :

    TITRE : Microsoft SQL Server Management Studio
    ------------------------------

    « Le serveur lié a été créé mais a échoué à un test de connexion. Voulez-vous modifier les propriétés du serveur lié ? »

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES :

    Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    Échec de l'ouverture de session de l'utilisateur 'AUTORITE NT\ANONYMOUS LOGON'. (Microsoft SQL Server, Erreur : 18456)

    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.2050&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476

     

    Si j'utilise ta méhode en mettant mon nom d'utilisateur et mon mot de passe, il me dit ça :

     

    TITRE : Microsoft SQL Server Management Studio
    ------------------------------

    « Le serveur lié a été créé mais a échoué à un test de connexion. Voulez-vous modifier les propriétés du serveur lié ? »

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES :

    Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    Échec de l'ouverture de session de l'utilisateur 'mondomaine\gbl'. L'utilisateur n'est pas associé à une connexion SQL Server approuvée. (Microsoft SQL Server, Erreur : 18452)

    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.2050&EvtSrc=MSSQLServer&EvtID=18452&LinkId=20476

     

    Or j'arrive à requêter sur ce serveur sans souci.

     

    2. Pour SSIS je n'ai pas regardé. En revanche pour la réplication, les bases ne sont pas identiques. Les données doivent donc être traîtées pour être copiées.

     

    Merci


    lundi 25 février 2008 16:05
  • Re-bonjour

    Je viens de me rendre compte qu'avec ma méthode (@useself=true), ça fonctionne si j'exécute la requête sur le serveur dans management studio, alors que depuis mon pc (logué avec le même compte utilisateur que sur le serveur) j'ai à chaque fois le message d'erreur avec anonymouslogon.

     

    lundi 25 février 2008 16:15
  •  

    1- J'ai voulu dire SQL nom d'utilisateur et mot de passe , pas de domain ou windows utilisateur .

     

    2- Si vous utilisez un nom d'utilisateur de domaine et ce compte peut communiquer au serveur, donc il devrait travailler. encore (utilisateur de domaine).

     

    3-  Essayez changer les parameters

    Code Snippet

     

    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'Server', @locallogin = N'localuser', @useself = N'False', @rmtuser = N'remoteuser', @rmtpassword = N'remotepassword'

     

     

     

     

    mardi 26 février 2008 13:12
  • Bonjour

    Je n'utilise que l'authentification intégrée.

    En attendant, ça fonctionne entre mes deux serveurs, c'est l'essentiel. Pour le reste, je vais prendre le temps de me documenter sur le sujet.

    Merci

     

    mardi 26 février 2008 18:08