Я пытаюсь синхронизировать копию таблицы активности между таблицей SQL Server Express и рабочей версией Access.В других таблицах я могу стереть содержимое таблицы SQL Server и вставить весь беспорядок обратно, чтобы зафиксировать все изменения.Однако, когда я пытаюсь сделать это с этой таблицей - я получаю информацию - но поле Autonumber увеличивается с последнего неиспользуемого числа из предыдущей итерации.После дюжины «синхронизирующих» операций я опасно близок к исчерпанию автономных номеров для этого поля.
Я попытался выдать 'DBCC CHECKIDENT' из клиентского приложения Microsoft Access, которое выдает ошибку, что оператор не начинается с SELECT, DELETE, PROCEDURE, DROP, ALTER или чего-то подобного.Эта команда работает, когда запускается из консоли управления SQL Server (инструмент, к которому у меня есть доступ в текущей тестовой среде, но НЕ работает, когда приложение запускается в производство).
Затем я попробовал «TRUNCATE TABLE»запрос с помощью команды DoCmd.RunSQL, и он выдал ошибку, что операция не поддерживается для связанных таблиц (приблизительно).Эта таблица связана с внешним интерфейсом Microsoft Access (внутренняя таблица находится на SQL Server Express).
Итак, для краткой сводки:
- Внешний интерфейс - это MicrosoftПриложение Access VBA
- Данные хранятся в SQL Server Express на удаленном компьютере
- Таблицы данных связаны во внешнем приложении
- Я НЕ смогу использовать SQL ServerКоманды консоли управления, когда это приложение запускается в производство, оно должно самостоятельно выполнять свою служебную работу.
- DoCmd.RunSQL и CurrentDB.Execute, по-видимому, не позволяют использовать TRUNCATE TABLE -или- DBCC CHECKIDENT'command.
- Обе вышеперечисленные функции -DO- работают при запуске из консоли управления SQL Server - см. выше, почему эта опция недопустима.
- -ALL- другоеТаблицы ведут себя так, как я ожидал от них, кроме этой, сбрасывая их поля идентичности соответствующим образом.
- отредактировано 08/08/2011 @ 15:08 -
хорошо- Я предпринял несколько попыток выполнить сквозной запрос на основе VBA, все из которых привели к ошибке ODBC - ошибка вызова.Вот код для модуля, который я создал для обработки сквозных переходов (заимствованный код от dbforums.com):
Function RunPassThrough(ByVal ConnectionString As String, ByVal SQL As String, Optional ByVal QueryName As String)
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef
With qdf
.Name = QueryName
.Connect = ConnectionString
.SQL = SQL
.ReturnsRecords = (Len(QueryName) > 0)
If .ReturnsRecords = False Then
.Execute
Else
If Not IsNull(dbs.QueryDefs(QueryName).Name) Then dbs.QueryDefs.Delete QueryName
dbs.QueryDefs.Append qdf
End If
.Close
End With
Set qdf = Nothing
Set dbs = Nothing
End Function
Поэтому мне нужно указать строку подключения к базе данных;не удалось выполнить все следующие действия:
strConnect = "ODBC;DRIVER={SQL Server};SERVER=ENV980-067\ENVIRON_TEST;DATABASE=instkeeper_test;Uid=<my username>;Pwd=<my password>;"
Результат: ошибка во время выполнения ODBC - сбой вызова (ошибка # 3146)
strConnect = "ODBC;DRIVER={SQL Server};SERVER=ENV980-067\ENVIRON_TEST;DATABASE=instkeeper_test;TRUSTED_CONNECTION=YES;"
Результат: ошибка во время выполнения ODBC -сбой вызова (ошибка # 3146)
strConnect = "ODBC;DSN=instkeeper_beta;"
Результат: У меня запрашивается имя источника данных, после указания с помощью панели администрирования источника данных я получаю сообщение об ошибке выполнения ODBC - сбой вызова (ошибка # 3146)
strConnect = "ODBC;Server=ENV980-067\ENVIRON_TEST;Database=instkeeper_test;User ID=<my user name>;Password=<my password>;Trusted_Connection=False;"
Результат: ошибка во время выполнения ODBC - сбой вызова (ошибка # 3146)
- отредактировано 08/08/2011 @ 16:41 -
БОЛЬШЕ сбоев на итерациях строк соединения, у меня официально нет идей, как заставить этого зверя работать.После попытки предыдущего - теперь любые проходы, сделанные с интерфейсом, терпят неудачу после запроса DSN.Восстановление невозможно, их необходимо восстановить для вызова связанных таблиц и запуска через JET.
strConnect = "ODBC;DATA SOURCE=instkeeper_test;"
Результат: ошибка во время выполнения ODBC - сбой вызова (ошибка # 3146)
strConnect = "ODBC;DRIVER=SQL Server;SERVER=ENV980-067\ENVIRON_TEST;"
Результат: ошибка времени выполнения ODBC - сбой вызова (ошибка # 3146)
strConnect = "ODBC;DRIVER=SQL Server;Server=ENV980-067\ENVIRON_TEST;Database=instkeeper_test;User ID=<my user name>;Password=<my password>;"
Результат: ошибка времени выполнения ODBC - сбой вызова (ошибка # 3146)