Ad Hoc Distributed Queries

martedì 11 dicembre 2007 - 13.33

Teech Profilo | Expert

Ho creato una vista:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Al lancio mi restituisce un errore:


818x217 34Kb


Non trovo l'opzione per settare Ad Hoc Distributed Queries... Come posso fare? Che rischi corro?

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

alx_81 Profilo | Guru

>Ho creato una vista:
>
>SELECT T.Codice, T.Descrizione
>FROM OPENROWSET('SQLNCLI', 'Persist Security Info=True;User
>ID=mioutente;Password=miapassword;Initial Catalog=MioDB;Data
>Source=MioServer',
>'SELECT Campo1 as Codice, Campo2 as Descrizione
> FROM Tabella1') AS T
>
>Al lancio mi restituisce un errore:
>
>
>
>Non trovo l'opzione per settare Ad Hoc Distributed Queries...
>Come posso fare? Che rischi corro?
Che DBMS utilizzi?
Alx81 =)

http://blogs.dotnethell.it/suxstellino

lbenaglia Profilo | Guru

>Non trovo l'opzione per settare Ad Hoc Distributed Queries...
>Come posso fare?

Ciao Maurizio,

Lancia il SQL Server Area Configuration, seleziona Surface Area Configuration for Features e fai click su Enable OPENROWSET and OPENDATASOURCE support.

>Che rischi corro?
Diciamo che è sempre meglio avere tutto disabilitato ed abilitare esplicitamente le funzionalità che servono in modo da diminuire la superficie di attacco.

I Books Online riportano: "Enabling the use of ad hoc names means that any authenticated login to SQL Server 2005 can access the provider. SQL Server administrators should enable this feature only for highly trusted providers that are safe to be accessed by any local login".

Mi sebra alquanto eloquente

>Grazie!!!
Prego.

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

Teech Profilo | Expert

Avevo dimenticato di dire che uso SQL2005
Vi ringrazio tanto per la risposta...

A questo punto mi si complica la vita :
Vorrei creare una Function che mi restituisce dei record (semplicemente Codice e Descrizione) prendendoli da un DB SQL2005 che è la base dati di un gestionale non creato /implementato da me...

Il DB del gestionale potrebbe essere sulla stessa istanza rispetto a dove io metterò il mio DB ma potrebbe essere anche su un'altra istanza o su un altro server (poca differenza da un punto di vista pratico)...

Stò valutando se usare la OPENROWSET, utilizzare un Linked Server o altro (per ora sconosciuto) e parametrizzare la mia Function in modo da poter accedere ai dati del DB del gestionale in modo "dinamico", senza la necessità di dover tutte le volte cambiare il codice della Function su ogni installazione in quanto hard coded per ciò che rigurada la connessione esterna...

Sono mooooooooolto acerbo in materia, ma stò provando a dcumentarmi e vista la vastità dell'argomento cerco un indirizzamento su cosa approfondire...

Avete consigli in merito? Grazie mille!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

lbenaglia Profilo | Guru

>Il DB del gestionale potrebbe essere sulla stessa istanza rispetto
>a dove io metterò il mio DB ma potrebbe essere anche su un'altra
>istanza o su un altro server (poca differenza da un punto di
>vista pratico)...
OK.

>Stò valutando se usare la OPENROWSET, utilizzare un Linked Server
>o altro (per ora sconosciuto) e parametrizzare la mia Function
>in modo da poter accedere ai dati del DB del gestionale in modo
>"dinamico", senza la necessità di dover tutte le volte cambiare
>il codice della Function su ogni installazione in quanto hard
>coded per ciò che rigurada la connessione esterna...
OK, se definisci il linked server "Pippo" nella tua UDF farai riferimento ad esso indipendentemente da dove punterà.
Quindi, nel caso debba cambiare il puntamento ad un'altra istanza, le uniche modifiche saranno relative al linked server.


>Avete consigli in merito? Grazie mille!!!
Prego.

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

Teech Profilo | Expert

Ho deciso di utilizzare dei linked server per il mio scopo... Adesso stò provando a far funzionare una normale T-SQL per farmi restituire dei dati dal linked server ma già incontro problemi..
La query è la seguente:

USE MIODB GO /* Creazione linked server */ EXEC sp_addlinkedserver 'MyLINK' , @srvproduct= '' , @provider= 'SQLNCLI' , @datasrc= 'MySERVER' , @catalog= 'DBLINK' GO /* Mapping del login */ EXEC sp_addlinkedsrvlogin 'MyLINK' , FALSE , 'localuser' , 'remoteuser' , 'remotepwd' GO SELECT * FROM openquery ( 'MyLINK', 'SELECT Campo1 AS Codice, Campo2 AS Descrizione FROM Tabella' GO EXEC sp_dropserver @server='MyLINK', droplogins GO
(i valori dei parametri sono generici, non quelli che ho scritto nella mia query)

Se faccio un controllo della sintassi escono i seguenti messaggi:

Messaggio 102, livello 15, stato 1, riga 3
Sintassi non corretta in prossimità di 'MyLINK'.
Messaggio 119, livello 15, stato 1, riga 2
Il parametro numero 2 e i parametri successivi devono essere passati nel formato '@name = value'. Dopo avere adottato questa sintassi, è necessario passare tutti i parametri nel formato '@name = value'.

Mi pare di aver capito che l'errore si riferisce al mapping ma da diversi esempi cercati in rete e rispetto ai BOL mi pare sia la sintassi corretta... Ho provato ad 'esplicitare' i parametri (sp_addlinkedsrvlogin @server='MyLINK', ecc) ma senza risultati positivi...
Non capisco proprio...

P.S.: Credo che in futuro vi romperò ulteriormente perchè vorrei far diventare questa query una Inline Table Function e passare dei valori parametrizzati, ma per adesso devo risolvere il funzionamento

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

Teech Profilo | Expert

Risolto.
L'errore era nella SELECT... Oltre la parentesi di chiusura di OPENQUERY il nome del Linked Server deve essere passato come oggetto e non come stringa (senza apici)...

Grazie comunque e aspettatevi altre mie domande in merito

Ciao!!
--------------
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5