Usare delle procedure con access e sqlserver
yag
yag non è online. Ultima attività: 23/06/2009 11.09.56yag
il 5 novembre 2008 alle 16.16
447 messaggi dal 09 febbraio 2004
salve vorrei sapere se è possibile a livello di procedura fare delle query su tabelle access

magari caricando il nome del db da una tabella presente nel dbsql server il giro sarebbe



access (contiene i dati solo per n tempo) nel mentre scrivo le procedure su sql server facendo una connessione al db access in questione da .net (asp.net) faccio una connectionstring verso sqlserve che chiama le procedure
Microsoft Most Valuable Professional
Re: Usare delle procedure con access e sqlserver
Andrea Montanari
Andrea Montanari non è online. Ultima attività: 05/07/2009 22.37.32Andrea Montanari Top Poster
il 6 novembre 2008 alle 17.03
Contributi | www.asql.biz | 1.136 messaggi dal 27 luglio 2005
salve,
yag wrote:
salve vorrei sapere se è possibile a livello di procedura fare delle query su tabelle access

magari caricando il nome del db da una tabella presente nel dbsql server il giro sarebbe



access (contiene i dati solo per n tempo) nel mentre scrivo le procedure su sql server facendo una connessione al db access in questione da .net (asp.net) faccio una connectionstring verso sqlserve che chiama le procedure

si, all'interno di SQL Server puoi registrare un linked server (oppure usare le funzionalita' di openrowset, se la funzionalita' e' spot e non vuoi registrare un linked server) ed utilizzarlo tranquillamente.. saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
Re: Usare delle procedure con access e sqlserver
yag
yag non è online. Ultima attività: 23/06/2009 11.09.56yag
il 6 novembre 2008 alle 18.00
447 messaggi dal 09 febbraio 2004
Andrea Montanari ha scritto:
salve,
yag wrote:
salve vorrei sapere se è possibile a livello di procedura fare delle query su tabelle access

magari caricando il nome del db da una tabella presente nel dbsql server il giro sarebbe



access (contiene i dati solo per n tempo) nel mentre scrivo le procedure su sql server facendo una connessione al db access in questione da .net (asp.net) faccio una connectionstring verso sqlserve che chiama le procedure

si, all'interno di SQL Server puoi registrare un linked server (oppure usare le funzionalita' di openrowset, se la funzionalita' e' spot e non vuoi registrare un linked server) ed utilizzarlo tranquillamente.. saluti


Come si fa un linked server ?
Re: Usare delle procedure con access e sqlserver
yag
yag non è online. Ultima attività: 23/06/2009 11.09.56yag
il 6 novembre 2008 alle 18.37
447 messaggi dal 09 febbraio 2004
sto provando così ma nn va

alter PROCEDURE prova
AS
BEGIN

EXEC sp_addlinkedserver
@server = 'EMF',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'file.mdb'

SELECT * FROM EMF...Table

EXEC sp_dropserver 'EMF'

END

USE [Emfdb]
GO

DECLARE@return_value int

EXEC@return_value = [dbo].[prova]

SELECT'Return Value' = @return_value

GO

mi da errore non trova table ma nel file mdb c'è
Microsoft Most Valuable Professional
Re: Usare delle procedure con access e sqlserver
Andrea Montanari
Andrea Montanari non è online. Ultima attività: 05/07/2009 22.37.32Andrea Montanari Top Poster
il 7 novembre 2008 alle 19.10
Contributi | www.asql.biz | 1.136 messaggi dal 27 luglio 2005
salve,
yag wrote:
Come si fa un linked server ?

un linked server viene definito a livello di istanza, mentre OPENROWSET puo' direttamente essere utilizzato come singola istruzione, senza richiere la registrazione .. ovviamente un linked server va anche deregistrato quando non serva piu' il riferimento allo stesso, cosa magari da eseguire tra n anni.. diversamente OPENROWSET e' una funzionalita' a se' stante.. ovviamente, qualora l'utilizzo del server "remoto" sia intensivo, e' preferibile sia per prestazioni che funzionalita' l'utilizzo di un linked server, mentre in caso di operazioni spot si puo' tranquillamente usare OPENROWSET..
detto questo, e' ovviamente preferibile non registrare linked servers all'interno di una procedura, bensi' eseguirla a livello amministrativo vero e proprio..
di seguito un esempio di utilizzo di entrambe le funzionalita', con preventiva registrazione di un linked server che punti ad un JET database presente nel file system i d:\JetDB.Mdb e finale cleanup per la deregistrazione..
ovviamente l'account che esegue SQL Server deve avere sufficienti privilegi di accesso a livello di file system sul file stesso..
nel corpo delle procedure e' presente solo l'interrogazione di un linked server gia' registrato come anche la chiamata completa a OPENROWSET che non necessita di altre attivita' amministrative..

SET NOCOUNT ON;
USE tempdb;
GO
EXEC sp_addlinkedserver
@server = N'JET',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'd:\JetDB.mdb';
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'JET',
@useself = N'false',
@rmtuser = N'Admin',
@rmtpassword = '';
GO
CREATE PROCEDURE dbo.usp1
AS BEGIN
SELECT * FROM JET...JetTB;
END;
GO
CREATE PROCEDURE dbo.usp2
AS BEGIN
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'd:\JetDB.mdb';
'admin';'' , JetT ;
END;
GO
EXEC dbo.usp1;
EXEC dbo.usp2;
GO
DROP PROCEDURE dbo.usp1, dbo.usp2;
GO
EXEC sp_dropserver 'JET', 'droplogins' ;

puoi approfondire eventualmente sui BOL di SQL Server presso http://www.msdn2.com/
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de
Re: Usare delle procedure con access e sqlserver
yag
yag non è online. Ultima attività: 23/06/2009 11.09.56yag
il 10 novembre 2008 alle 14.46
447 messaggi dal 09 febbraio 2004
Andrea Montanari ha scritto:
salve,
yag wrote:
Come si fa un linked server ?

un linked server viene definito a livello di istanza, mentre OPENROWSET puo' direttamente essere utilizzato come singola istruzione, senza richiere la registrazione .. ovviamente un linked server va anche deregistrato quando non serva piu' il riferimento allo stesso, cosa magari da eseguire tra n anni.. diversamente OPENROWSET e' una funzionalita' a se' stante.. ovviamente, qualora l'utilizzo del server "remoto" sia intensivo, e' preferibile sia per prestazioni che funzionalita' l'utilizzo di un linked server, mentre in caso di operazioni spot si puo' tranquillamente usare OPENROWSET..
detto questo, e' ovviamente preferibile non registrare linked servers all'interno di una procedura, bensi' eseguirla a livello amministrativo vero e proprio..
di seguito un esempio di utilizzo di entrambe le funzionalita', con preventiva registrazione di un linked server che punti ad un JET database presente nel file system i d:\JetDB.Mdb e finale cleanup per la deregistrazione..
ovviamente l'account che esegue SQL Server deve avere sufficienti privilegi di accesso a livello di file system sul file stesso..
nel corpo delle procedure e' presente solo l'interrogazione di un linked server gia' registrato come anche la chiamata completa a OPENROWSET che non necessita di altre attivita' amministrative..

SET NOCOUNT ON;
USE tempdb;
GO
EXEC sp_addlinkedserver
@server = N'JET',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'd:\JetDB.mdb';
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'JET',
@useself = N'false',
@rmtuser = N'Admin',
@rmtpassword = '';
GO
CREATE PROCEDURE dbo.usp1
AS BEGIN
SELECT * FROM JET...JetTB;
END;
GO
CREATE PROCEDURE dbo.usp2
AS BEGIN
SELECT *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'd:\JetDB.mdb';
'admin';'' , JetT ;
END;
GO
EXEC dbo.usp1;
EXEC dbo.usp2;
GO
DROP PROCEDURE dbo.usp1, dbo.usp2;
GO
EXEC sp_dropserver 'JET', 'droplogins' ;

puoi approfondire eventualmente sui BOL di SQL Server presso http://www.msdn2.com/
saluti


Ho fatto tutto mi sono collegato e recupero i dati
il tutto trasparente al programma ..
e funziona

ora ho un problema sto usando sql server2005 e e reportingservice
da l'ambiente di creazione report vedo ed eseguo benissimo il report invece
tramite l'anteprima report (con Reports o RerportServer) mi da errore


* Errore durante l'elaborazione del report.
o Impossibile eseguire la query per il set di dati 'DataSet1'.
+ Impossibile inizializzare l'oggetto origine dei dati del provider OLE DB "Microsoft.Jet.OLEDB.4.0" per il server collegato "EMF".

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.

COMMUNITY
ULTIMI MESSAGGI
MEDIA
IN EVIDENZA
MISC
Powered by .db Forums "Caesar Reborn" v. 2009.6.9