Строка подключения vb6 ADODB к sql server 2008

Недавно я перенес базу данных с sql server 2005 на 2008 на windows server 2008. Клиенты нормально подключаются со своих машин XP, как и SQL Management Studio 2008. Я также протестировал удаленное соединение с помощью LINQPad, которое отлично работало.

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

    Dim strUserName As String
     Dim strPassword As String
     Dim sProc As String

     sProc = "Class_clsAdoFnx_Initialize"

        Me.DatabaseName = "db_app"




 'Connect to SQL Server

    strUserName = "admin"
    strPassword = "mudslinger"

    Set cSQLConn = New ADODB.Connection
    '**Original connection String
    'cSQLConn.CommandTimeout = 0
    'cSQLConn.ConnectionString = " PROVIDER=SQLOLEDB" & _
    '    ";SERVER=NET-BRAIN" & _
    '    ";UID=" & strUserName & _
    '    ";PWD=" & strPassword & _
    '    ";DATABASE=" & Me.DatabaseName

    '***First attempt, no dice
    'cSQLConn.ConnectionString = "Provider=sqloledb;" & _
    '       "Data Source=NET-BRAIN;" & _
    '       "Initial Catalog=DB_APP;" & _
    '       "User Id=admin;" & _
    '       "Password=mudslinger"
    'cSQLConn.Open

    '***3rd attempt, no dice 
    cSQLConn.Open "Provider=sqloledb;" & _
           "Data Source=NET-BRAIN;" & _
           "Initial Catalog=db_app;" & _
           "User Id=admin;" & _
           "Password=mudslinger", "admin", "mudslinger"

заранее спасибо.

ОБНОВЛЕНИЕ: вот строка, которую я сгенерировал с помощью моего файла test.UL

[ODBC] Провайдер

Provider = MSDASQL.1; Password = logmein; Persist Security Info = True; User ID = sa; Extended Properties = "DSN = NET-BRAIN; UID = admin; PWD = mudslinger; APP = Microsoft® Windows® Operating System; WSID = BPOOR-16D68FBC7D; DATABASE = DB_App; Network = DBMSSOCN "; Начальный каталог = DB_App

Вот тот же файл UL, использующий собственный поставщик SQL:

"Provider = SQLNCLI10.1; Integrated Security =" "; Persist Security Info = False; User ID = admin; Initial Catalog = DB_APP; Data Source = NET-BRAIN; Initial File Name =" "; Server SPN =" ""

- получено сообщение об ошибке: Ошибка в вызове Ado ... Произошла ошибка в Class_clasAdoFnx_initialize 3001 Аргументы имеют неправильный тип, находятся за пределами допустимого диапазона или конфликтуют друг с другом. --Ошибка: Class_clsAdoFnx_Initialize 3709 Запрошенная операция требует объект сеанса OLE DB, который не поддерживается текущим поставщиком.

попробовал [oledb] для опции поставщика сервера sql "Provider = SQLOLEDB.1; Password = mudslinger; Persist Security Info = True; User ID = admin; Initial Catalog = db_app; Data Source = net-brain"

ошибка: -2147217900 Ошибка входа для пользователя admin

ОБНОВЛЕНИЕ 2: после изоляции открытой строки подключения выясняется, что подключение открывается, а хранимая процедура, которую я использовал для тестирования, дает сбой.


person phill    schedule 02.06.2010    source источник
comment
Я получаю сообщение об ошибке: -2147217900 Ошибка входа для пользователя admin.   -  person phill    schedule 03.06.2010
comment
вы уверены, что указали правильный пароль   -  person volody    schedule 03.06.2010
comment
да, я тестировал его локально на удаленном сервере, удаленно через студию управления сервером sql и в системном источнике данных odbc на удаленной машине xp.   -  person phill    schedule 03.06.2010
comment
Вы уверены, что это «админ»? Может быть, это «са»? Я не очень хорошо знаком с SQL Server, но я думал, что «sa» было именем пользователя учетной записи администратора по умолчанию.   -  person Mark Wilkins    schedule 03.06.2010
comment
sa - это учетная запись системного администратора по умолчанию, однако мы отказались от использования созданного нами пользователя admin, который ранее работал до миграции базы данных на sql 2008.   -  person phill    schedule 03.06.2010


Ответы (1)


После Использование ADO с собственным клиентом SQL Server для включения использования SQL Серверный собственный клиент, приложения ADO должны будут реализовать следующие ключевые слова в своих строках подключения:

Provider = SQLNCLI10
DataTypeCompatibility = 80

Dim con As New ADODB.Connection

con.ConnectionString = "Provider=SQLNCLI10;" _
         & "SERVER=NET-BRAIN;" _
         & "Database=DB_APP;" _ 
         & "DataTypeCompatibility=80;" _
         & "User Id=admin;" _
         & "Password=mudslinger;"

con.Open
person volody    schedule 02.06.2010
comment
Я получаю сообщение об ошибке в Ado Call. Произошла ошибка в Class_clsAdoFnx_Initialize 3706. Провайдер не может быть найден. Возможно, он установлен неправильно. - person phill; 03.06.2010
comment
Я также попытался вернуть поставщика к SQLOLEDB и получил аналогичную ошибку - person phill; 03.06.2010
comment
На этом клиентском компьютере установлена ​​64-битная ОС? - person volody; 03.06.2010
comment
Да, это так. Он работает на сервере Windows 2008 - person phill; 03.06.2010
comment
Попробуйте установить собственный клиент 2008 go.microsoft.com/fwlink/?LinkId=123717&clcid=0x409 или microsoft.com / downloads / или загрузите его (sqlncli.msi) с установочного компакт-диска SQL Server 2008 - person volody; 03.06.2010
comment
установлен ... не уверен, как это имело значение. Мне нужно изменить строку подключения, чтобы использовать это? - person phill; 03.06.2010
comment
Я по-прежнему получаю ту же ошибку: -2147467259 Ошибка входа для пользователя admin. - person phill; 03.06.2010
comment
Еще одно предложение, попробуйте создать новый файл test.udl и использовать его для проверки соединения с разными провайдерами. - person volody; 03.06.2010
comment
не могли бы вы подробнее рассказать об удл? это очень ново для меня. - person phill; 03.06.2010
comment
создайте новый файл TEST.UDL, затем дважды щелкните по нему, и он откроет диалоговое окно Data Link Properties, выберите первую вкладку и выберите поставщика, например «Sql Native Client», затем выберите на второй вкладке имя сервера и установите имя пользователя и пароль. После этого вы должны увидеть список баз данных и нажать кнопку «Проверить соединение», чтобы проверить соединение. - person volody; 03.06.2010
comment
если у вас все получится, откройте файл в Блокноте и скопируйте строку подключения (пароль не сохраняется, вам нужно будет установить флажок, чтобы сохранить пароль) - person volody; 03.06.2010
comment
Я попытался скопировать строку как с кавычками, так и без них, и это дает мне синтаксическую ошибку в VB6, я отправлю полученную строку выше. - person phill; 03.06.2010
comment
замените одинарную кавычку на двойную кавычку, например, вместо Properties = DSN = NET используйте следующую Properties = DSN = NET - person volody; 03.06.2010
comment
а также замените DBMSSOCN; Initial на DBMSSOCN; Initial - person volody; 03.06.2010
comment
На этот раз он скомпилирован; однако при запуске я получаю сообщение об ошибке: -2147217887 [Microsoft] [Драйвер ODBC SQL Server] Дополнительная функция не реализована - person phill; 03.06.2010
comment
Попробуйте следующую строку подключения, я удалил несколько необязательных параметров: Provider = MSDASQL.1; Password = logmein; Persist Security Info = True; User ID = sa; Extended Properties = DSN = NET-BRAIN; UID = admin; PWD = mudslinger ; DATABASE = DB_App ;; Начальный каталог = DB_App Можно ли использовать другого провайдера с TEST.UDL? - person volody; 03.06.2010
comment
Как насчет собственного клиента SQL Server - person volody; 03.06.2010
comment
При тестировании у вас был только открытый код подключения? - person volody; 03.06.2010
comment
После изоляции открытой строки подключения выясняется, что соединение открывается, и хранимая процедура, которую я использовал для тестирования, дает сбой. Я размещу хранимую процедуру наверху. - person phill; 04.06.2010