salve,
yag wrote:
Come si fa un linked server ?
un linked server viene definito a livello di istanza, mentre OPENROWSET puo' direttamente essere utilizzato come singola istruzione, senza richiere la registrazione .. ovviamente un linked server va anche deregistrato quando non serva piu' il riferimento allo stesso, cosa magari da eseguire tra n anni.. diversamente OPENROWSET e' una funzionalita' a se' stante.. ovviamente, qualora l'utilizzo del server "remoto" sia intensivo, e' preferibile sia per prestazioni che funzionalita' l'utilizzo di un linked server, mentre in caso di operazioni spot si puo' tranquillamente usare OPENROWSET..
detto questo, e' ovviamente preferibile non registrare linked servers all'interno di una procedura, bensi' eseguirla a livello amministrativo vero e proprio..
di seguito un esempio di utilizzo di entrambe le funzionalita', con preventiva registrazione di un linked server che punti ad un JET database presente nel file system i d:\JetDB.Mdb e finale cleanup per la deregistrazione..
ovviamente l'account che esegue SQL Server deve avere sufficienti privilegi di accesso a livello di file system sul file stesso..
nel corpo delle procedure e' presente solo l'interrogazione di un linked server gia' registrato come anche la chiamata completa a OPENROWSET che non necessita di altre attivita' amministrative..
SET NOCOUNT ON;
USE tempdb;
GO
EXEC sp_addlinkedserver
@server = N'JET',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'd:\JetDB.mdb';
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'JET',
@useself = N'false',
@rmtuser = N'Admin',
@rmtpassword = '';
GO
CREATE PROCEDURE dbo.usp1
AS BEGIN
SELECT * FROM JET...JetTB;
END;
GO
CREATE PROCEDURE dbo.usp2
AS BEGIN
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'd:\JetDB.mdb';
'admin';'' , JetT

;
END;
GO
EXEC dbo.usp1;
EXEC dbo.usp2;
GO
DROP PROCEDURE dbo.usp1, dbo.usp2;
GO
EXEC sp_dropserver 'JET', 'droplogins' ;
puoi approfondire eventualmente sui BOL di SQL Server presso
http://www.msdn2.com/saluti