Newsgroup: it.comp.software.database
Titolo: [MSQL7] collegamento dinamico db eterogenei

deV<

 Pervasive BTrieve?
AFAIK non c'e' modo di avere una tabella collegata "dinamicamente" in
SQL Server. Mi vengono percio' in mente due vie:
1. Usare ODBC o altro strumento sul client (applicazione) per
   connettersi ad entrambi i database e leggere i dati da una tabella
   o dall'altra.
   In questo modo ovviamente non puoi avere Foreign Key o altri
   meccanismi automatici e non puoi fare delle SELECT miste... devi
   farti il tutto a manina nel client...
2. Scrivere una procedure o programma che si legge la/le tabella/e
   del magazzino da BTrieve e scrive una o piu' tabelle corrispondenti
   in SQL Server, eseguire tale procedura nottetempo in modo da avere i
   dati in SQL Server e poterli elaborare in "locale".
   Ovviamente i dati importati sono in read-only e non sono "dinamici".
Ho scartato la possibilita' intermedia che e' quella di usare un
database Access intermedio con le tabelle collegate da entrambi per
motivi di performance e stabilita'...
Davide

 ha scritto nel messaggio
news:9flbia$4jj1d$1...@ID-18487.news.dfncis.de...


 e i Linked servers ...non mi aiutano....?
hummm... non sono un esperto di Linked Servers quindi non so
dirti, ad orecchio direi di si' (effettivamente 'un c'iavevo
penzato). L'unica cosa che posso dirti e' "prova"...
Davide


Coi LinkedServer colleghi l'intero db esterno (purché raggiungibile via
OLEDB) al tuo. Quindi puoi accedere alle tabelle e viste presenti nel
database collegato.
Provato ! Funziona !
Purché non usi le transazioni.....
Ciao
Roby
PS: Ti allego un pezzettino di codice VB che ti permette di creare al volo
un linked server utilizzando SQLDMO...
    ' Connessione al SQLServer
    Set SqlSrv = New SQLDMO.SQLServer
    SqlSrv.LoginSecure = True
    SqlSrv.Connect HostName
    ' --------------------------------------------------------------------
    ' Creo 1 LinkedServer
    Set LnkSrv = New SQLDMO.LinkedServer
    With LnkSrv
        .Name = "NOMELINKEDSERVER"
        ' CnnTmp è una ADODB.Connection
        .ProviderString = CnnTmp.ConnectionString
        .DataSource = HostName
        .Catalog = DbName
        .ProviderName = CnnTmp.Provider
    End With
    SqlSrv.LinkedServers.Add LnkSrv

 ha scritto nel messaggio
news:#coTFHq7...@cwnts22.ciaoweb...



La funzione qua sotto ti permette di aprire la finestra del sistema
operativo per compilare la stringa di connessione ad una fonte dati...
Se ti può essere utile...
Ciao
Roby
Public Function BuildConnStr(ByVal CnnStr As String) As String
    Dim objDataLinks As New MSDASC.DataLinks
    Dim Cnn As ADODB.Connection
    Dim MsgErr As String
    Dim Ret As Boolean
    Dim RetV As Object
On Error GoTo Err_BuildConnStr
    BuildConnStr = ""
    If CnnStr = "" Then
        Set RetV = objDataLinks.PromptNew
        If Not RetV Is Nothing Then
            CnnStr = RetV
        End If
    Else
        Set Cnn = New ADODB.Connection
        Cnn.ConnectionString = CnnStr
        Ret = objDataLinks.PromptEdit(Cnn)
        If Ret = False Then
            Exit Function
        End If
        CnnStr = Cnn.ConnectionString
    End If
    BuildConnStr = CnnStr
Exit_BuildConnStr:
    Exit Function
Err_BuildConnStr:
    MsgErr = Err.Description
    MsgBox MsgErr
    Resume Exit_BuildConnStr
End Function

 Se ti puň essere utile...



Devi aggiungere come riferimento al tuo progetto vb:
Microsoft OLE DB Service Component 1.0 Type Library
...o qualcosa del genere.
CIao

 ha scritto nel messaggio
news:Opt75J1...@cwnts22.ciaoweb...


suo odbc classico?
Puoi usare ODBC (vedi documentazione SQL Server)
-- 
Tieni per te il Papero giusto se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero
Link al Sito Papero 
http://www.mathtools.net/