Grazie per la risposta.
Mi sono documentato e preso appunti.
Posto i miei appunti: (Potrebbe servire a qualcun altro)
LINKEDSERVER:
// verificare se un linked server esiste interrogandolo con il name o data_source
SELECT * FROM sys.servers WHERE [name] = 'SERVERPRODUZIONE';
SELECT * FROM sys.servers WHERE [data_source] = 'TURRINI\SQLEXPRESS';
//creazione linkedserver
EXEC master.dbo.sp_addlinkedserver @server = N'SERVERPRODUZIONE', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'SRVPROD';
@server = nome che diamo al linked server
@srvproduct = nome del prodotto, ma inserire stringa vuota
@provider= l’identificativo del provider OleDb, ma indicare SQLNCLI
@datasrc= nome dell'instanza sql ai cui collegarsi
//Specificare i paramentri di login
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'SERVERPRODUZIONE'
, @useself=N'False'
, @locallogin=NULL
, @rmtuser=N'sa'
, @rmtpassword='Password123'
@rmtsrvname= nome dato sopra al linked server
@useself= se viene usato l’account locale (True) oppure remoto (False).
@locallogin= Se NULL tutti gli account locali possono accedervi, oppure indicare un account di accesso a sql server ('DomainName\UserName')
@rmtuser = l’account di accesso remoto, usato solo se il parametro @useself = FALSE, oppure se un account di windows: @locallogin='DomainName\UserName'
@rmtpassword=la password associata all’utente remoto sempre se @useself = FALSE
//Specificare dei paramentri del server collegato e ne esistono tanti
EXEC master.dbo.sp_serveroption
@server=N'SERVERPRODUZIONE'
, @optname=N'collation compatible'
, @optvalue=N'false'
@server=nome dato sopra al linked server
@optname= è il nome del parametro da impostare
@optvalue=è il valore del parametro
EXEC master.dbo.sp_addlinkedserver @server = N'SERVERPRODUZIONE'
, @srvproduct=N''
, @provider=N'SQLNCLI'
, @datasrc=N'BASE10';
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'SERVERPRODUZIONE'
, @useself=N'False'
, @locallogin=NULL
, @rmtuser=N'sa'
, @rmtpassword='sqlserver2012';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'collation compatible'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'data access'
, @optvalue=N'true';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'dist'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'pub'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'rpc'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'rpc out'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'sub'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'connect timeout'
, @optvalue=N'0';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'collation name'
, @optvalue=null;
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'lazy schema validation'
, @optvalue=N'false';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'query timeout'
, @optvalue=N'0';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'use remote collation'
, @optvalue=N'true';
EXEC master.dbo.sp_serveroption @server=N'SERVERPRODUZIONE'
, @optname=N'remote proc transaction promotion '
, @optvalue=N'true';
EXEC master.dbo.sp_dropserver @server=N'SERVERPRODUZIONE'
, @droplogins='droplogins';
//Rimuovere il serveer collegato al termine di utilizzo
EXEC master.dbo.sp_dropserver @server=N'SERVERPRODUZIONE', @droplogins='droplogins'
@server=nome dato sopra al linked server
@droplogins= il valore ‘droplogins’ rimuove anche i mapping tra utenti locali e remoti; mentre se lasciato a NULL le mantiene
OPENQUERY:
UPDATE sul server collegato:
UPDATE OPENQUERY (nome_serer_collegato, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
INSERT sul server collegato:
INSERT OPENQUERY (nome_serer_collegato, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
DELETE sul server collegato:
DELETE OPENQUERY (nome_serer_collegato, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
OPENQUERY CON TABELLA TEMPORANEA:
-- Recuperare dei dati da un altro server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Interrogo la tabella temporanea
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID