我想保留一個活動表的副本在SQL Server Express表和生產Access版本之間同步。在其他表中,我能夠擦除SQL Server表的內容,並將整個混亂插入以捕獲所有更改。然而,當我試圖用這張表做這件事時 - 我得到了信息 - 但自動編號字段從上一次迭代中最後一個未使用的數字開始遞增。經過十幾次'同步'操作後,我很危險地接近用完該領域的自動編號。訪問和SQL服務器:使用表擦除重置自動編號字段
我試圖從Microsoft訪問前端應用,它拋出一個錯誤,該聲明並沒有用SELECT開始,DELETE,程序,DROP,ALTER或類似的東西發出「DBCC CHECKIDENT」。這個命令在從SQL Server管理控制檯(我在當前測試環境中有權訪問的工具,但在應用程序進入生產時不能訪問)發佈時可以工作。
然後,我使用DoCmd.RunSQL命令嘗試'TRUNCATE TABLE'查詢,並且拋出了鏈接表(大約)不支持該操作的錯誤。此錶鏈接到Microsoft Access前端(後端表位於SQL Server Express上)。
所以,對於一個快速摘要:
- 前端是一個的Microsoft Access VBA應用
- 數據存儲在SQL Server Express的遠程計算機
- 數據表在前端連接上應用程序
- 當此應用程序進行生產時,我將無法使用SQL Server Management Console命令,因此需要自行運行它。
- DoCmd.RunSQL和CurrentDB.Execute似乎不允許使用TRUNCATE TABLE - 或者「DBCC CHECKIDENT」命令。
- 上述兩個函數-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)
1.整理我們的問題了所以它不是不是一個長段落2.添加你所嘗試過的東西(例如,你在評論中提到了CHECKIDENT,但是在問題中提到了nit並且降低了我的評分)3.根據評論,告訴我們你想如何運行它:不是「它不起作用「 – gbn
你的權利 - 我編輯它來反映這一點。 –