in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

Query su server diversi con parametro server "dinamico"

Last post 07-17-2010 16.04 by sgovoni. 3 replies.
Page 1 of 1 (4 items)
Sort Posts: Previous Next
  • 07-15-2010 10.40

    • giangi_77
    • Top 100 Contributor
      Male
    • Joined on 06-04-2007
    • Varese
    • Posts 7
    • Points 155

    Query su server diversi con parametro server "dinamico"

    Ciao a tutti,

    ho questa esigenza, sto utilizzando i reporting services e a seconda dell'ambiente in cui mi trovo (test, produzione attuale, produzione futura, ecc. ecc.) devo poter fare query su database e server diversi.

    Inizialmente avevo previsto delle semplici query direttamente all'interno dei miei report (uso report builder 3), ma mi sono reso conto subito che questo sistema mi obbligava a riaprire il builder, modificare i datasource, salvare il report e ripubblicarlo ogni volta.

    Ho scelto di usare delle Stored Procedures, ma vorrei evitare di dover modificare tutti i riferimenti ai server andando a spulciarli nelle query (che sono piuttosto complesse).

    C'è la possibilità, in qualche modo, di trasformare questa sintassi

    NOME_SERVER.NOME_DB.SCHEMA.NOME_TABELLA

    in qualcosa del tipo:

    varNomeServer + NOME_DB.SCHEMA.NOME_TABELLA

    dove varNomeServer dovrebbe essere qualcosa del tipo "NOME_SERVER."

    suggerimenti?

    ah...dimenticavo... sto usando SQL Server 2008.

    grazie in anticipo

    ciao

     

    • Post Points: 20
  • 07-15-2010 19.15 In reply to

    • sgovoni
    • Top 10 Contributor
      Male
    • Joined on 10-18-2007
    • Posts 431
    • Points 6.940

    Re: Query su server diversi con parametro server "dinamico"

    Ciao,

    giangi_77:
    Ho scelto di usare delle Stored Procedures, ma vorrei evitare di dover modificare tutti i riferimenti ai server andando a spulciarli nelle query (che sono piuttosto complesse).

    Le stored procedure accettano parametri di input, potresti quindi passare alle tue SP una variabile di tipo VARCHAR ad esempio @varNomeServer VARCHAR(20) ed utilizzare quella nella composizione delle query (SQL Dinamico).

    Per la sintassi di creazione di una SP con parametri puoi dare un'occhiata a questo link: http://msdn.microsoft.com/it-it/library/ms187926.aspx 

    Ciao!

    Sergio Govoni, SQL Server MVP | MVP Profile | Blog | Twitter |
    • Post Points: 20
  • 07-16-2010 11.06 In reply to

    • giangi_77
    • Top 100 Contributor
      Male
    • Joined on 06-04-2007
    • Varese
    • Posts 7
    • Points 155

    Re: Query su server diversi con parametro server "dinamico"

    Ciao e grazie per la risposta sgovoni,

    ho visto il link che mi hai segnalato ed ho notato che ci sono tante cose interessanti...ma che differenze ci sono tra usare dynamic sql e non in una stored procedure? Parlo di performance o questioni tecniche particolari

    Al momento ho appreso quanto mi serviva, ma ho deciso di non aggiungere un parametro alla mia procedura dato che questo implicherebbe comunque una modifica dei miei report nel momento in cui ci sarà il cambiamento dei server. Probabilmente utilizzerò una variabile interna.

    grazie ancora

    ciao

    • Post Points: 20
  • 07-17-2010 16.04 In reply to

    • sgovoni
    • Top 10 Contributor
      Male
    • Joined on 10-18-2007
    • Posts 431
    • Points 6.940

    Re: Query su server diversi con parametro server "dinamico"

    Ciao,

    giangi_77:
    che differenze ci sono tra usare dynamic sql e non in una stored procedure? Parlo di performance o questioni tecniche particolari

    Il migliore articolo in circolazione su Dynamic SQL puoi trovarlo a partire da questo link: http://www.ugiss.org/Content/Article/The-Curse-and-Blessings-of-Dynamic-SQL.aspx 

    giangi_77:
    ho deciso di non aggiungere un parametro alla mia procedura dato che questo implicherebbe comunque una modifica dei miei report nel momento in cui ci sarà il cambiamento dei server.

    Ci sarebbe anche un'altra soluzione, ossia utilizzare un alias per un linked server ... ecco come fare:

    1. In SQL Server Management Studio espandere il ramo "Server Collegati" (o linked server), quindi procedere con la creazione di un nuovo server collegato
    2. Nella scheda Generale della finestra Nuovo Server Collegato specificare:
      1. Il nome dell'alias nel campo "Server collegato"
      2. Selezionare SQL Native Client come provider
      3. Nel campo "Nome prodotto" specificare "sql_server"
      4. Nel campo "Data Source" specificare il nome dell'host che si vuole utilizzare come server collegato
    3. Nella scheda Protezione specificare le credenziali di accesso
    4. Nella scheda Opzioni Server impostare a True: "Data Access", RPC, "Rpc Out" e "Use Remote Collaboration"

    Potrai quindi modificare di volta in volta il nome dell'host in funzione dell'ambiente in cui ti trovi ad eseguire le SP (test, produzione, ecc...).

    Ciao!

    Sergio Govoni, SQL Server MVP | MVP Profile | Blog | Twitter |
    • Post Points: 5
Page 1 of 1 (4 items)
(C) 2007 User Group Italiano di SQL Server