2017-10-10 13 views
0

Autrefois, j'avais deux bases de données dans un serveur physique. (Base de données 'Personnes' et 'Travail')
J'ai donc utilisé la requête ci-dessous lorsque les informations de base de données 'Personnes' sont nécessaires dans la base de données 'Travail'. Mais, il m'est apparu quelque chose que les bases de données physiques doivent être séparées avec deux serveurs physiques.
Par conséquent, j'ai fait une connexion serveur liée au serveur de base de données 'People' pour référencer les informations dans la base de données 'Work' comme avant le nom et ensuite j'ai dafualt catalogué le 'People' dans le serveur lié.Comment définir le catalogue par défaut avec le serveur lié dans Mssql

Bien que j'ai déjà défini le catalogue par défaut, je dois entrer le nom de la base de données et je ne peux pas ignorer le nom. Les bases de données Phycal ont été séparées, mais je veux utiliser une requête précédente en utilisant un serveur lié.

Exemple) Si je fais un serveur lié comme appelé 'Peoplo', je dois utiliser la requête ci-dessous.

select * from People.People.dbo.information 
--select * from [linked name].[db name].[dbo].[table Name] 

Je veux utiliser la requête ci-dessous.

select * from People.dbo.information 
    --select * from [linked name].[dbo].[table Name] 
    --Then, linked name is seted with default catalog as 'People' 

Répondre

0

Si vous avez défini la « base de données par défaut » pour la connexion sur le serveur lié, vous pouvez utiliser ce (2 points, sauter catalogue par défaut)

select * from People..dbo.information 

Notez que comme vous le faites, les serveurs liés peuvent présenter des problèmes de performances lors de la jointure entre serveurs.

Notez également que les données n'ont aucune intégrité référentielle . Les bases de données ne seront pas synchronisées ou cohérentes en cas d'indisponibilité ou de restauration, etc

+0

merci de répondre. Donc, je me demande qui peut utiliser sans 2 points. En d'autres termes, il utilisera 'select * from People.dbo.information' à la place 'select * from People..dbo.information'. Vous ne pouvez pas le faire en aucune façon? –

+0

'People..dbo.information' est un serveur lié" People ", base de données distante par défaut. Gens. 'People.dbo.information' est la base de données locale People. Vous devez utiliser 2 points – gbn

+0

merci! Donc je dois changer mon code de programme et la procédure SQL deux points. Parce qu'à ce moment-là, cela a été utilisé dans un serveur physique .. Mais c'est séparé maintenant .. Merci encore une. –