РЕДАКТИРОВАТЬ: Для тех, кто приходит сюда с подобной ошибкой, моя ошибка заключалась в использовании «true» вместо SSPI для интегрированной безопасности.
Вот исходное сообщение.
Я использую Excel 2016 (офис 365 профессиональный профи). В VBA я добавил ссылку на «Библиотеку объектов данных Microsoft ActiveX 6.1», и в приведенном ниже коде я получаю сообщение об ошибке при открытии оператора при попытке подключиться к SQL Server 2012 или 2008:
Ошибка времени выполнения '-2147217887 (80040e21)':
Ошибка автоматизации
Проверка объекта ошибок показывает
- многоэтапная операция oledb вызвала ошибки. Проверьте каждое значение состояния ole db
- номер: -2147217887
- Источник: поставщик
Я знаю, что строка подключения и пользователь в порядке, и это то же самое, что я использую в c# коде и через ODB C все нормально. Я также попытался использовать учетные данные пользователя, библиотеку oledb 2.8 и даже перейти на «базу данных» и «сервер» в DSN. Разница лишь в том, что C# я использую System.Data.SqlClient
в качестве поставщика.
Любая идея, как получить больше информации, или любая идея, что может быть не так.
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim sql As String
Dim counter As Integer
Dim val As String
'MsgBox "Start"
conn.ConnectionString = "Provider=SQLOLEDB;Initial Catalog=MYDATABASE;data source=MYSERVER;Integrated Security=true"
conn.Open
РЕДАКТИРОВАТЬ: я могу создать подключение через подключения для передачи данных, и в моем файле OD C это говорит это:
<odc:Connection odc:Type="OLEDB">
<odc:ConnectionString>Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=SERVER;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=xxx;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=MYDATABASE</odc:ConnectionString>
<odc:CommandType>Table</odc:CommandType>
</odc:Connection>