Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
21green21
2 / 2 / 3
Регистрация: 03.10.2014
Сообщений: 13
#1

Передаче пароля в строке подключения к БД MSSQL - VBA

04.06.2015, 11:49. Просмотров 694. Ответов 11
Метки нет (Все метки)

Добрый день. Возник вопрос по поводу подключения к серверу MSSQL из ACCESS 2003.
Использунтся строка плдключения:
Visual Basic
1
ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=пароль;AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача
Все работает отлично, хоть и устарело.
Но возник один нюанс: если пароль содержит символ ';' выдает ошибку.
Пересылать строку подключения в виде PWD=”пароль” результат ошибка.
Надеялся, что ACCESS не поддерживает этот знак в передаче пароля, но при коннекте к таблице при помощи конструктора все проходит хорошо!!!
Кто сталкивался, как решили проблему?
P.S. Замена пароля это не вариант. Такие поставлены условия.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2015, 11:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передаче пароля в строке подключения к БД MSSQL (VBA):

Шифрование пароля при передаче в БД - PHP
Как зашифровать пароль, при передаче в базу данных??? <?php header('Content-Type: text/html; charset=utf-8'); ...

Форма подключения к MSSQL - Delphi БД
Доброго времени суток. Создаю форму подключения к MSSQL, через ADOConnection. procedure TFConnection.ButLoginClick(Sender:...

.NET 4.x Сохранение настроек подключения к БД MSSQL - C#
Ребята, Нид Хэлп. Нужно сохранить настройки подключения к БД в файл конфигурации, использую форму MDI, в каждом дочернем окне...

Подключения к MSSQL скрипта коннекта. - PHP БД
Всем привет. Проблема в том, что есть движок сайта, есть MSSQL x64 bit 2005, и проблема в том что php машина не хочет получать доступ к...

Ошибка подключения к удаленному Mssql серверу - PHP
Есть удаленный mssql сервер куда я хочу подключиться с помощью пхп. <?php if($c = @mssql_connect(...

Требуется введение пароля на каждое обращение к БД на MSSQL Server2008 - MS Access
У меня возникла следующая ситуация. Имеется БД на MSSQL Server2008, клиентское приложение создано на базе MS Access 2010, связь с БД через...

11
Kubuntovod
932 / 110 / 24
Регистрация: 14.01.2013
Сообщений: 520
04.06.2015, 14:51 #2
А нельзя сделать так:
Visual Basic
1
2
Dim s as string
s = "ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=" & "bla;bla" & ";AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача"
??
А далее просто подставить s.
0
21green21
2 / 2 / 3
Регистрация: 03.10.2014
Сообщений: 13
04.06.2015, 15:18  [ТС] #3
Спасибо, но у меня так и написано. Вот код.

Visual Basic
1
2
3
4
Dim ss As String
Dim pas AS String
pass = "bla;bla"
ss = "ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=" & pas & ";AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача"
это равносильно вашему коду, но это не работает, так как в итоге строка подключения все равно не проходит, даже если сделать и так, что бы заключить в кавычки:

Visual Basic
1
2
3
4
Dim ss As String
Dim pas AS String
pass = "bla;bla"
ss = "ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=""" & pas & """;AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача"
0
Kubuntovod
932 / 110 / 24
Регистрация: 14.01.2013
Сообщений: 520
04.06.2015, 18:39 #4
Попробуйте ^; или \; просто, как распространённый вариант экранирования.

Добавлено через 23 минуты
Ещё вариант {;}
0
UBUNTU
203 / 128 / 25
Регистрация: 04.02.2015
Сообщений: 697
05.06.2015, 05:42 #5
Можно пароль вывести в переменную как вариант и можно путем кавычек и аперсанда добиться результата.
0
Kubuntovod
932 / 110 / 24
Регистрация: 14.01.2013
Сообщений: 520
05.06.2015, 06:21 #6
Цитата Сообщение от UBUNTU Посмотреть сообщение
Можно пароль вывести в переменную как вариант
Он у ТС туда и выведен. Похоже, что это грабля не из VBA, это драйвер не разумеет, что от него хотят. Я не пробовал, но в сети встретил описание, где такие фокусы делают с помощью {}
0
UBUNTU
203 / 128 / 25
Регистрация: 04.02.2015
Сообщений: 697
05.06.2015, 07:00 #7
Аперсанды и кавычки в помощь. Или вообще убрать этот символ из пароля.
0
21green21
2 / 2 / 3
Регистрация: 03.10.2014
Сообщений: 13
05.06.2015, 10:37  [ТС] #8
Спасибо Вам за ответы, но все это уже мной перепробовано до создания этой темы:
ниже код с вариантами, которые я попробовал (по памяти вроде бы все перечислил).

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim ss As String
Dim pas AS String
pass = "bla;bla"
'или
pass = """bla;bla"""
'или
pass = "bla{;}bla"
'или
pass = """bla{;}bla"""
'или
pass = "bla^;bla"
'или
pass = """bla^;bla"""
'или
pass = "bla\;bla"
'или
pass = """bla\;bla"""
'или
pass = "bla/;bla"
'или
pass = """bla/;bla"""
ss = "ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=" & pas & ";AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача"

Ошибка в драйвере... не думаю(но могу ошибаться). После неправильного подключения всплывает ошибка, а за ней окно-форма VBA подключения к базе. Вбиваю в него свой пароль со знаком ";" и подсоединение проходит успешно!
Если еще есть какие варианты и идеи, буду рад узнать!
P.S. Выкинуть символ из пароля не могу...
0
Kubuntovod
932 / 110 / 24
Регистрация: 14.01.2013
Сообщений: 520
05.06.2015, 10:44 #9
Цитата Сообщение от 21green21 Посмотреть сообщение
Если еще есть какие варианты и идеи, буду рад узнать!
Я там выше запостил. Вот так попробуйте {;}

Упс! Уже есть такой вариант. Тогда я пасс.
0
Аксима
5727 / 1177 / 185
Регистрация: 12.12.2012
Сообщений: 963
05.06.2015, 12:11 #10
Здравствуйте, 21green21,
Методом тыка нашел такое решение:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub ConnectToDb()
    Dim cnn As ADODB.Connection
    'Dim props As ADODB.Properties
    'Dim prop As ADODB.Property
    Set cnn = New ADODB.Connection
    cnn.Provider = "Microsoft.ACE.OLEDB.12.0"
    'Set props = cnn.Properties
    'Debug.Print cnn.Properties.Count
    'For Each prop In props
         'Debug.Print prop.Name
    'Next prop
    cnn.Properties("Data Source") = "C:\Temp\So;me;Db.mdb"
    cnn.Properties("Password") = ";;;;;"
    cnn.Open
    cnn.Close
    Set cnn = Nothing
End Sub
Но набор свойств у меня получился не таким, как у вас (в первых, потому что у меня нет SQL Server, и я использовал другого провайдера, а во вторых, потому что имена свойств не сокращаются).

Думаю, можно использовать вместо PWD - "Password", вместо UID - "User ID", вместо Database - "Data Source".

Ну и, разумеется, можно поменять провайдера в строке cnn.Provider = "Microsoft.ACE.OLEDB.12.0", при этом набор доступных параметров также изменится.

В общем, попробуйте.

С уважением,
Аксима
0
21green21
2 / 2 / 3
Регистрация: 03.10.2014
Сообщений: 13
05.06.2015, 12:51  [ТС] #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всем спасибо!!! Вопрос решен.
Ответ крылся совсем близко...

Visual Basic
1
2
3
4
5
Dim ss As String
Dim pas AS String
 
pas = "{bla;bla}" ' получается экранировать необходимо весь пароль!!! это мной упущено было
ss = "ODBC; Driver={SQL Server};Server=server; Database=database;UID=имя; PWD=" & pas & ";AnsiNPW=No;AutoTranslate=No;QuotedId=No;APP=задача"
Тема закрыта!
1
UBUNTU
203 / 128 / 25
Регистрация: 04.02.2015
Сообщений: 697
07.06.2015, 05:23 #12
Как и говорил правильно поставить кавычку.
0
07.06.2015, 05:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2015, 05:23
Привет! Вот еще темы с ответами:

Шифрование пароля подключения к БД - PHP
Здравствуйте! В общем подключение к БД у меня такое: $mysql_connect = @mysql_connect("localhost", "root", "12345"); $db =...

Восстановление пароля подключения к инету - Windows
Привет всем! Имеется подключение к инету, соответственно с вводимым логином и паролем.... Хотелось бы переустановить Винду......

восстановление пароля VPN подключения - Сетевое оборудование
Подскажите пожалуйста как можно узнать пароль сохраненный в подключении VPN. Вариант с провайдером не подходит ибо владелец находится в...

Восстановление пароля vpn подключения - Администрирование Windows
доброго времени суток. как всегда подключался по работе из дома по vpn подключению. была стандартная программа по подключению, но по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru