![]() |
![]() |
![]() |
|
Как программно узнать имя SQL-сервера? | ☑ | ||
---|---|---|---|---|
0
Смит
06.04.07
✎
06:40
|
Не сервера предприятия.
|
|||
1
Смит
06.04.07
✎
07:46
|
Ап.
|
|||
2
Смит
06.04.07
✎
08:56
|
Ап.
|
|||
3
megalodon
06.04.07
✎
08:59
|
3-х звенка на то и создана в числе прочего, шобы имя сервера было затруднительно узнать.
|
|||
4
coder1cv8
06.04.07
✎
09:04
|
(0) А на фига?
|
|||
5
Ferz
06.04.07
✎
09:06
|
(0)а для чего?
Попытка Структура = Новый Структура("Тип, Сервер, База, SQlсервер, SQlБаза, Файл, Пользователь, Пароль, SQLOLEDB,ADODB"); СтрокаСоединения = СтрокаСоединенияИнформационнойБазы(); СтрокаСоединения = СтрЗаменить(СтрокаСоединения, ";", Символы.ПС); Стр1 = СтрПолучитьСтроку(СтрокаСоединения, 1); Стр2 = СтрПолучитьСтроку(СтрокаСоединения, 2); Если Лев(Стр1, 4) = "Srvr" Тогда Структура.Тип = "Сервер"; Структура.Сервер = Сред(Стр1, 7, СтрДлина(Стр1) - 7); Структура.База = Сред(СтрПолучитьСтроку(СтрокаСоединения, 2), 6, СтрДлина(Стр2) - 6); //подсоединяемся к базе на сервере для определения пароля и пользователя COMConnector = Новый COMОбъект("V8.COMConnector"); Server = COMConnector.ConnectServer(Структура.Сервер); Server.AddAuthentication(СокрЛП(Пользователь),Пароль); ArrayIB = Server.GetInfoBASes(); Для Каждого IB Из ArrayIB Цикл Если ВРег(IB.Name)<> ВРег(Структура.База) Тогда Продолжить; Иначе Структура.SQlсервер=ib.DBServerName; Структура.SQlБаза=ib.DBName; Структура.Пользователь=ib.DBUser; Структура.Пароль=ib.DBPASsword; Структура.SQLOLEDB="Provider=SQLOLEDB;Password="+ib.DBPASsword+";Persist Security Info=True;User ID="+ib.DBUser+";Initial Catalog="+ib.DBName+";Data Source="+ib.DBServerName; Структура.ADODB="Driver={SQL Server};Server=" + ib.DBServerName + ";Uid=" + ib.DBUser + ";Pwd=" + ib.DBPASsword + ";DataBASe=" + ib.DBName + ";" + "Pwd=" + ib.DBPASsword +";"; Прервать; КонецЕсли; КонецЦикла; Если ib.DBName="" Тогда ВызватьИсключение(" - не удалось получить доступ к серверу 1с"); КонецЕсли; Иначе Структура.Тип = "Файл"; Структура.Файл = Сред(Стр1, 6, СтрДлина(Стр1) - 6); КонецЕсли; Возврат Структура; Исключение Сообщить("Ошибка получения параметров ИБ на сервере приложения 1с |"+ОписаниеОшибки(),СтатусСообщения.ОченьВажное); Соединение_ОткрытьНастройки(); Возврат False КонецПопытки; |
|||
6
coder1cv8
06.04.07
✎
09:09
|
(5) Не, ну если изнутри SQL-ной базы, то и кода столько не надо, понятно что сервер в СтрокеСоединения имеется...
|
|||
7
Ferz
06.04.07
✎
09:20
|
(6) не ну это понятно, ну не просто же ему имя сервера нужно. Скорее всего он хочет к нему подключится.:)) И что то там натворить....8))
|
|||
8
Смит
06.04.07
✎
09:51
|
(4), (5) Спасибо. Для прямого запроса.
|
|||
9
Ferz
06.04.07
✎
09:53
|
(8) велосипед изобретен смотри Enterprise Integrator
|
|||
10
Смит
06.04.07
✎
09:54
|
(9) Это что?
|
|||
11
coder1cv8
06.04.07
✎
09:59
|
(9) хорош, пиарить свой интегратор )
|
|||
12
Ferz
06.04.07
✎
10:15
|
(11) почему он тебе не понравился?, он не подходит для прямых запросов?
|
|||
13
Ferz
06.04.07
✎
10:17
|
||||
14
coder1cv8
06.04.07
✎
10:19
|
(12) да я шучу, нормальная штука... Хотя то же в некотором роде велосипед... )
|
|||
15
Ferz
06.04.07
✎
10:35
|
(14) вот так бы сразу.... :))
|
|||
16
Смит
06.04.07
✎
10:50
|
(13) Спасибо.
|
|||
17
Vozhd
06.04.07
✎
10:53
|
(5) У этого кода есть одна маленькая проблемка. Может быть ситуация, когда 1С-ая база открывается, а с сервером соединиться не получается...
|
|||
18
Ferz
06.04.07
✎
11:31
|
(17) правильно... если ты не знаешь админского пароля
|
|||
19
Vozhd
06.04.07
✎
11:40
|
(18) Даже зная пароль можно не найти сервера
|
|||
20
Ferz
06.04.07
✎
11:44
|
(19) и в каких же это случаях?
|
|||
21
Vozhd
06.04.07
✎
11:47
|
(20) Например, когда SQL сервер стоит в другой сети...
|
|||
22
Ferz
06.04.07
✎
12:04
|
ты про SQL что ли? или про 1с сервак?
|
|||
23
Vozhd
06.04.07
✎
12:36
|
(22) Я про то, что Ваш код в (5) может получать имена серверов, к которым нельзя соединиться, даже если знаешь правильные логины.
|
|||
24
Ferz
06.04.07
✎
13:01
|
(23) а кокой код тогда будет правильным?
|
|||
25
Vozhd
06.04.07
✎
13:15
|
(24) подключение к базе должно осуществляться только на сервере предприятия. а значит и все обращения у базе должны выполняться только из кода, который выполняется на сервере, а не на клиенте.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |