Consulta a Bases de Datos de Otros Servidores

10/05/2004 - 23:22 por Ing. Víctor Mar | Informe spam
Saludos...
Quiero exponer mi problema.
Ojala pueda encontrar ayuda en este foro.

Quiero poder parametrizar el nombre del servidor y la base de datos en
consultas SQL
He analizado tres opciones:


SELECT * FROM
OPENROWSET('SQLOLEDB', 'EXCELUM';'sa';'' ,'SELECT cla_empresa,
cla_ubicacion_base, cla_trab, nombre FROM bd_contal_srhyn.dbo.vw_Personal')
esta primera funciona bien pero no permite parametrizar ni el server ni la
base de datos, solo acepta cadenas constantes,.


SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB','Data Source=EXCELUM;User ID=sa;Password=;'
).bd_contal_srhyn.dbo.vw_Personal
este caso es el mismo, la sintaxis funciona pero no puedo parametrizar nada.



CREATE TABLE #TMP_PERSONAL (cla_empresa INT, cla_ubicacion_base INT,
cla_trab INT, nombre VARCHAR(92))
INSERT INTO #TMP_PERSONAL EXEC ('SELECT cla_empresa, cla_ubicacion_base,
cla_trab, nombre FROM ' + @server + '.' + @database + '.dbo.vw_Personal')
Este ultimo me manda este error: y en varios foros esta reportado pero no
tiene una solucion.

Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'SQLOLEDB' no pudo
iniciar una transacción distribuida.
[OLE/DB provider returned message: No se puede dar de alta la nueva
transacción en el coordinador de transacciones especificado. ]
Traza de error de OLE DB [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].



OJALA PUEDAN AYUDARME, Y YO TAMBIEN PUEDA AYUDARLOS POSTERIORMENTE EN ALGO..
SALUDOS..
 

Leer las respuestas

#1 Maxi
11/05/2004 - 02:42 | Informe spam
Hola, si lo que quieres es parametrizar el nombre del servidor o cualquier
otra cosa desde el Tsql debe usar Sql-Dinamico.

Busque en sus libros on line el uso de sp_executesql

Suerte


Salu2

Maxi

Desarrollador 3 estrellas .NET
Buenos Aires - Argentina

MSN:

"Ing. Víctor Mar" escribió en el mensaje
news:
Saludos...
Quiero exponer mi problema.
Ojala pueda encontrar ayuda en este foro.

Quiero poder parametrizar el nombre del servidor y la base de datos en
consultas SQL
He analizado tres opciones:


SELECT * FROM
OPENROWSET('SQLOLEDB', 'EXCELUM';'sa';'' ,'SELECT cla_empresa,
cla_ubicacion_base, cla_trab, nombre FROM


bd_contal_srhyn.dbo.vw_Personal')
esta primera funciona bien pero no permite parametrizar ni el server ni la
base de datos, solo acepta cadenas constantes,.


SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB','Data Source=EXCELUM;User ID=sa;Password=;'
).bd_contal_srhyn.dbo.vw_Personal
este caso es el mismo, la sintaxis funciona pero no puedo parametrizar


nada.



CREATE TABLE #TMP_PERSONAL (cla_empresa INT, cla_ubicacion_base INT,
cla_trab INT, nombre VARCHAR(92))
INSERT INTO #TMP_PERSONAL EXEC ('SELECT cla_empresa, cla_ubicacion_base,
cla_trab, nombre FROM ' + @server + '.' + @database + '.dbo.vw_Personal')
Este ultimo me manda este error: y en varios foros esta reportado pero no
tiene una solucion.

Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'SQLOLEDB' no pudo
iniciar una transacción distribuida.
[OLE/DB provider returned message: No se puede dar de alta la nueva
transacción en el coordinador de transacciones especificado. ]
Traza de error de OLE DB [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].



OJALA PUEDAN AYUDARME, Y YO TAMBIEN PUEDA AYUDARLOS POSTERIORMENTE EN


ALGO..
SALUDOS..



Preguntas similares