VB.NET - SQL Server - Passaggio Dati

di il
2 risposte

VB.NET - SQL Server - Passaggio Dati

Ciao a tutti,

vorrei creare un programma in VB.NET per passare dei dati da una tabella di un DB a un'altra tabella di un DB diverso.
ES.
DB1.ANAGRAFICA
DB2.RISORSA

INSERT: dal primo db (DB1.ANAGRAFICA) prendo Nome,cognome,sesso,CodiceFiscale,residenza e li scrivo nel secondo db (DB2.RISORSA)
UPDATE: se in futuro il dato nel primo db viene modificato, deve essere modificato anche sul secondo. (es. il campo residenza)

Sono alle prime armi con VB.NET potete consigliarmi una guida che faccia al caso mio?

Grazie in anticipo.

2 Risposte

  • Re: VB.NET - SQL Server - Passaggio Dati

    Non ti serve.

    Leggiti BENE la documentazione di SQL Server relativa a come accedere da UN DATABASE ad una tabelle di UN"ALTRO DATABASE.

    https://stackoverflow.com/questions/5145637/querying-data-by-joining-two-tables-in-two-database-on-different-servers
  • Re: VB.NET - SQL Server - Passaggio Dati

    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
Devi accedere o registrarti per scrivere nel forum
2 risposte