Ошибка входа в систему, Crystal Reports 9, VB6, sql server, sqlncli

Я пытаюсь создать установочный пакет для устаревшего программного обеспечения vb6. само программное обеспечение подключается к серверу sql через sqlncli (собственный клиент). Я упаковал все зависимости и развернул их на новом компьютере под управлением winxp и office2003.

теперь с целевой машины я могу подключиться к базе данных (ms sqlserver 2005), которая работает где-то еще, используя tcp / ip. унаследованное программное обеспечение прекрасно подключается к базе данных, и я могу манипулировать данными. но когда я пытаюсь открыть отчет о кристалле, все становится беспорядочно:

я получаю сообщение об ошибке: «Ошибка выполнения» -2147189176 (80047e48): Ошибка входа в систему. Подробности: 01000: [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionOpen (Connect ()) »

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

  For i= 1 To numTables
    Set crTable = crTables.Item(i)
    crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd
  Next

ConnectBufferString читает «Строка подключения = ДРАЙВЕР = SQL Server ;; Идентификатор пользователя = пользователь ;; Пароль = ;; База данных = MY_DB ;; Сервер = 192.168.1.3 \ SQLEXPRESS ;; UseDSNProperties = -1»

похоже, нет способа явно установить поставщика на SQLNCLI, по крайней мере, я его не вижу.

при запуске программного обеспечения в моей dev-системе все работает так, как должно.

Я надеюсь, что вы, ребята, можете мне помочь с этим. Просто чтобы не спорить об этом: я также считаю, что обе эти технологии (vb6 и cr9) устарели, но переключение здесь не вариант.


person BigBlackDog    schedule 10.09.2009    source источник
comment
это не ответ на вопрос, почему это не работает, но, используя код из этого комментария, я мог бы найти способ обойти это: stackoverflow.com/questions/204611/   -  person BigBlackDog    schedule 10.09.2009


Ответы (2)


Вам необходимо стереть таблицы и изменить конфигурацию доступа к базе данных, см. Пример ниже. В первой строке кода я поместил пример, если необходимо изменить драйвер подключения, в моем случае отчет указывал на базу данных PostgreSQL, и programativamente необходимо изменить для подключения к SQL СЕРВЕРУ.

myReportObject.Database.Tables(1).DllName = "crdb_ado.dll"       'Connect to SQL with OLEDB
For Index = 1 To myReportObject.Database.Tables.Count
    With myReportObject.Database.Tables(Index)

        .ConnectionProperties.DeleteAll

         .ConnectionProperties.Add "Provider", "SQLOLEDB"
         .ConnectionProperties.Add "Data Source", mySqlIP
         .ConnectionProperties.Add "Initial Catalog", myDB
         .ConnectionProperties.Add "User ID", usr_id
         .ConnectionProperties.Add "Password", pass
         .ConnectionProperties.Add "Integrated Security", 0

    End With
Next
person Neias    schedule 15.09.2014

Я знаю, что вы сказали в своем комментарии, что уже обошли это, но я подумал, что выкину это там. :)

Вы можете попробовать использовать

Provider = SQLNCLI

вместо,

DRIVER = SQL Server

чтобы увидеть, имеет ли это значение.

Взгляните на следующую ссылку. Прокрутите страницу вниз, пока не увидите раздел «Поставщик OLE DB для SQL Native Client 9.0». Они показывают примеры строк подключения с использованием собственного клиента SQL Server.

http://www.connectionstrings.com/sql-server-2005

Надеюсь это поможет.

person Dusty    schedule 17.09.2009