Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Errores de función de aplicación de SQL con agrupación de recursos de OLE DB

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 229564
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Al habilitar una función de aplicación de SQL Server en una conexión de ActiveX Data Objects (ADO) a SQL Server, puede recibir el siguiente mensaje de error cuando se conecta a SQL Server 7.0:
No se invocó correctamente sp_setapprole. Consulte la documentación para obtener más información.
Cuando se conecta a SQL Server 2000, el error puede aparecer como sigue:
[DBNETLIB][ConnectionRead (WrapperRead()).]Error general de red. Compruebe su documentación de red
Este error se produce cuando se llama sp_setapprole en una conexión ADO que se ha asignado desde el fondo de recursos OLE DB. Este error se produce con el proveedor SQLOLEDB o ODBC de SQL Server controlador.

La limitación descrita en este artículo también existe en SQL Server .NET proveedor de datos y en .NET de OLE DB proveedor de datos cuando se utiliza con el proveedor OLE DB de SQLOLEDB. Cuando se intenta establecer una función de aplicación en una conexión que se extrae de la agrupación de conexiones, recibirá el siguiente mensaje de error:
Error general de red
Causa
En el diseño actual después de habilitar una función de aplicación en una conexión de cliente a SQL Server, no se puede restablecer el contexto de seguridad de esa conexión. Por lo tanto, cuando el usuario finaliza la sesión de SQL Server y se desconecta del servidor, la sesión no es reutilizable. Sin embargo, OLE DB agrupación de recursos devuelve la conexión cerrada al grupo y se produce el error al reutiliza esa conexión y la aplicación cliente intenta restablecer nuevo contexto de seguridad de conexión llamada sp_setapprole.
Solución
La solución sólo está disponible consiste en Deshabilitar recursos OLE DB agrupación, que ADO utiliza de forma predeterminada. Puede hacerlo agregando "OLE DB Services = -2" en la cadena Connection de ADO, tal como se muestra aquí:
'For SQLOLEDB provider 'strConnect = "Provider=SQLOLEDB;server=SQL7Web;OLE DB Services = -2;uid=AppUser;pwd=AppUser;initial catalog=northwind"' For MSDASQL provider 'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; OLE DB Services= -2"				

Agrupación puede deshabilitarse para .NET de SQL Server datos proveedor agregando "Pooling = false" a la cadena de conexión.
Más información
El código siguiente reproduce el error:
Private Sub Command2_Click() Dim adoCn1 As ADODB.Connection Dim adoCn2 As ADODB.Connection Set adoCn1 = GetConnection  Set adoCn2 = GetConnection Set adoCn2 = Nothing Set adoCn2 = GetConnection Set adoCn2 = Nothing Set adoCn2 = GetConnection  'Gives errors for both SQLOLEDB and ODBC Set adoCn2 = NothingEnd SubPrivate Function GetConnection() As ADODB.Connection Dim cn As ADODB.Connection Dim sSQL As String Dim strConnect As String Set cn = New ADODB.Connection 'For OLE DB provider strConnect = "Provider=SQLOLEDB;server=myServer;uid=AppUser;pwd=AppUser;initial catalog=northwind"'Turn off Pooling ( all other services are enabled )'strConnect = "Provider=SQLOLEDB;server=myServer;OLE DB Services= -2;uid=AppUser;pwd=AppUser;initial catalog=northwind"  'For ODBC driver 'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; "'Turn off Pooling'strConnect = "DSN=SQLNWind;UID=Test;PWD=Test; OLE DB Services= -2"cn.ConnectionString = strConnectcn.Open  sSQL = "sp_setapprole 'order_entry', 'password'" cn.Execute sSQL Set GetConnection = cnEnd Function				

REFERENCIAS

Libros en pantalla de SQL; tema: "Seguridad de aplicaciones y funciones de aplicación"

Para obtener más información sobre cómo deshabilitar servicios OLE DB, consulte el artículo técnico "Agrupación en el Microsoft Data Access Components", disponible en MSDN Online: Para obtener más información acerca de cómo desactivar servicios de OLE DB, vea el archivo Readme.txt de OLE DB.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 229564 - Última revisión: 12/05/2015 14:13:36 - Revisión: 4.3

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft Data Access Components 2.0, Microsoft Data Access Components 2.1, Microsoft Data Access Components 2.5, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.7, Microsoft Data Access Components 2.8

  • kbnosurvey kbarchive kbmt kbfaq kbpending kbprb KB229564 KbMtes
Comentarios