Parametrizzare Three/Four-Part Name

lunedì 17 novembre 2008 - 22.48

Teech Profilo | Expert

Salve a tutti...
Esiste un modo per parametrizzare una query che utilizza un i three-part name (e anche i four-part name)? Ovviamente ho provato così ma non funziona:
SELECT t.Campo FROM @Server.@Database.@Schema.Tabella As t

E' necessario crearsi una variabile che strutturi tutto il nome a monte? Tipo:
set @Tabella=[concateno i paramteri].Tabella SELECT t.Campo FROM @Tabella As t
Spero di no perchè in questo modo, nel caso in cui ci siano più tabelle relazionate c'è un proliferare di parametri piuttosto importante... Poi, avviamente, se utilizzo il three-part o four-part name è perchè già ho più server o più database, quindi la complessità aumenta abbastanza...

Grazie!!!

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

lbenaglia Profilo | Guru

>Esiste un modo per parametrizzare una query che utilizza un i
>three-part name (e anche i four-part name)?
No, a meno di ricorrere al Dynamic SQL, ma te lo sconsiglio per via di tutte le controindicazioni che troverai elencate in questo articolo di Erland:
http://www.sommarskog.se/dynamic_sql.html

>Spero di no perchè in questo modo, nel caso in cui ci siano più
>tabelle relazionate c'è un proliferare di parametri piuttosto
>importante... Poi, avviamente, se utilizzo il three-part o four-part
>name è perchè già ho più server o più database, quindi la complessità
>aumenta abbastanza...
Non capisco a cosa ti possa servire una cosa del genere.
Hai "più server o più database"?
Che significa?

>Grazie!!!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Teech Profilo | Expert

Parto dal presupposto che ho un database gestito da me ed un database gestito da un gestionale che non posso modificare (come nell'altro post...) e che in entrambi i casi i database, su installazioni diverse possono essere su server/istanze diverse e possono avere anche nomi diversi... Inoltre. potrebbero esserci, su installazioni diverse politiche diverse sugli utenti e quindi anche lo schema potrebbe avere il suo peso a livello variabile...
Per questo motivo penso che poter parametrizzare il four-part name sia comodo... Per farlo aggiungerò un parametro per ogni tabella (che gestirò con gli alias) e da codice creerò le stringhe in modo dinamico leggendo i dati (Server, Database, Schema) da un file di configurazione... Altre soluzioni più eleganti non le vedo...

Ovviamente questo perchè gestisco il T-SQL direttamente da codice in VB.NET utilizzando dei SQLCommand di tipo Text e non Stored Procedure... Se usassi stored procedure probabilmente non avrei bisogno alcuno di parametrizzare questi dati che vengono gestiti in fase di installazione, ma su installazioni diverse dovrei cambiare sempre le SP (se cambia i nome del DB del gestionale).

Grazie alla tua risposta ho capito perchè non ho trovato assolutamente nulla in merito ne su manuali ne sul web

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5