FIX: Diverse problemen optreden wanneer u een gekoppelde server gebruiken die is gemaakt door de provider SQL Native Client in SQL Server 2008

Sjabloon: Algemene Hotfix

BUG #: 127399 (Contentbeheer)BUG #: 401247 (VSTS SQL)

Microsoft distribueert oplossingen voor Microsoft SQL Server 2008 als één downloadbaar bestand. Aangezien de oplossingen cumulatief zijn, bevat elke nieuwe release alle hotfixes en alle beveiligingscorrecties die waren opgenomen in de voorgaande SQL Server 2008 releases.

Symptomen

Op een computer waarop Microsoft SQL Server 2008 wordt uitgevoerd, ondervindt u een of meer van de volgende problemen wanneer u een gekoppelde server maakt met behulp van het SQL Native Client-voorziening (Sqlncli.dll).

Opmerking Deze problemen ook optreden in Microsoft SQL Server 2005 Service Pack 3 (SP3). De hotfix die in dit artikel geldt echter niet voor SQL Server 2005 SP3.

Probleem 1

Overweeg het volgende scenario:

  • In SQL Server Management Studio, opent u het venster nieuwe gekoppelde Server en een gekoppelde server maken met behulp van een van de volgende instellingen:

    • SQL Native Client-provider met het type Server als SQL Server

    • De provider SQL Native Client (niet SQL Native Client 10) met het type Server als gegevensbron voor andere

    • Microsoft OLE DB Provider for SQL Server met servertype als de andere gegevensbron

  • U uitbreiden de catalogus voor Gekoppelde Servers in SQL Server Management Studio voor een overzicht van de gekoppelde servers.

In dit scenario wordt de SQL Server-service onverwacht wordt afgesloten of een mini-bestand meerdere keren in de map voor logboekbestanden van SQL Server-fout wordt gegenereerd. Dit probleem wordt voortgezet totdat de SQL Server-service is gestopt. Bovendien, meldt SQL Server Management Studio de volgende fout:

TITEL: Microsoft SQL Server Management Studio
------------------------------
Ophalen van gegevens voor deze aanvraag is mislukt. (Microsoft.SqlServer.Management.Sdk.Sfc)

Help, klikt u op: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
MEER INFORMATIE:
Er is een uitzondering opgetreden tijdens het uitvoeren van een Transact-SQL-instructie of een batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------

Time-out is verlopen. De time-outperiode is verstreken voordat de bewerking is voltooid of de server reageert niet. (Microsoft SQL Server, fout: -2)



Opmerking Dit probleem treedt niet op als u een gekoppelde serverquery uitvoeren wanneer u SQL Native Client-voorziening met type Server als SQL Server.

Probleem 2

Overweeg het volgende scenario:

  • U kunt een gekoppelde server maken met behulp van de Microsoft OLE DB-Provider voor ODBC-stuurprogramma's.

  • De ODBC-gegevensbron wordt gemaakt door SQL Native Client-voorziening als andere gegevensbronmet type Server .

In dit scenario wordt oplevert de gekoppelde server geen resultaten.

Oplossing

De correctie voor dit probleem werd voor het eerst uitgebracht in de cumulatieve Update 7 voor SQL Server 2008 Service Pack 1. Voor meer informatie over dit cumulatieve updatepakket klikt u op het volgende artikel in de Microsoft Knowledge Base:-

979065 Cumulatieve updatepakket 7 voor SQL Server 2008 Service Pack 1
Opmerking Omdat de opbouw cumulatief van opzet zijn, elke nieuwe versie van de correctie bevat alle hotfixes en de beveiligingscorrecties die opgenomen in de vorige versie van SQL Server 2008 zijn release opgelost. We raden het toepassen van de meest recente hotfix-versie waarin deze hotfix is opgenomen. Voor meer informatie klikt u op het volgende artikel in de Microsoft Knowledge Base:-

970365 De SQL Server 2008 builds die zijn uitgebracht nadat Service Pack 1 voor SQL Server 2008 was uitgebracht
Hotfixes voor Microsoft SQL Server 2008 worden voor een specifieke servicepacks voor SQL Server gemaakt. U moet een hotfix voor SQL Server 2008 Service Pack 1 toepassen op een installatie van SQL Server 2008 Service Pack 1. Voor elke hotfix die wordt geleverd in een servicepack van SQL Server is standaard opgenomen in het volgende servicepack voor SQL Server.

Meer informatie

U kunt de versie van de bestanden Sqlncli.dll en Sqlservr.exe controleren door de volgende query uitvoeren:

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

Als u Microsoft SQL Server 2008 Service Pack 1 (SP1) of hogere versies van Microsoft SQL Server 2008 gebruikt, retourneert de query de volgende versie-informatie:

  • Het bestand Sqlncli.dll hebt een versie hoger dan 9.0:3207.0.

  • Het bestand Sqlservr.exe heeft een versie hoger dan of gelijk is aan 10.0:2531.0, maar eerder dan 10.0:2766.0.

Als u Microsoft SQL Server 2008 RTM of hogere versies van SQL Server 2008 RTM, retourneert de query de volgende versie-informatie:

  • Het bestand Sqlncli.dll hebt een versie nieuwer is dan versie 9.0:3207.0.

  • Het bestand Sqlservr.exe heeft een versie hoger dan of gelijk is aan 10.0:1600.0, maar eerder dan 10.0:1835.0.

U kunt het volgende script om te detecteren of een gekoppelde server tegen zal komen van de problemen die worden beschreven in de sectie 'Symptomen' kunt uitvoeren:

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

Oproep twee stacksfrom SQL Server 2008 SP1 (build 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

Tijdelijke oplossing

U kunt deze problemen omzeilen, als volgt te werk:

Workaround 1:

1. Verwijder de beschadigde gekoppelde server.

2. Maak een nieuwe gekoppelde server de provider SQL Server Native Client 10.0 (SQLNCLI10). Om dit te doen:
a. Klik met de rechtermuisknop op de Gekoppelde Servers en selecteer Nieuwe gekoppelde Server.
b. andere gegevensbron selecteren en kiest u SQL Server Native Client 10.0 voor de Provider.

Workaround 2:

  1. Maak een subsleutel met de naam 'SQLNCLI' in het volgende pad:

    HKLM\Software\Microsoft\DataAccess

  2. Een type REG_DWORD registervermelding met de naam 'SQLOSPartitioning' onder deze subsleutel maken.

  3. Stel de waarde van deze vermelding op 0x0.

Status

Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Meer informatie

Regel software

Titel van de regel

Beschrijving van de regel

Versies van het product waarop de regel wordt geëvalueerd.

System Center-adviseur

SQL Server KB979779 update ontbreekt om te voorkomen dat de SQL native client geheugenbeschadiging

Een SQL Native Client-provider voor SQL Server 2005 is aanwezig in deze server. Deze oudere versie van SQLNCLI.dll kan mogelijk worden geladen in SQL Server 2008 en SQL Server 2008 R2 als providers opsommen en het maken van servers gekoppelde. Specifieke versies van SQL Server 2008 en SQL Server 2008 R2 kunnen problemen optreden en loopt vast wanneer u een gekoppelde server gemaakt met dit maken of SQLNCLI.dll beïnvloed. De kwetsbare exemplaren van SQL Server 2008 en SQL Server 2008 R2 bijwerken met de vereiste correcties of Vermijd het gebruik van deze SQLNCLI.dll bij het maken van gekoppelde servers.

SQL Server 2008

SQL Server 2008 R2



Referenties

Voor meer informatie over de incrementele Servicing-Model voor SQL Server, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:

935897 een incrementele Servicing-Model is beschikbaar in de SQL Server-team voor het leveren van hotfixes voor gemelde problemen



Voor meer informatie over het naamgevingsschema voor SQL Server-updates klikt u op het volgende artikel in de Microsoft Knowledge Base:

822499 Nieuw naamgevingsschema voor software-updatepakketten voor Microsoft SQL Server

Voor meer informatie over terminologie voor software-updates klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

824684 beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven

Zoekwoorden

SQLNCLI ex_terminator

Auteur: bruceye
Writer:v-xinbi
Tech Reviewer: mikez; jhalmans; cshao; madhana; bruceye
Editor:v-sbrenn

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de vertaalkwaliteit?

Wat heeft uw ervaring beïnvloed?

Hebt u aanvullende feedback? (Optioneel)

Bedankt voor uw feedback.

×