Mostrando entradas con la etiqueta SQL Server 2005 - Intermedio. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Server 2005 - Intermedio. Mostrar todas las entradas

miércoles, 14 de octubre de 2009

AcquireConnection method call to the connection manager [Connection name] failed with error code 0xC0202009 - Llamada al método AcquireConnection

-- EN INGLES -----------------------------------------------------
---------------------------------------------------------------------
The message "The AcquireConnection method call to the connection manager ‘(Connection name)’ failed with error code 0xC0202009" occurs when you attempt to validate or run a SQL Server 2005 Integration Services package on a server (where ‘(Connection name)’ is a known connection manager object name).

This problem may occur when you use Integration Services in the following way:

1. Logged into the Server using a different user name than the one used to create the package.
2. Not using a Configuration file to read Connection settings.
3. Using Connections that include sensitive settings e.g. passwords.
4. Deploying the package using the Package Deployment Utility method.

Cause:

The Package’s ProtectionLevel property is set to encrypt sensitive settings with a user key e.g EncryptSensitiveWithUserKey (the default value) AND you attempt to deploy the package on the server logged in as a different user (i.e different user context).

The different user context results in the failure of decrypting sensitive settings (e.g. passwords) because the decryption key is specific to the user context at the time the package files were created.

The “The AcquireConnection method call to the connection manager ‘(Connection name)’ failed with error code 0xC0202009” message is indicative of a problem the Package has when attempting to read connection parameters e.g. a password, or connection string.

Solution :
Option 1 – Use Password protection

Set the Package’s ProtectionLevel property to encrypt settings with a password e.g EncryptSensitiveWithPassword. This setting prevents access to sensitive settings unless the user knows the correct password. The password is not user context dependent and will therefore allow the package to be run regardless of what user you are logged in as.

Option 2 – Use a Configuration file to store sensitive settings
Retain your existing ProtectionLevel setting and use a Configuration file to store sensitive settings.

The package will then read the Configuration file to obtain values it would otherwise have to decrypt dependent on the ProtectionLevel setting. This method relies on protecting the configuration file to prevent unauthorised access.

Notes:
Changing the ProtectionLevel setting may impact running the Package as a job in SQL Server 2005. See An SSIS package does not run when you call the SSIS package from a SQL Server Agent job step for more information.

See Setting the Protection Level of Packages for information about applying different protection levels to your Package.

--EN CASTELLANO ----------------------------------------------
---------------------------------------------------------------------
El mensaje de la llamada al método AcquireConnection al administrador de conexión (nombre de conexión) falló con código de error 0xC0202009 se produce cuando intentamos validar o ejecutar un SQL Server 2005 Integration Services en un servidor (donde [nombre de conexión] es un conocido administrador de nombre de objeto de conexión ).

Este problema puede producirse cuando utiliza Servicios de Integración de la siguiente manera:

1. Conectandose en el servidor utilizando un nombre de usuario diferente al que se utilizó para crear el paquete.
2. No usar un archivo de configuración para leer la configuración de conexión.
3. Uso de conexiones que incluyen ajustes de sensibilidad, por ejemplo contraseñas.
4. Implementar el paquete utilizando el método de implementación de paquete de utilidades (Package Deployment Utility).

Explicacion:
La propiedad del paquete ProtectionLevel se establece para cifrar los ajustes sensibles con una clave de usuario, por ejemplo EncryptSensitiveWithUserKey (el valor predeterminado) y se intenta implementar el paquete en el servidor conectado como un usuario diferente (es decir, el contexto de usuario diferente).

Los resultados de contexto diferente del usuario en el fracaso de descifrar los ajustes sensibles (por ejemplo, contraseñas), suceden porque la clave de descifrado es específica para el contexto de usuario en el momento en que los archivos del paquete fueron creados.

El método AcquireConnection o la llamada al administrador de conexión (nombre de conexión) falló con código de error 0xC0202009 es indicativo de un problema que se produce cuando el paquete intenta leer los parámetros de conexión por ejemplo, una contraseña, o la cadena de conexión.

Solución Opción 1 - Utilizar protección con contraseña
Estableciendo la propiedad del paquete ProtectionLevel para cifrar la configuración con una contraseña, por ejemplo EncryptSensitiveWithPassword.
Esta configuración impide el acceso a la configuración sensible a menos que el usuario conozca la contraseña correcta. La contraseña no es dependiente del usuario y por lo tanto, permite que el paquete se ejecute independientemente de qué usuario está conectado.

Opción 2 - Utilizar un archivo de configuración para guardar los ajustes de sensibilidad
Para conservar tu ProtectionLevel existente debes utilizar un archivo de configuración para guardar los ajustes sensibles. El paquete de continuación, leerá el archivo de configuración para obtener los valores de lo contrario tendría que descifrarlos, dependiendo de la configuración ProtectionLevel. Este método se basa en la protección del archivo de configuración para evitar el acceso no autorizado. Este método se basa en la protección del archivo de configuración para evitar el acceso no autorizado.

Notas :
La modificación del valor ProtectionLevel puede afectar la ejecución del paquete como un trabajo en SQL Server 2005. Para más información revisar un paquete SSIS no se ejecuta cuando se llama al paquete SSIS desde un paso de trabajo del Agente SQL Server .

Tambien revisar Ajuste del nivel de protección de los paquetes para obtener información sobre la aplicación de diferentes niveles de protección a su paquete.

Otros Links:
Error cuando ejecuta un paquete SSIS que está programado para ejecutarse como un trabajo del Agente SQL Server: "Error de OLE DB. Código de error: 0x80004005"

sábado, 14 de junio de 2008

Stored Procedure with Text type parameters for handling plots - Procedimiento Almacenado con parametros tipo Text para manejo de tramas

Stored Procedure with Text type parameters for handling plots - Procedimiento Almacenado con parametros tipo Text para manejo de tramas

Hi again perhaps someone have been crossed with the case you need to insert large plots of data in a database and may also specify the number of database (unclear whether you are in a distributed application, this post is an example stored procedure , I hope will be useful to the next.
-----------------------------------------------------------------
Hola de nuevo quizas algunos se hayan cruzado con el caso que necesitan insertar grandes tramas de datos en una base de datos y especificar quizas tambien el numero de base de datos(claro si estamos en una aplicacion distribuida, bueno aca les posteo un procedimiento almacenado de ejemplo, espero les sea de utilidad hasta la proxima.



create proc uspInsertPlotsInDatabase
@CodId varchar(12),
@Plot1 text,
@Plot2 text,
@Plot3 text,
@Plot4 text,
@Plot5 text,
@Plot6 text,
@Plot7 text,
@dDate datetime,
@CodUser varchar(4),
@Plot8 text,
@Plot9 text,
@database varchar(50),
@NroDB varchar(4)
as
set nocount on
if len(@database)>0
exec( 'insert into '+@database+''+@NroDB+'..Plots(cCodId,cPlot1,cPlot2,cPlot3,cPlot4,cPlot5,cPlot6,cPlot7,dDate,cCodUser,cPlot8,cPlot9)'
+ ' values (' + @CodId + ',' + @Plot1 + ',' + @Plot2 + ',' + @Plot3 + ' '
+ ' ,' + @Plot4 + ',' + @Plot5 + ',' + @Plot6 + ','
+ ' '+ @Plot7 + ',' + @dDate + ',' + @CodUser + ',' + @Plot8 + ',' + @Plot9 + ')')
else
exec( 'insert into Plots(cCodId,cPlot1,cPlot2,cPlot3,cPlot4,cPlot5,cPlot6,cPlot7,dDate,cCodUser,cPlot8,cPlot9)'
+ ' values (' + @CodId + ',' + @Plot1 + ',' + @Plot2 + ',' + @Plot3 + ' '
+ ' ,' + @Plot4 + ',' + @Plot5 + ',' + @Plot6 + ','
+ ' '+ @Plot7 + ',' + @dDate + ',' + @CodUser + ',' + @Plot8 + ',' + @Plot9 + ')')

-----------------------------------------------------------------

create proc uspInsertaTramasenBaseDatos
@CodId varchar(12),
@Trama1 text,
@Trama2 text,
@Trama3 text,
@Trama4 text,
@Trama5 text,
@Trama6 text,
@Trama7 text,
@dFecha datetime,
@CodUser varchar(4),
@Trama8 text,
@Trama9 text,
@BaseDatos varchar(50),
@NroBD varchar(4)
as
set nocount on
if len(@BaseDatos)>0
exec( 'insert into '+@BaseDatos+''+@NroBD+'..Tramas(CodId,Trama1,Trama2,Trama3,Trama4,Trama5,Trama6,Trama7,dfecha,cCodUsuer,Trama8,Trama9)'
+ ' values (' + @CodId + ',' + @Trama1 + ',' + @Trama2 + ',' + @Trama3 + ' '
+ ' ,' + @Trama4 + ',' + @Trama5 + ',' + @Trama6 + ','
+ ' '+ @Trama7 + ',' + @dFecha + ',' + @CodUser + ',' + @Trama8 + ',' + @Trama9 + ')')
else
exec( 'insert into Tramas(CodId,Trama1,Trama2,Trama3,Trama4,Trama5,Trama6,Trama7,dfecha,cCodUsuer,Trama8,Trama9)'
+ ' values (' + @CodId + ',' + @Trama1 + ',' + @Trama2 + ',' + @Trama3 + ' '
+ ' ,' + @Trama4 + ',' + @Trama5 + ',' + @Trama6 + ','
+ ' '+ @Trama7 + ',' + @dFecha + ',' + @CodUser + ',' + @Trama8 + ',' + @Trama9 + ')')

jueves, 12 de junio de 2008

Custom Stored Procedure Complete II - Procedimiento Almacenado Personalizado Completo II

Hello, my last post about a custom stored procedure was limited when we want to work with INNER JOIN, so this is more comprehensive because it contains a parameter called tablesInner which I used to receive all INNER JOIN we want to add to the query. Any question leave me a comment.
--------------------------------------------------------------------------------------------
Hola, mi último post acerca de un procedimiento almacenado personalizado se limitaba cuando queremos trabajar con INNER JOIN, por lo que este es más completo porque contiene un parámetro llamado tablesInner que he usado para recibir todos los INNER JOIN que queremos añadir a la consulta. Cualquier pregunta me dejan un comentario.


--Custom Stored Procedure II - Contains a parameter called tablesInner
--which I used to receive all INNER JOIN we want to add to the query
create proc uspExecuteMultiSentences
@fields varchar(500),
@database varchar(80),
@table varchar(50),
@filters varchar(500),
@Nrodatabase varchar(4)='',
@tablesInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablesInner) = 0
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '' + @Nrodatabase + '..' + @table + ' WHERE ' + @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '..' + @table + ' WHERE ' + @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' WHERE ' + @filters + ''
end
Else
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + ''+ @Nrodatabase + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
end
exec(@sSQL)

--Executing Custom Stored Procedure
exec uspExecuteMultiSentences 'C.cCodCus,C.cNamPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetailCustomer DC ', ' DC.cTypeDetCus = ''FR'' and DC.cCodDetCus = ''0123456789''', '', ' INNER JOIN dbCustomer..Customer C ON DC.cCodCus = C.cCodCus '
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

--Procedimiento Almacenado Personalizado II - El cual contiene
--un parametro llamado tablasInner que utilizo para recibir todos los INNER JOIN

--para la consulta
create proc uspEjecutaMultiSentencia
@campos varchar(500),
@basedatos varchar(80),
@tabla varchar(50),
@filtros varchar(500),
@Nrobasedatos varchar(4)='',
@tablasInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablasInner) = 0
begin
If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '' + @Nrobasedatos+ '..' + @tabla + ' WHERE ' + @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '..' + @tabla + ' WHERE ' + @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' WHERE ' + @filtros + ''
end
Else
begin

If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + ''+ @Nrobasedatos+ '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
end
exec(@sSQL)
--Ejecutando Procedimiento Almacenado
exec uspEjecutaMultiSentencia 'C.cCodPer,C.cNomPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetalleCliente DC ', ' DC.cTipoDetalle = ''FR'' and DP.cCodDet = ''0123456789''', '', ' INNER JOIN dbCliente..Cliente C ON DC.cCodPer = C.cCodPer '

See you.Happy Coding – Nos vemos. Feliz programacion

martes, 10 de junio de 2008

Custom Stored Procedure which parameters are fields_name, schema_name, database_name,table _name and filters – Procedimiento Almacenado Personalizado

Custom Stored Procedure which parameters are fields_name, schema_name, database_name,table _name and filters – Procedimiento Almacenado Personalizado cuyos parámetros que recibe son los Campos, esquema, base de datos, tabla y filtros

Example – Ejemplo : Let’s go to see the example – Veamos el ejemplo
As Fields = 'cCodCta,cEstadoCta,dAperturaCta',
Como Campos = 'cCodCta,cEstadoCta,dAperturaCta',
---------------------------------------------------------------------
As Schema = 'Pruebas',
Como Esquema = 'Pruebas',
---------------------------------------------------------------------
As Database = 'DBPrueba',
Como Base de Datos = 'DBPrueba',
---------------------------------------------------------------------
As Database_number = '01',
Como Numero de base de datos = '01'
As Table_name = 'Cta', --As Bill
Como Tabla= 'Cta', --Cuenta
---------------------------------------------------------------------
As filters = ' cCodCta ='''+ rtrim(@CodCta) +'''',
Como Filtros = ' cCodCta ='''+ rtrim(@CodCta) +'''',
Or
As filters = ' cCodCta =123456789', --Specific filters
Como Filtros = ' cCodCta =123456789', --Filtros especificos
--Stored Procedure in English
create proc uspGetDataCta
@Fields varchar(200),
@Schema varchar(40),
@Database varchar(40),
@NroDatabase varchar(4)
@Table varchar(40),
@Filters varchar(100)
as
set nocount on
DECLARE @Sentence varchar(1000)
set @ Sentence ='Select '+ @Fields +' from '+ @Schema +'.'+ @Database +''+ @NroDatabase +'..'+ @Table +' where @Filters
exec(@Sentence)
go
--Executing Stored Procedure
exec uspGetDataCta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta =123456789'
or
exec uspGetDataCta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta ='''+ rtrim(@CodCta) +''''

---------------------------------------------------------------------
--Procedimiento Almacenado en Castellano
create proc uspListarDatosCuenta
@Campos varchar(200),
@Esquema varchar(40),
@Basedatos varchar(40),
@NroBaseDatos varchar(4)
@Tabla varchar(40),
@Filtros varchar(100)
as
set nocount on
DECLARE @SentenciaSQL varchar(1000)
set @SentenciaSQL ='Select '+ @Campos +' from '+ @Esquema +'.'+ @BaseDatos +''+ @NroBaseDatos +'..'+ @Tabla +' where @Filtros
exec(@SentenciaSQL)
go
--Ejecutando Procedimiento Almacenado
exec uspListarDatosCuenta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta =123456789'
or
exec uspListarDatosCuenta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta ='''+ rtrim(@CodCta) +''''

See you.Happy Coding – Nos vemos. Feliz programacion