Симптоми
Имайте предвид сценария, описан по-долу:
Създайте пакет на SQL Server 2008 Integration Services R2 (SSIS), който има компонент "Местоназначение на SQL Server" в задача "Поток от данни".
Опитвате се да изпълните този пакет на системи, където е активиран управлението на потребителските акаунти (UAC) (например в Windows Vista или Windows 7), като използвате един от следните методи:
- Студио за разработчици на бизнес разузнаване (BIDS)
- SQL Server Management Studio (SSMS) Мениджър на обекти
- DTExec.exe
- DTExecUI.exe
В този случай може да получите съобщение за грешка, което прилича на едно от следните:
Забележка
[SQL Server Destination] Грешка: Не може да се подготви групово вмъкване на SSIS за вмъкване на данни.
[SSIS. Pipeline] Грешка: компонент "SQL Server Destination" не успя да премине през фазата на предварително изпълнение и върна код на грешка 0xC0202071."
Не може групово да се копират данни. Може да се наложи да изпълните този пакет като администратор.
Бележки
- Тези грешки няма да се натъкнат, ако изпълните пакета под вградения акаунт на администратор, създаден по време на инсталирането на операционната система. Но ще получите това съобщение за всеки друг потребител, включително тези, които са членове на групата на локалните администратори.
- Проблемът не възниква, когато изпълнявате същия SSIS пакет като задача на Агент на SQL Server.
- Второто съобщение за грешка се генерира само след инсталирането на SQL 2008 Service Pack 2 (SP2).
Причина
Този проблем възниква в системи, където UAC е активиран. Когато дадено приложение (например SSIS) се стартира от акаунт, който е член на групата на администраторите, то получава два маркера за защита: маркер с ниски разрешения и маркер с повишени разрешения. Маркерът за повишени разрешения се използва само когато приложението се изпълнява изрично под акаунт на администратор с помощта на опцията "Изпълнявай като администратор ". По подразбиране SSIS винаги използва маркера с ниски разрешения и това води до срив, когато SSIS се свърже с компонент местоназначение на SQL Server.
Забележка: Когато използвате акаунт, който не е член на локална група на администраторите, UAC не се появява.
Решение
Информация за сервизен пакет за SQL Server 2008 R2
За да отстраните този проблем, сдобийте се с най-новия сервизен пакет за SQL Server 2008 R2. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:
2527041 Как да получите най-новия сервизен пакет за SQL Server 2008 R2
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Този проблем е коригиран за първи път в SQL Server 2008 R2 Service Pack 1 за SQL Server 2008 R2.
Заобиколно решение
За да заобиколите този проблем, използвайте един от следните методи:
Ако изпълнявате пакета от SSMS, от BIDS или от DTExecUI.exe, стартирайте тези инструменти от акаунта на администратора. За да направите това, щракнете върху "Старт", посочете "Всички програми", посочете SQL Server 2005 или SQL Server 2008, щракнете с десния бутон върху инструмента, който използвате, и след това щракнете върху "Изпълнявай като администратор". Това стартира приложението с помощта на повишените разрешения на вградения акаунт на администратор, и пакетът се изпълнява успешно.
По същия начин, ако изпълнявате пакета с помощта на DTExec.exe, стартирайте го от команден прозорец с администраторски права. За да направите това, щракнете върху "Старт", щракнете върху "Всички програми", щракнете върху "Принадлежности", щракнете с десния бутон върху "Команден прозорец" и след това щракнете върху "Изпълнявай като администратор".
Забележка: Ако не влезете в компютъра като администратор, ще бъдете подканени да предоставите акаунта на администратор. В отговор въведете потребителското име и парола на администратор в диалоговия прозорец "Управление на потребителски акаунти " и след това щракнете върху OK.
Заместете компонентите на местоназначението на SQL Server в задачите на потока от данни, които са неуспешни, с компоненти на местоназначение на OLE база данни, които сочат към същия диспечер на връзките на SQL Server.
Използвайте акаунт, който не е член на локалната група на администраторите, след като дадете разрешения за създаване на глобални обекти за този акаунт.
За да направите това, изпълнете следните стъпки:
- Щракнете върху "Старт", посочете "Административни инструменти" и след това щракнете върху " Локални правила за защита".
- Разгънете Локални правила и след това щракнете върху Задаване на потребителски права.
- В екрана за подробни данни щракнете двукратно върху "Създаване на глобални обекти".
- В диалоговия прозорец за настройка на локални правила за защита щракнете върху "Добави".
- В диалоговия прозорец "Избор на потребители или група " щракнете върху потребителските акаунти, които искате да добавите, щракнете върху "Добави" и след това щракнете два пъти върху OK .