0

J'ai une question pour SQL Server. J'ai une procédure stockée qui devrait accéder à un autre serveur SQL pour copier les données sur un autre serveur.SQL Server: se connecter à une autre instance

Est-ce possible? Si oui: comment puis-je faire cela?

Je ne trouve pas d'échantillon.

J'utilise SQL Server 2008 R2

+5

Je pense que cela pourrait fonctionner avec des serveurs liés. Voir ici: http://msdn.microsoft.com/en-us/library/ms190479.aspx – sofl

+0

duplication possible de [Exemple de serveur SQL Server lié] (http://stackoverflow.com/questions/4091960/sql-server -linked-server-exemple-query) et http://stackoverflow.com/questions/10402197/how-to-create-the-linked-server-for-sql-server-2008-where-we-have-the- base de données-f –

Répondre

4

Voici un exemple ...

Se connecter au premier serveur et exécuter ce script

CREATE DATABASE [DatabaseA]; 
GO 
CREATE TABLE [DatabaseA].[dbo].[TableA] (Id int, ValueA varchar(10)); 
INSERT INTO [DatabaseA].[dbo].[TableA] VALUES(1,'a'),(2,'b'),(3,'c'); 

Connectez ensuite au deuxième serveur, et exécuter cette

CREATE DATABASE [DatabaseB]; 
GO 
CREATE TABLE [DatabaseB].dbo.[TableB] (Id int, ValueB varchar(10)); 
INSERT INTO [DatabaseB].dbo.[TableB] VALUES(1,'A'),(2,'B'),(3,'B'); 

Dans la connexion au premier serveur, nous créons un lien vers e deuxième comme celui-ci

EXEC master.dbo.sp_addlinkedserver 
    @server = N'LINKTOB' 
    ,@srvproduct=N'B' 
    ,@provider=N'SQLOLEDB' 
    ,@datasrc=N'<NAME OF SERVER CONTAINING DatabaseB>'; 

Notez que vous devez modifier la valeur de @datasrc en fonction de votre environnement.

Maintenant, nous pouvons sur le premier serveur exécuter une requête comme celui-ci, en utilisant les données des deux serveurs distincts dans la même requête

SELECT 
    a.Id 
    ,a.ValueA 
    ,b.ValueB 
FROM 
    [DatabaseA].[dbo].[TableA] AS a 
    INNER JOIN [LINKTOB].[DatabaseB].[dbo].[TableB] AS b ON a.Id = b.Id 

Le résultat devrait ressembler à ceci

Screenshot of query result

Si les deux serveurs sont dans le même domaine avec les mêmes paramètres de sécurité, tout devrait fonctionner sans autre changement. Sinon, jetez un oeil à Management Studio sous Objets serveur - Serveurs liés - LINKTOB. Ouvrez les propriétés pour LINKTOB et jetez un oeil à la Sécurité -tab.

1

La réponse de TheQ devrait être votre première option.

Pour les exigences de connexion MSSQL à MSSQL ad-hoc, OpenDataSource est une bonne option. Par exemple, pour interroger une table externe:

SELECT * 
FROM OPENDATASOURCE('SQLNCLI', 
'Data Source=London\Payroll;Integrated Security=SSPI') 
.AdventureWorks2012.HumanResources.Employee 
Questions connexes