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

Откуда:
Сообщений: 25
Всем доброго дня. Прошу меня сильно не пинать, прочитал все, что только можно, но ответа не нашел. Если создал не там извиняюсь.
Задача в следующем.
Выгрузить данные из AD и положить их в таблицу. В настоящие время у меня настроен DTS пакет в котором есть один пункт который выгружают данные из Exchange через LDAP – VBS скриптом. – который использует STORED PROCEDURE.
Хочу переписать часть этого DTS пакета.

Собственно я создал новую таблицу ad_users с полями fio, search_fio, email, address, phone, room.

Создал процедуру в которой провел описание.

[
CREATE PROCEDURE dbo.sp_ad_users
@fio varchar (255) = '',				-- Фамилия и имя
@sfio varchar (255) = '',			-- Фамилия и имя
@email varchar (100) = '',			-- Адрес электронной почты
@address varchar (100) = '',			-- Адрес
@phone varchar (100) = '',			-- Телефон
@room varchar (50) =''                                        -- Комната
AS

INSERT INTO ad_users (fio,search_fio,email,phone,address,room) 
	VALUES (@fio, @sfio, @email, @phone, @address, @room)
GO

Вроде с этим все понятно. Дальше я должен написать новый VBS скрипт который должен передавать данные в процедуру.
Скрипты никогда не писал поэтому прошу помощи.


Это настройки ini файла при помощи которого я могу выгружать данные, но это не VBS.


SOURCE=OU=Exchange Users,DC=msk,DC=domain,DC=ru

COLUMNS=[Name],[sAMAccountName],[mail],[otherTelephone],[physicalDeliveryOfficeName],[pwdLastSet],[telephoneNumber],[title],[proxyAddresses],[memberOf]
ATT=[Name],[sAMAccountName],[mail],[otherTelephone],[physicalDeliveryOfficeName],[pwdLastSet],[telephoneNumber],[title],[proxyAddresses],[memberOf]
SEARCHSCOPE=SUBTREE_SCOPE
CONDITION=(cn=А*)


Помогите написать VBS скрипт который будет выдергивать данные из AD и Записывать их в таблицу.

Вот что я имею. скрипту который вытаскивает данные из exchange и записывает их в таблицу
Function Main()

set RT = CreateObject ("ADODB.Connection")
RT.Open "kadr-sql", "", ""

Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"

Set RS = conn.Execute("<LDAP://имя сервера/o=HOLDING/ou=_ABVIEWS_>;(&(mail=*)(objectClass=*) );ADsPath,Mail,cn,L,telephoneNumber,postaladdress,physicalDeliveryOfficeName;subtree")


While Not rs.EOF  
		room=""
		fio = RS.Fields(2).Value
		fio_count = UBound(Split(fio, "Ограничение"))
		space_count = UBound(Split(fio, " "))
		sfio = UCase(Replace(fio," ", ""))
		email = RS.Fields(1).Value
		email_count  = UBound(Split(UCase(email), UCase("sql")))
		town = RS.Fields(3).Value
		phone = RS.Fields(4).Value
		If Len((RS.Fields(6).Value))>0 Then room=", комн. " & RS.Fields(6).Value 
		addr = RS.Fields(5).Value & room   
		if (space_count = 2 AND email_count < 1 AND fio_count < 1) then
		Set RS1 = RT.Execute("EXEC sp_bank_users @fio = '" & fio & "', @sfio = '" & sfio & "', @email = '" & email & "', @town = '" & town & "', @phone = '" & phone & "', @room = '" & RS.Fields(6).Value & "', @address = '" & addr & "'")
	end if
         RS.MoveNext


Wend


conn.Close
RS = Close
SET RS = Nothing
RS1 = Close
SET RS1 = Nothing
RT = Close
SET RT = Nothing

Main = DTSTaskExecResult_Success

End Function


Чуть не забыл в AD есть ограничение на запрос в 1000 записей . поэтому я думаю что логично выгружать данные по очереди например по ФИО Начиная на 1 букву. A, Б, В, и т.д
А в DTS – пакете я уже сделаю поочередную связь кто за кем будет стартовать.
Все это необходимо для объединения данных по всем сотрудникам из разных баз в одну.
25 ноя 09, 11:42    [7975217]     Ответить | Цитировать Сообщить модератору
 Re: И снова АД + SQL  [new]
kin123
Member

Откуда:
Сообщений: 25
Вроде нашел.
25 ноя 09, 14:19    [7976587]     Ответить | Цитировать Сообщить модератору
 Re: И снова АД + SQL  [new]
kin123
Member

Откуда:
Сообщений: 25
kin123
Вроде нашел.


Все - таки это не то что нужно. Есть мысли? он с условием не работает почему то пустые строки выдает.
25 ноя 09, 15:43    [7977401]     Ответить | Цитировать Сообщить модератору
 Re: И снова АД + SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
kin123
kin123
Вроде нашел.


Все - таки это не то что нужно. Есть мысли? он с условием не работает почему то пустые строки выдает.

А какое отношение VBS имеет к MSSQL ?
А какое отношение синтаксис LDAP имеет к MSSQL ?
25 ноя 09, 15:45    [7977418]     Ответить | Цитировать Сообщить модератору
 Re: И снова АД + SQL  [new]
kin123
Member

Откуда:
Сообщений: 25
Все вопрос решил так как и описывал. только LDAP немного попарвил и запустил через процедуру.
проблема в том что при добавлении одного поля из АД
otherTelephone

phone  = RS.Fields("otherTelephone").Value

выдает ошибку.

Type mismatch
Как поменять формат поля? и на какой менять?
В exchange это поле отображается как категории с выплывающим списком.

К сообщению приложен файл. Размер - 0Kb
26 ноя 09, 12:23    [7981579]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить