Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 поиск изменений в Active Directory  [new]
st0m
Member

Откуда:
Сообщений: 14
Добрый день!
Есть задача независимо отслеживать все изменения в active directory. Для этого выгрузил все интересующие поля, создал две таблицы. Одна таблица - слепок старого состояния AD, вторая - выгрузка нового состояния. Сравнивая эти таблицы, получаю все новые изменения , а также все удаленные записи.

Для простоты, в запросах пока только изменение учетных записей,позже планирую добавить изменение всех полей.

SELECT * FROM Active_Directory_Scan
FULL OUTER JOIN Active_Directory_Scan_Buf
ON Active_Directory_Scan.SAMAccountName = Active_Directory_Scan_Buf.SAMAccountName
WHERE Active_Directory_Scan.SAMAccountName IS null


и

SELECT * FROM Active_Directory_Scan
FULL OUTER JOIN Active_Directory_Scan_Buf
ON Active_Directory_Scan.SAMAccountName = Active_Directory_Scan_Buf.SAMAccountName
WHERE Active_Directory_Scan_Buf.SAMAccountName IS null


Эти запросы вполне рабочие, и с ними проблем нет. Проблеммы возникают когда я пытаюсь сохранить результаты этих запросов в отдельной новой таблице.

INSERT INTO AD_Change
SELECT * FROM Active_Directory_Scan
FULL OUTER JOIN Active_Directory_Scan_Buf
ON Active_Directory_Scan.SAMAccountName = Active_Directory_Scan_Buf.SAMAccountName
WHERE Active_Directory_Scan.SAMAccountName IS null


Выдается сообщение Insert Error: Column name or number of supplied values does not match table definition.
В Таблице AD_Change, все поля абсолютно идентичные таблицам Active_Directory_Scan.
Подскажите, пожалуйста, что надо править запрос или таблицу?
19 дек 12, 13:59    [13654104]     Ответить | Цитировать Сообщить модератору
 Re: поиск изменений в Active Directory  [new]
Гость333
Member

Откуда:
Сообщений: 3683
st0m
что надо править запрос или таблицу?

Запрос. После "INSERT INTO AD_Change" перечислите все нужные поля таблицы. Вместо "SELECT *" тоже перечислите все необходимые поля.
19 дек 12, 14:07    [13654157]     Ответить | Цитировать Сообщить модератору
 Re: поиск изменений в Active Directory  [new]
st0m
Member

Откуда:
Сообщений: 14
да, так тоже пробывал. но тогда на запрос

INSERT INTO AD_Change (sn,SAMAccountName,mail)
SELECT sn,SAMAccountName,mail FROM Active_Directory_Scan
FULL OUTER JOIN Active_Directory_Scan_Buf
ON Active_Directory_Scan.SAMAccountName = Active_Directory_Scan_Buf.SAMAccountName
WHERE Active_Directory_Scan.SAMAccountName IS null


Выдает такие ошибки

Msg 209, Level 16, State 1, Line 2
Ambiguous column name 'sn'.
Msg 209, Level 16, State 1, Line 2
Ambiguous column name 'SAMAccountName'.
Msg 209, Level 16, State 1, Line 2
Ambiguous column name 'mail'.
19 дек 12, 14:14    [13654217]     Ответить | Цитировать Сообщить модератору
 Re: поиск изменений в Active Directory  [new]
Гость333
Member

Откуда:
Сообщений: 3683
st0m,

Используйте псведонимы таблиц в вашем запросе. Пример: http://msdn.microsoft.com/ru-ru/library/ms190410(v=sql.105).aspx
19 дек 12, 14:24    [13654304]     Ответить | Цитировать Сообщить модератору
 Re: поиск изменений в Active Directory  [new]
st0m
Member

Откуда:
Сообщений: 14
Спасибо большое!
Все получилось!
19 дек 12, 14:27    [13654317]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить