Plantilla: Revisión genérica

Nº de error: 127399 (Mantenimiento de contenido)BUG #: 401247 (VSTS de SQL)

Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008.

Síntomas

En un equipo que ejecuta Microsoft SQL Server 2008, experimenta uno o varios de los siguientes problemas al crear un servidor vinculado mediante el proveedor de SQL Native Client (Sqlncli.dll).

Nota: Estos problemas también ocurren en Microsoft SQL Server 2005 Service Pack 3 (SP3). Sin embargo, la revisión de este artículo no se aplica a SQL Server 2005 SP3.

Problema 1

Imagine el siguiente escenario:

  • En SQL Server Management Studio, abra la ventana nuevo servidor vinculado y crear un servidor vinculado mediante una de las siguientes configuraciones:

    • Proveedor de SQL Native Client con el tipo de servidor como SQL Server

    • Proveedor de SQL Native Client (no SQL Native cliente 10) con el tipo de servidor como otro origen de datos

    • Proveedor Microsoft OLE DB para SQL Server con el tipo de servidor como otro origen de datos

  • Expanda el catálogo de Servidores vinculados en SQL Server Management Studio para ver los servidores vinculados.

En este escenario, el servicio de SQL Server se cierra inesperadamente o se genera un archivo de minivolcado de varias veces en la carpeta de registro de Error de SQL Server. Este problema continúa hasta que se detiene el servicio SQL Server. Además, SQL Server Management Studio informa del siguiente error:

TÍTULO: Microsoft SQL Server Management Studio
------------------------------
Error al recuperar datos para esta solicitud. (Microsoft.SqlServer.Management.Sdk.Sfc)

Para obtener ayuda, haga clic en: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
INFORMACIÓN ADICIONAL:
Se produjo una excepción al ejecutar una instrucción de Transact-SQL o el lote. (Microsoft.SqlServer.ConnectionInfo)
------------------------------

Tiempo de espera caducado. El tiempo de espera caducó antes de completar la operación o el servidor no responde. (Microsoft SQL Server, Error: -2)



Nota: Este problema no ocurre si se ejecuta una consulta de servidor vinculado cuando utiliza el proveedor SQL Native Client con el tipo de servidor como SQL Server.

Problema 2

Imagine el siguiente escenario:

  • Crear un servidor vinculado utilizando el proveedor de Microsoft OLE DB para controladores ODBC.

  • Se crea el origen de datos ODBC utilizando el proveedor de SQL Native Client con el tipo de servidor como otro origen de datos.

En este escenario, el servidor vinculado devuelve ningún resultado.

Solución

La corrección para este problema se publicó primero en la actualización acumulativa 7 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:-

979065 Paquete de actualización acumulativa 7 para SQL Server 2008 Service Pack 3
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:-

970365 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2008 Service Pack 1 en una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

Más información

Ejecución de consulta siguiente para confirmar la versión de los archivos Sqlncli.dll y Sqlservr.exe:

select * from sys.dm_os_loaded_modules where name like '%sqlncli.dll' or name like '%sqlservr.exe'

Si está utilizando Microsoft SQL Server 2008 Service Pack 1 (SP1) o versiones posteriores de Microsoft SQL Server 2008, la consulta devolverá la siguiente información de versión:

  • El archivo Sqlncli.dll tendrá una versión posterior a 9.0:3207.0.

  • El archivo Sqlservr.exe tendrá una versión posterior o igual a 10.0:2531.0, pero anteriormente que 10.0:2766.0.

Si está utilizando Microsoft SQL Server 2008 RTM o versiones posteriores de SQL Server 2008 RTM, la consulta devolverá la siguiente información de versión:

  • El archivo Sqlncli.dll tendrá una versión posterior a la 9.0:3207.0.

  • El archivo Sqlservr.exe tendrá una versión posterior o igual a 10.0:1600.0, pero anteriormente que 10.0:1835.0.

Puede ejecutar la siguiente secuencia de comandos para detectar si un servidor vinculado encontrará los problemas que se describen en la sección "Síntomas":

declare @ServerName sysnamedeclare @ProductName sysname
declare @ProviderName sysname
declare crs cursor local fast_forward
for ( SELECT srv.name AS [Name], srv.product AS[ProductName], srv.provider AS [ProviderName]
FROM sys.servers AS srv
WHERE (srv.server_id != 0)and(srv.name='<Server Name>') )
open crs
fetch crs into @ServerName,@ProductName,@ProviderName
while @@fetch_status >= 0
begin
create table #tmp_catalog_exist_test (id int null,[description]sysname null,flags varchar null)
insert into #tmp_catalog_exist_test(id,[description],flags)
EXEC master.dbo.xp_prop_oledb_provider @ProviderName
fetch crs into @ServerName,@ProductName,@ProviderName
end
deallocate crs
go

Stacksfrom dos llamada SQL Server 2008 SP1 (compilación 10.0.2531.0):ChildEBP RetAddr 4603aeac 02c79496 kernel32!RaiseException+0x53
4603aef8 02703706 sqlservr!CDmpDump::Dump+0x95
4603af34 02703e6d sqlservr!SQLDumperLibraryInvoke+0x169
4603b028 026f9cf0 sqlservr!CImageHelper::DoMiniDump+0x2b0
4603bddc 026f95f5 sqlservr!stackTrace+0x693
4603bdfc 02a0e2e4 sqlservr!stackTraceCallBack+0x40
4603c08c 78158c0e sqlservr!ex_terminator+0x85
4603c0d8 78158576 msvcr80!_CallSETranslator+0xa3
4603c10c 7815894b msvcr80!FindHandlerForForeignException+0x58
4603c16c 78158a57 msvcr80!FindHandler+0x33b
4603c1a0 78158b11 msvcr80!__InternalCxxFrameHandler+0xd9
4603c1dc 7c828772 msvcr80!__CxxFrameHandler3+0x26
4603c200 7c828743 ntdll!ExecuteHandler2+0x26
4603c2a8 7c82857e ntdll!ExecuteHandler+0x24
4603c2a8 0154c80b ntdll!KiUserExceptionDispatcher+0xe
4603c5ac 015bf8c5 sqlservr!CVariableInfo::PbGetBlock+0x53
4603c5d4 015bf962 sqlservr!CVarPageMgr::PbAllocate+0x14c
4603c5ec 015bfd85 sqlservr!CMemObj::Alloc+0x2f
4603c61c 01537c2b sqlservr!CMemThread<CMemObj>::Alloc+0x5e
4603c638 015bef96 sqlservr!CMemPartitioned<CMemThread<CMemObj> >::Alloc+0x64
4603c658 0159bed5 sqlservr!operator new+0x21
4603c678 014ab62f sqlservr!operator new[]+0x54
4603c6a0 011ad344 sqlservr!SEColumnMetadataCache::InitRowsetAndHoBtColumnIdMaps+0x100
4603c7c0 011ae6da sqlservr!SEColumnMetadataCache::PopulateSEColumnAttributesFromMetadata+0x1fc
4603c828 011ae2e6 sqlservr!VisibleHoBt::PopulateHoBtColumnAttributesFromMetadata+0x130
4603c92c 011adcce sqlservr!VisibleHoBt::RefreshFromMetadataManager+0x32a
4603c998 011adeba sqlservr!VisibleHoBt::Refresh+0x9d
4603c9d0 011adfbe sqlservr!BaseSharedHoBt::Init+0x61
4603cb20 0159e687 sqlservr!HoBtFactory::GetHoBtAccess+0x28b
4603cb3c 0109c0a9 sqlservr!HoBtAccess::Init+0x55
4603cdf8 01513dc9 sqlservr!HoBtFactory::CreateHoBt+0x52f
4603e594 0109bdf7 sqlservr!SECreateRowset+0x6d4
4603e6b0 010984aa sqlservr!DDLAgent::SECreateRowsets+0x5ef
4603e838 01c27bb5 sqlservr!CIndexDDL::CreateRowsets+0x826
4603e854 016055c4 sqlservr!CIndexDDL::CreateEmptyHeap+0xb0
4603ea78 01096408 sqlservr!CTableCreate::CreateRelation+0x648
4603ed80 01c9fb74 sqlservr!CTableCreate::LCreateImpl+0xaf9
4603ee78 01e5198e sqlservr!CStmtCreateTable::XretCreateTableExecute+0x1b2
4603ee94 01572ddf sqlservr!CXStmtCreateTableDDL::XretExecute+0x3e
4603ef38 0156bf19 sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+0x2f1
4603f014 0156b0c1 sqlservr!CMsqlExecContext::FExecute+0x71a
4603f0d0 01fa1d2f sqlservr!CSQLSource::Execute+0x6d2
4603f890 01fa64ed sqlservr!ExecuteSql+0x7de
4603f940 01fa69a5 sqlservr!CSpecProc::ExecuteSpecial+0xd3
4603fa34 0156b8c2 sqlservr!CSpecProc::Execute+0x245
4603fbc4 0156b4d5 sqlservr!process_request+0x301
4603fd14 015be5a5 sqlservr!process_commands+0x2f3
4603fd84 015be6d6 sqlservr!SOS_Task::Param::Execute+0x117
4603fdc4 015be38f sqlservr!SOS_Scheduler::RunTask+0xbc
4603fe00 0112f47d sqlservr!SOS_Scheduler::ProcessTasks+0x12f
4603fe80 0112e2fa sqlservr!SchedulerManager::WorkerEntryPoint+0x243
4603fe98 015943b9 sqlservr!SystemThread::RunWorker+0x7d
4603ff04 0112e8e8 sqlservr!SystemThreadDispatcher::ProcessWorker+0x2bd
4603ff78 781329bb sqlservr!SchedulerManager::ThreadEntryPoint+0x142
4603ffb0 78132a47 msvcr80!_callthreadstartex+0x1b
4603ffb8 77e6482f msvcr80!_threadstartex+0x66
4603ffec 00000000 kernel32!BaseThreadStart+0x34



ChildEBP RetAddr
45b8e3a4 02c79496 kernel32!RaiseException+0x53
45b8e3f0 02703706 sqlservr!CDmpDump::Dump+0x95
45b8e42c 02703e6d sqlservr!SQLDumperLibraryInvoke+0x169
45b8e520 026f9cf0 sqlservr!CImageHelper::DoMiniDump+0x2b0
45b8f2d4 026f95f5 sqlservr!stackTrace+0x693
45b8f2f4 02a0e2e4 sqlservr!stackTraceCallBack+0x40
45b8f584 78158c0e sqlservr!ex_terminator+0x85
45b8f5d0 78158576 msvcr80!_CallSETranslator+0xa3
45b8f604 7815894b msvcr80!FindHandlerForForeignException+0x58
45b8f664 78158a57 msvcr80!FindHandler+0x33b
45b8f698 78158b11 msvcr80!__InternalCxxFrameHandler+0xd9
45b8f6d4 7c828772 msvcr80!__CxxFrameHandler3+0x26
45b8f6f8 7c828743 ntdll!ExecuteHandler2+0x26
45b8f7a0 7c82857e ntdll!ExecuteHandler+0x24
45b8f7a0 0154c80b ntdll!KiUserExceptionDispatcher+0xe
45b8faa4 015bf8c5 sqlservr!CVariableInfo::PbGetBlock+0x53
45b8facc 015bf962 sqlservr!CVarPageMgr::PbAllocate+0x14c
45b8fae4 015bfd85 sqlservr!CMemObj::Alloc+0x2f
45b8fb14 012658f8 sqlservr!CMemThread<CMemObj>::Alloc+0x5e
45b8fb4c 01265991 sqlservr!SNIPacketNew+0x81
45b8fb80 012d7941 sqlservr!SNIPacketAllocateEx2+0x1be
45b8fba0 012dbc5c sqlservr!TDSSNIClient::NewPacket+0x55
45b8fbcc 012dbea5 sqlservr!CNetConnection::FInit+0x132
45b8fbf8 012dc150 sqlservr!CPhysicalConnection::PNetConnCreateDefault+0xe4
45b8fd14 015be5a5 sqlservr!TDSSNIClient::ProcessCommon+0x2e8
45b8fd84 015be6d6 sqlservr!SOS_Task::Param::Execute+0x117
45b8fdc4 015be38f sqlservr!SOS_Scheduler::RunTask+0xbc
45b8fe00 0112f47d sqlservr!SOS_Scheduler::ProcessTasks+0x12f
45b8fe80 0112e2fa sqlservr!SchedulerManager::WorkerEntryPoint+0x243
45b8fe98 015943b9 sqlservr!SystemThread::RunWorker+0x7d
45b8ff04 0112e8e8 sqlservr!SystemThreadDispatcher::ProcessWorker+0x2bd
45b8ff78 781329bb sqlservr!SchedulerManager::ThreadEntryPoint+0x142
45b8ffb0 78132a47 msvcr80!_callthreadstartex+0x1b
45b8ffb8 77e6482f msvcr80!_threadstartex+0x66
45b8ffec 00000000 kernel32!BaseThreadStart+0x34

Solución alternativa

Para evitar estos problemas, siga estos pasos:

Workaround 1:

1. Elimine el servidor vinculado con errores.

2. Cree un nuevo servidor vinculado mediante el proveedor de SQL Server nativo cliente 10.0 (SQLNCLI10). Para hacer esto:
r. Haga clic en Servidores vinculados y seleccione Nuevo servidor vinculado.
b. Seleccione otro origen de datos y elija 10.0 de cliente nativo de SQL Server para el proveedor.

Workaround 2:

  1. Cree una subclave denominada "SQLNCLI" en la siguiente ruta:

    HKLM\Software\Microsoft\DataAccess

  2. Crear una entrada de registro del tipo REG_DWORD denominada "SQLOSPartitioning" en esta subclave.

  3. Establezca el valor de esta entrada en 0 x 0.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

Software de regla

Título de la regla

Descripción de la regla

Versiones del producto con el que se evalúa la regla

Asesor de System Center

SQL Server Falta actualización KB979779 para evitar la corrupción de memoria de cliente nativo de SQL

Un proveedor de SQL Native Client que corresponde a SQL Server 2005 está presente en este servidor. Esta versión más antigua de SQLNCLI.dll podría cargarse potencialmente en SQL Server 2008 y SQL Server 2008 R2 al enumerar los proveedores y la creación de servidores vinculan. Compilaciones específicas de SQL Server 2008 y SQL Server 2008 R2 pueden experimentar problemas y se bloquea al crear o utilizar un servidor vinculado que se crea con este afectado SQLNCLI.dll. Actualizar las instancias de SQL Server 2008 y SQL Server 2008 R2 afectadas con las revisiones requeridas o evitar el uso de este SQLNCLI.dll al crear servidores vinculados.

SQL Server 2008

SQL Server 2008 R2



Referencias

Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

935897 un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados



Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

822499 Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL Server

Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft

Palabras de consulta

SQLNCLI ex_terminator

Autor: bruceye
Writer:v-xinbi
Técnico revisor: Gil; jhalmans; cshao; madhana; bruceye
Editor:v-sbrenn

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¿Cómo de satisfecho está con la calidad de la traducción?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×