web-dev-qa-db-fra.com

SQL interserveur

Je souhaite transférer les données de la base de données d'un serveur vers la base de données d'un autre serveur. Les bases de données se trouvent toutes les deux sur un serveur mssql 2005 différent. La réplication n'est probablement pas une option puisque la base de données de destination est générée à partir de zéro sur une base [d'intervalle de temps].

De préférence, je ferais quelque chose comme

insert *
from db1/table1
into db2/table2
where rule1 = true

Il est évident que les identifiants de connexion entreraient parfois dans ce script.

30
Boris Callens

Je pense que ce que vous voulez faire est de créer un serveur lié selon this article msdn. Vous devez alors sélectionner en utilisant un nom d'objet en 4 parties, par exemple:

Select * From ServerName.DbName.SchemaName.TableName
35
Matthew Pelser

Vous pouvez utiliser Open Data Source comme ceci:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO


SELECT  *
FROM    OPENDATASOURCE('SQLOLEDB',
                   'Data Source=<Ip Of Your Server>;
                    User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name>

Go
8
Ardalan Shahgholi

Eh bien, je ne suis pas d'accord avec votre commentaire sur la réplication. Vous pouvez démarrer une réplication en créant une base de données à partir de zéro, et vous pouvez contrôler soit les mises à jour seront effectuées en mettant à jour la base de données client disponible ou simplement en recréant la base de données.

La réplication automatisée facilitera votre travail en gérant automatiquement les clés et les relations.

Je pense que la chose la plus simple à faire est de démarrer une réplication d'instantané via MSSQL Server Studio, d'obtenir les scripts T-SQL correspondants (c'est-à-dire les instructions T-SQL correspondantes pour la publication et les abonnements), et d'enregistrer ces scripts dans le cadre d'un travail dans la liste des travaux de l'agent SQL ou en tant que travail de réplication dans le dossier des réplications.

1
Philippe Grondier

Les services d'intégration SQL Server (SSIS) sont-ils une option? Si c'est le cas, j'utiliserais ça.

1
Galwegian

Vous pouvez emprunter la route du serveur lié.

vous ne pouvez tout simplement pas utiliser le select * dans vous devez faire une insertion dans select.

J'éviterais la réplication si vous n'avez pas d'expérience avec elle, car elle peut être difficile à réparer si elle se brise et peut être sujette à d'autres problèmes si elle n'est pas correctement gérée.

Restez simple, surtout si les bases de données sont petites.

1
Wes Brown

Transférez-vous tout le contenu de la base de données d'un serveur à un autre ou simplement certaines données de quelques tables?

Pour les deux options, SSIS ferait le travail, surtout si vous prévoyez d'effectuer le transfert sur une base régulière.

Si vous souhaitez simplement copier des données de 1 ou 2 tables et préférez le faire en utilisant TSQL dans SQL Management Studio, vous pouvez utiliser le serveur lié comme suggéré par pelser

  1. Configurer le serveur de base de données source en tant que serveur lié
  2. Utilisez la syntaxe suivante pour accéder aux données
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName
1
kristof

Pouvez-vous utiliser les services de transformation de données pour faire le travail? Cela fournit toutes sortes d'outils boulonnés pour faire ce genre de chose.

Vous pouvez télécharger le pack de fonctionnalités SQL Server 2005 à partir du site Web de Microsoft ici

0
Thomas Rushton