Исправление: При использовании связанного сервера, созданное поставщик собственного клиента SQL в SQL Server 2008 возникает несколько проблем

Шаблон: Исправление универсальный

Номер ошибки: 127399 (Content Maintenance)ошибка #: 401247 (SQL VSTS)

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 как один загружаемый файл. Так как исправления являются накопительными, каждый выпуск содержит все исправления и все исправления безопасности, которые были включены в предыдущие 2008 SQL Server исправления выпуска.

На компьютере, на котором выполняется Microsoft SQL Server 2008 возникают одно или несколько из следующих проблем при создании связанного сервера с помощью поставщика собственного клиента SQL (Sqlncli.dll).

Примечание. Эти проблемы также возникают в Пакет обновления 3 (SP3) для Microsoft SQL Server 2005. Однако исправление, описанное в данной статье неприменимы к SQL Server 2005 с пакетом обновления 3.

Рассмотрим следующий сценарий:

  • В среде SQL Server Management Studio откройте окно новый связанный сервер и создать связанный сервер, используя один из следующих вариантов настройки:

    • Поставщик собственного клиента SQL с Тип сервераSQL Server

    • Поставщик собственного клиента SQL (не SQL собственного клиента 10) Тип сервера , что другие источники данных

    • Поставщик Microsoft OLE DB для SQL Server Тип сервера , что другие источники данных

  • Разверните каталог Связанных серверов в среде SQL Server Management Studio для просмотра связанных серверов.

В этом случае неожиданного завершения работы службы SQL Server или мини-дамп повторно создается в папке журнала ошибок SQL Server. Такая ситуация будет повторяться до остановки службы SQL Server. Кроме того среда SQL Server Management Studio выводит следующее сообщение об ошибке:

Название: Microsoft SQL Server Management Studio
------------------------------
Не удается получить данные для этого запроса. (Microsoft.SqlServer.Management.Sdk.Sfc)

Для получения справки, щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:
Возникло исключение во время выполнения инструкции Transact-SQL или пакета. (Microsoft.SqlServer.ConnectionInfo)
------------------------------

Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает. (Microsoft SQL Server, ошибка: -2)



Примечание. Эта проблема не возникает при выполнении запроса к связанному серверу при использовании поставщика собственного клиента SQL в SQL ServerТип сервера .

Рассмотрим следующий сценарий:

  • Создание связанного сервера с помощью поставщика Microsoft OLE DB для драйверов ODBC.

  • Источник данных ODBC создается с помощью поставщик собственного клиента SQL Server типа в другом источнике данных.

В этом случае связанный сервер не возвращает результатов.

Исправление этой уязвимости первого выпуска накопительного обновления 7 для SQL Server 2008 Пакет обновления 1. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:-

979065 Накопительный пакет обновления 7 для SQL Server 2008 Пакет обновления 1
Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:-

970365 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008 Пакет обновления 1
Исправления Microsoft SQL Server 2008 создаются для определенных пакетов обновления SQL Server. Необходимо установить исправление SQL Server 2008 Пакет обновления 1 для установки SQL Server 2008 Пакет обновления 1. По умолчанию какие-либо исправления, включенный в пакет обновления SQL Server включено в следующий пакет обновления SQL Server.

Можно подтвердить версии файлов Sqlncli.dll и Sqlservr.exe, выполняется следующий запрос:

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

Если Пакет обновления 1 (SP1) для SQL Server 2008 или более поздней версии Microsoft SQL Server 2008, запрос будет возвращать следующей информацией:

  • Файл Sqlncli.dll будет иметь свою версию позже, чем 9.0:3207.0.

  • Файл Sqlservr.exe будет иметь свою версию позже или равно 10.0:2531.0, но ранее чем 10.0:2766.0.

При использовании Microsoft SQL Server 2008 RTM-версии или более поздней версии SQL Server 2008 RTM, запрос будет возвращать следующей информацией:

  • Файл Sqlncli.dll будет иметь свою версию более поздней, чем версия 9.0:3207.0.

  • Файл Sqlservr.exe будет иметь свою версию позже или равно 10.0:1600.0, но ранее чем 10.0:1835.0.

Можно запустить следующий сценарий, чтобы определить является ли связанного сервера возникнут проблемы, описанные в разделе «Проблема»:

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 два вызова SQL Server 2008 SP1 (сборка 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

Чтобы обойти эти проблемы, выполните следующие действия.

Workaround 1:

1. Удалите связанный сервер при сбое.

2. Создание нового связанного сервера с помощью поставщика 10.0 собственного клиента SQL Server (SQLNCLI10). Чтобы сделать...
а. Щелкните правой кнопкой мыши Связанные серверы и выберите Связанный сервер.
б. выберите другой источник данных и выберите 10.0 собственного клиента SQL Server для поставщика.

Workaround 2:

  1. Создайте раздел реестра с именем «SQLNCLI» по следующему адресу:

    HKLM\Software\Microsoft\DataAccess

  2. Создайте запись реестра типа REG_DWORD, с именем «SQLOSPartitioning» в него.

  3. Значение этой записи значение 0x0.

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Правила программы

Название правила

Описание правила

Версии продуктов, для которых вычисляется правило

Советник по System Center

Чтобы предотвратить повреждение памяти собственный клиент SQL SQL Server отсутствует обновление KB979779

На этом сервере присутствует поставщик собственного клиента SQL, который соответствует SQL Server 2005. Эта старая версия SQLNCLI.dll может быть потенциально загружен в SQL Server 2008 и SQL Server 2008 R2, при перечислении поставщиков и создания связанных серверов. Определенные сборки SQL Server 2008 и SQL Server 2008 R2 могут возникнуть проблемы и зависает при создании или использовании связанному серверу, созданному с помощью уязвимых SQLNCLI.dll. Обновление соответствующих экземпляров SQL Server 2008 и SQL Server 2008 R2 с необходимые исправления или избегать использования этой SQLNCLI.dll при создании связанных серверов.

SQL Server 2008

SQL Server 2008 R2



Дополнительные сведения о добавочных модель обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:

935897 добавочных модель обслуживания доступна из группы SQL Server для предоставления исправления для проблем, о которых сообщалось в



Дополнительные сведения о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:

822499 Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server

Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:

Описание 824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

SQLNCLI ex_terminator

Автор: bruceye
Writer:v-xinbi
Технический редактор: mikez; jhalmans; cshao; madhana; bruceye
Editor:v-sbrenn

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?

Что повлияло на вашу оценку?

Добавите что-нибудь? Это необязательно

Спасибо за ваш отзыв!

×