µ¶¸³ÀûÀÎ Jet ¼¼¼ÇÀ» Jet OLE DB °ø±ÞÀÚ¸¦ »ç¿ëÇÏ´Â ¸ðµç ADO ¿¬°áÀ» À¯ÁöÇÕ´Ï´Ù. ÇÑ ¿¬°á¿¡¼ µÎ °³ÀÇ ¿¬°áÀÌ °°Àº µ¥ÀÌÅͺ£À̽º ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÀÖ´Â °æ¿ì¿¡µµ µÎ ¹øÂ° ¿¬°á¿¡¼ ÀÐ°í ¾²±â °£ÀÇ Áö¿¬ °á°ú.
ÀÌ ºñµ¿±â ¾²±â/Àб⠵¿ÀÛÀÔ´Ï´Ù. Microsoft Jet Çâ»óµÈ µ¥ÀÌÅͺ£À̽º ¼º´ÉÀ» Á¦°øÇϱâ À§ÇØ ½Ã½ºÅÛ ¹öÆÛ¸µ ÆäÀÌÁö¸¦ »ç¿ëÇÏ°í ½Ã½ºÅÛ ¹öÆÛ¸µ ÀÌ ÆäÀÌÁö¸¦ ÇØÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù.
µ¶¸³ÀûÀÎ ADO ¿¬°áÀ» »ç¿ëÇÒ ¶§ JetÀÇ Áö¿¬µÈ ¾²±â/Àб⠵¿ÀÛÀ» ¼³¸íÇϱâ À§ÇØ °£´ÜÇÑ VB ¾ç½Ä¿¡ ÀÖ´Â ´ÜÃ߸¦ ´ÙÀ½ Äڵ带 ½ÇÇàÇϽʽÿÀ.
Const USE_SAME_CONNECTION = False
Sub MissedReadsDemo()
Dim conn1 As New ADODB.Connection
Dim conn2 As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim strConnect As String
Dim i As Long
' Set up our connection string (requires a database named c:\db1.mdb).
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb"
' Open connection 1 and drop and re-create test table.
conn1.CursorLocation = adUseServer
conn1.Open strConnect
On Error Resume Next
conn1.Execute "drop table tmpTest", , _
adExecuteNoRecords + adCmdText
On Error GoTo 0
conn1.Execute "create table tmpTest (id long)", , _
adExecuteNoRecords + adCmdText
' Close connection 1 to flush the creation of table tmpTest.
conn1.Close
' Now open connection 1 and connection 2.
conn1.Open strConnect
conn2.Open strConnect
' Insert 10 records using connection 1.
For i = 1 To 10
conn1.Execute "insert into tmpTest (id) values (1)", , _
adExecuteNoRecords + adCmdText
Next i
' Attempt to read records using second connection if
' USE_SAME_CONNECTION is set to False.
If (USE_SAME_CONNECTION) Then
Set rs = conn1.Execute("select * from tmpTest", , adCmdText)
Else
Set rs = conn2.Execute("select * from tmpTest", , adCmdText)
End If
' Count records in our table (should be 10).
i = 0
While Not rs.EOF
i = i + 1
rs.MoveNext
Wend
rs.Close
If (USE_SAME_CONNECTION) Then
MsgBox "Read " & i & " records using same connection."
Else
MsgBox "Read " & i & " records using 2 different connections."
End If
conn1.Close
conn2.Close
End Sub
Âü°í À§ÀÇ »ùÇà Äڵ带 ¹Ýº¹Çؼ ½ÇÇàÇÒ °æ¿ì ÀϽÃÀûÀ¸·Î 10 ¾òÀ» °ÍÀÔ´Ï´Ù USE_SAME_CONNECTION Ç÷¡±× False·Î ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì ¹ÝȯµÇ´Â ¹ÝȯµÈ ¶Ç´Â 0 ·¹Äڵ带 ±â·ÏÇÕ´Ï´Ù. ÀÌ ¾²°í, Jet OLEDB °ø±ÞÀÚ 4.0 µÎ ADO ¿¬°áÀ» ¿ÏÀüÈ÷ µ¿±âÀÖÁö ¾Ê½À´Ï´Ù »ç¿ëÇÒ ¶§ Àд ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. USE_SAME_CONNECTION Ç÷¡±× True·Î ¼³Á¤µÈ °æ¿ì, ¹ÝȯµÈ 10°³ÀÇ ·¹Äڵ带 Ç×»ó ³ªÅ¸³³´Ï´Ù. ¾²±â ¹× µ¿ÀÏÇÏ°Ô ÀÐÀº º¸¿© Jet OLEDB °ø±ÞÀÚ 4.0À» »ç¿ëÇÏ´Â °æ¿ì 100% µ¿±â ADO ¿¬°áÀÌ ÀÖ½À´Ï´Ù.
ƯÁ¤ »óȲ¿¡¼ µÎ °¡Áö º°µµÀÇ ADO ¿¬°á ÀÛ¼º ¹× Jet OLEDB °ø±ÞÀÚ¸¦ »ç¿ëÇÏ¿© Access µ¥ÀÌÅͺ£À̽º¿¡¼ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§ »ç¿ëÇØ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾²±â ¹× Àб⠰°Àº Access µ¥ÀÌÅͺ£À̽º¿¡ µÎ °³ÀÇ º°µµÀÇ ÇÁ·Î¼¼½º°¡ ÀÖÀ¸¸é ¹æ¹ýÀº ´ÜÀÏ ¿¬°áÀ» °øÀ¯ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ »óȲ¿¡¼ ¾²±â¸¦ µ¿±âÈÇÒ ¼ö ¹× º°µµÀÇ ADO ¿¬°áÀ» »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ ÁöħÀ» ÀÐ°í µû¶ó¾ß:
- ÀÛ¼º±â¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ¾²´Â µ¥ Àü¿¡ ADOÀÇ Connection.BeginTrans, Æ®·£Àè¼Ç, ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.
- ÀÛ¼º±â°¡ µ¥ÀÌÅͺ£À̽º ¾÷µ¥ÀÌÆ®¸¦ È®ÀÎÇÑ ´ÙÀ½ ADOÀÇ Connection.CommitTrans »ç¿ëÇÏ¿© Æ®·£Àè¼Ç Ä¿¹Ô ÇÕ´Ï´Ù.
- ÆÇµ¶±â°¡ Àü¿¡ µ¥ÀÌÅ͸¦ Àд µ¿¾È ÇØ´ç ¿¬°áÀ» Àü´ÞÇÏ¿© JRO.JetEngine.RefreshCache È£ÃâÇØ¾ß ÇÕ´Ï´Ù.
JRO.JetEngine VB ÇÁ·ÎÁ§Æ®¿¡
Microsoft Jet ¹× º¹Á¦ °³Ã¼ 2.1 ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÂüÁ¶¸¦ Ãß°¡ÇÏ¿© Æ÷ÇԵǾî ÀÖÀ½À» À¯ÀÇÇϽʽÿÀ.
´ÙÀ½ ÄÚµå ¿¹Á¦¿¡¼´Â À§ÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÏ¿© µÎ °³ÀÇ ¿¬°áÀ» µ¿±âÈÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
Sub SyncReadDemo()
Dim conn1 As New ADODB.Connection
Dim conn2 As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim JRO As New JRO.JetEngine
Dim strConnect As String
Dim i As Long
' Set up our connection string (requires a database named c:\db1.mdb).
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb"
' Open connection 1 and drop and re-create test table.
conn1.CursorLocation = adUseServer
conn1.Open strConnect
On Error Resume Next
conn1.Execute "drop table tmpTest", , _
adExecuteNoRecords + adCmdText
On Error GoTo 0
conn1.Execute "create table tmpTest (id long)", , _
adExecuteNoRecords + adCmdText
' Close connection 1 to flush the creation of table tmpTest.
conn1.Close
' Now open connection 1 and connection 2.
conn1.Open strConnect
conn2.Open strConnect
' Insert 10 records using connection 1.
' Note we must perform all writes inside of a transaction.
conn1.BeginTrans
For i = 1 To 10
conn1.Execute "insert into tmpTest (id) values (1)", , _
adExecuteNoRecords + adCmdText
Next i
conn1.CommitTrans
' Refresh cache for reader connection.
JRO.RefreshCache conn2
Set rs = conn2.Execute("select * from tmpTest", , adCmdText)
' Count records in our table (should be 10).
i = 0
While Not rs.EOF
i = i + 1
rs.MoveNext
Wend
rs.Close
MsgBox "Read " & i & " records using different connections."
conn1.Close
conn2.Close
End Sub
À§ÀÇ Äڵ带 ½ÇÇàÇÏ¸é ÆÇµ¶±â ¿¬°á¿¡ ÀÇÇØ ¹ÝȯµÈ 10°³ÀÇ ·¹Äڵ带 Ç×»ó ±¸ÇØ¾ß ÇÕ´Ï´Ù.
RefreshCache, È£ÃâÀ» ÁÖ¼®À¸·Î ¶Ç´Â Æ®·£Àè¼ÇÀÌ µ¥ÀÌÅ͸¦ ¾²´Â µ¿¾È »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ¹ÝȯµÇ´Â ·¹ÄÚµå ¼ö¸¦ Ç×»ó 10 ¾Ê½À´Ï´Ù. ÀÌ ¸Þ¼µå´Â ´ÙÀ½ µ¿±âÈµÈ ¾²±â ¹× Àб⸦ º°µµÀÇ ÇÁ·Î¼¼½º °£¿¡ ADO´Â Microsoft Jet OLE DB °ø±ÞÀÚ 4.0 ÇÔ²² »ç¿ëÇÒ ¶§ Çã¿ëµË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ADO¸¦ »ç¿ëÇϸé Microsoft Access ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇÒ ¶§ ÀÛµ¿ÇÏÁö ¾Ê´Â À¯ÀÇÇϽʽÿÀ. Microsoft Access ODBC µå¶óÀ̹ö°¡ µ¿±âÈµÈ °³¿Í Àбâ ÀÛ¾÷ °£ÀÇ ¸ðµç »óȲ¿¡ ¾Æ·¡¿¡ µÎ °è¼Ó ¿¸° ADO ¿¬°á Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¼º°øÀûÀ¸·Î ÀÛ¼ºÇϰí ADO¸¦ »ç¿ëÇϸé Microsoft Access ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÛ¼º±â¿¡ ¿¬°á ¾²±â ¿Ï·áµÇ°í ÆÇµ¶±â ¿¬°á ÇÕ´Ï´Ù ´ÝÇû´Ù°¡ µ¥ÀÌÅ͸¦ Àбâ Àü¿¡ ´Ý¾Æ¾ß ÇÕ´Ï´Ù. µ¿±âÈÇÏ·Á¸é ´ÙÀ½ ¸Þ¼µå¸¦ ¾²°í Microsoft Access ODBC µå¶óÀ̹ö °¡Áø 2 ¿¬°á ¹× ADO »çÀÌÀÇ ÀнÀ´Ï´Ù.
- ÀÛ¼º±â°¡ µ¥ÀÌÅͺ£À̽º ¾÷µ¥ÀÌÆ® (Æ÷ÇÔ ¶Ç´Â Á¦¿Ü Æ®·£Àè¼Ç) È®ÀÎÇÑ ´ÙÀ½ ÀÌ °³Ã¼ÀÇ ¿¬°áÀ» ´Ý½À´Ï´Ù ÇÕ´Ï´Ù.
- ÆÇµ¶±â¸¦ ´Ý°í Àü¿¡ µ¥ÀÌÅ͸¦ Àд µ¿¾È ±× ¿¬°áÀ» ´Ù½Ã ¿¾î¾ß ÇÕ´Ï´Ù.
180223
(http://support.microsoft.com/kb/180223/EN-US/
)
µ¿±âÈ ÀÐ±â ¹× ¾²±â µÎ DAO ÇÁ·Î¼¼½º °£ ¹æ¹ý
±â¼ú ÀÚ·á: 200300 - ¸¶Áö¸· °ËÅä: 2004³â 7¿ù 13ÀÏ È¿äÀÏ - ¼öÁ¤: 1.1
º» ¹®¼ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
- Microsoft OLE DB Provider for Jet 4.0
| kbmt kbdatabase kbhowto kbjet kbprovider KB200300 KbMtko |
±â°è ¹ø¿ªµÈ ¹®¼Áß¿ä: º» ¹®¼´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼ ¹× ±â°è ¹ø¿ªµÈ ¹®¼¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼ ±â°è ¹ø¿ª ¹®¼¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.
´õ ÀÌ»ó Áö¿øµÇÁö ¾Ê´Â Á¦Ç°ÀÇ KB ³»¿ë¿¡ ´ëÇÑ °íÁö »çÇ×ÀÌ ¹®¼¿¡¼´Â Microsoft¿¡¼ ´õ ÀÌ»ó Áö¿øÇÏÁö ¾Ê´Â Á¦Ç°¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. µû¶ó¼ ÀÌ ¹®¼´Â "ÀÖ´Â ±×´ë·Î" Á¦°øµÇ¸ç ¾÷µ¥ÀÌÆ®µÇÁö ¾Ê½À´Ï´Ù.