рдПрдХ рдмрдбрд╝реЗ, рдмрдбрд╝реЗ рджреЗрд╢ рдореЗрдВ, рдЫреЛрдЯреЗ, рдмрд╣реБрдд рдЫреЛрдЯреЗ рд▓реЛрдЧ рд░рд╣рддреЗ рдереЗред рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рдмрдбрд╝реЗ, рдпрд╛ рдмрдбрд╝реЗ рджреЗрд╢ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рдЧрд╣рд░рд╛, рдЧрд╣рд░рд╛ рдЧрдбреНрдврд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЦреИрд░, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рд╡рд╣ рдЕрдХреЗрд▓реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреА рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрднреА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЗрд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИредрдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдЧрдбреНрдвреЗ рдереЗ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдерд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд╣реБрдд рдмрдбрд╝рд╛, рдпрд╛ рдЕрдирдВрдд, рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реЗ рджреЗрд╢ рдХреА рд╕рд░рдХрд╛рд░ рдХреЛ рдкрддрд╛ рдерд╛ рдХрд┐ рдЧрдбреНрдвреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдФрд░ рдпрд╣ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рд╕реЛ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпрд╛ рдЙрди рд╕рдмрд╕реЗ рд╕реБрдВрджрд░, рдирд┐рдбрд░ рдФрд░ рд╕рд╛рд╣рд╕реА, рдЪрддреБрд░ рдФрд░ рд╕рдмрд╕реЗ рдЪрддреБрд░ рдкреБрд░реБрд╖реЛрдВ рдФрд░ рдорд╣рд┐рд▓рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рд╕реБрдВрджрд░ рд░рд╛рдЬреНрдп рдореЗрдВ рдереЗред
рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╡реЗ рдкрдврд╝реЗ рдФрд░ рд╕реЛ рдЧрдП, рд╕реЛ рдЧрдП рдФрд░ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рд╕реЛ рдЧрдП, рд╕реЛ рдЧрдП, рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдХрдИ рдмрд╛рд░ред
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ-рд╕реЗ-рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд╛рдпрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЧрдбреНрдвреЗ рдмрдиреЗ рд░рд╣реЗред рд▓реЗрдХрд┐рди рдирдП рдирд╛рдпрдХ рдЖрдП, рд╕рд┐рд░реНрдл рдЫреЛрдЯреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╡рд╣реА, рдмрд╣реБрдд рд╣реА, рдФрд░ рд╡рд╣реА рдХрд░рдиреЗ рд▓рдЧреЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рддрдм рддрдХ рдХреЗ рд▓рд┐рдП рдЪрд▓рддрд╛ рд░рд╣рд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдмрдирд╛ рд░рд╣рд╛ред рдФрд░ рдПрдХ рдареАрдХ рджрд┐рди, рдЧрдбреНрдвреЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЦреБрдж, рдФрд░ рдХрд╣реАрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЬрдЧрд╣ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ ...
рд╕рднреА рд╕рдВрдпреЛрдЧ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣реИ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рднреА рдХрднреА рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ! рд╕рдЪреНрдЪрд╛, рд╕рдЪреНрдЪрд╛, рдЕрдЪреНрдЫрд╛ рдпрд╛ рд▓рдЧрднрдЧ рд╕рдЪредрдРрд╕реЗ рд╣реА рдПрдХ рдЧрдбреНрдвреЗ рдХреА рдЪрд░реНрдЪрд╛ рдмрд╛рдж рдореЗрдВ рдХреА рдЬрд╛рдПрдЧреАред рд▓реЗрдХрд┐рди рдХрдм рд╕реЗ рдЧреЛрдкрдиреАрдпрддрд╛ рдиреАрддрд┐ рд╣рдо рдЗрд╕рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓
рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдПрдХ
рджрд╕реНрддрд╛рд╡реЗрдЬ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╕рд╛рдордЧреНрд░реА рд▓рдЧрднрдЧ рдЕрдирдиреНрдп рд╣реЛрдЧреА рдЕрдирд╛рдЬ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реАред
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рдПрдордПрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕рд░реНрд╡рд░ рдЖрдкрдХреЗ рд╕рднреА рдореЗрд▓ рдХреЛ рдХрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдЙрд╕рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдпрд╣рд╛рдБ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдореИрдВ рдпрд╣рд╛рдБ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБред
рдЪреЗрддрд╛рд╡рдиреА: рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ, рдФрд░ рдЖрдкрдХрд╛ рдкреВрд░рд╛ рдЬреАрд╡рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЪреЗрддрд╛рд╡рдиреА рджреАред
рдкрд░рд┐рдЪрдп
рдПрдордПрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕рд░реНрд╡рд░ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ) Microsoft рдЙрддреНрдкрд╛рдж рд▓рд╛рдЗрди рдореЗрдВ рдлреНрд▓реИрдЧрд╢рд┐рдк рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЖрдк
рд╡рд┐рдХреА рдореЗрдВ рдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдореЗрд▓, рдХреИрд▓реЗрдВрдбрд░ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ "рд╣рд╛рд░рд╡реЗрд╕реНрдЯрд░" рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдордПрд╕ рдЙрддреНрдкрд╛рджреЛрдВ (SharePoint, TFS, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рдПрдХреАрдХрд░рдг рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╣рдо рдЗрд╕рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд▓реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдпрд╣ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рдПрдкреАрдЖрдИ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рдо Exchange 2010 (
рдореЗрд▓рдмреЙрдХреНрд╕ рд╕рд░реНрд╡рд░ ) рдХреА рдореЗрд▓рдмреЙрдХреНрд╕ рднреВрдорд┐рдХрд╛ рдкрд░ рдореЗрд▓рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ (
рд╕реАрдПрдПрд╕ рд╕рд░реНрд╡рд░ ) рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдФрд░ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдбрдмреНрд▓реНрдпреВрдП, рдЖрд░рдкреАрд╕реА (рдЖрдЙрдЯрд▓реБрдХ), рдкреАрдУрдкреА 3 / рдЖрдИрдПрдордПрдкреА 4ред
рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдПрдХреНрд╕рдЪреЗрдВрдЬ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рдХреА
рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ (рдПрдХреНрд╕рдЪреЗрдВрдЬ 2007 рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рднреВрдорд┐рдХрд╛ рдереА), рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдореЗрд▓рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╣рдо рдЖрдЬ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕
* .edb рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╡реЗ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ Mailbox \ <рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╛рдо> рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реЗрдирджреЗрди рд▓реЙрдЧ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреНрдп рдлрд╛рдЗрд▓реЗрдВ рд╡рд╣рд╛рдВ рд░рдЦреА рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬ * .edb рд╣реИред
рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рдЦреЛрджрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрди (ESE) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ! рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ ESE рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА ese.dll (рдпрд╛ esent.dll) рдореЗрдВ рд╣реИред рдпрд╣
рд╕рднреА Exchange
рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдореВрд▓ рд╣реИ ред рдИрдПрд╕рдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпреЛрдВ, рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ 2010 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк Exchange рдореБрдЦреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ ese.dll рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдИрдПрд╕рдИ рд╡рд┐рд╡рд░рдг рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛
рд╕рд╛рд░рдгреАрдмрджреНрдз рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕реНрддрдВрднреЛрдВ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред рддрд╛рд▓рд┐рдХрд╛ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЖрдзрд╛рд░ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ: рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛, рдЦреЛрдЬ, рдЖрджрд┐ред
рдХреБрд▓ рдореЗрдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ .bb рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд▓рдмреЙрдХреНрд╕ рдмреЙрдХреНрд╕ рднреВрдорд┐рдХрд╛рдУрдВ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ ESE (ese.dll) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рд╣рдо рдХреЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓, рд╕рд╛рде рд╣реА рд╕рднреА рдХреЙрд▓рдо рдФрд░ рдХреЙрд▓рдо рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ рд╣рдо рдХрднреА рдирд╣реАрдВ рдЬрд╛рди
рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдХреЗрд╡рд▓ рдПрдордПрд╕ рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдХреБрдЫ рдФрд░ рд▓реЛрдЧред рдЗрди рдмрд╣реБрдд рд╣реА рд╕реНрддрдВрднреЛрдВ рдореЗрдВ, рдореЗрд▓рдмреЙрдХреНрд╕реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд
рд▓рдЧрднрдЧ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдореЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдЯреНрд░реЗрдирд┐рдВрдЧ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008-2010
- рдПрдордПрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕рд░реНрд╡рд░ 2010 (рдХреЛрдИ рднреА рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╣рдо 2010 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)
- C / C ++ рдХрд╛ рдЬреНрдЮрд╛рди
рдмрджрд▓реЗ рдореЗрдВ, рд╣рдо рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк
Exchange рдкреНрд░рдмрдВрдзрди рдХрдВрд╕реЛрд▓ (
EMC ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ (рдЙрд╕реА EMC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВрдЧреЗ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рд╣реЛ рдФрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдореЗрд▓рдмреЙрдХреНрд╕ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, OWA рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдореЗрд▓рдмреЙрдХреНрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдИрдбреАрдмреА рдлрд╝рд╛рдЗрд▓ред рдЖрдзрд╛рд░ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕реЗ EMC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдПред
рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ, ese.dll рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╣рдо рдПрдХ рдХрдВрд╕реЛрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдЪреЗрдВрдЬ 2010 (рд╕рднреА рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд) рдореЗрдВ
рдХреЗрд╡рд▓ 64 рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдлрд┐рд░ рд╣рдореЗрдВ x64 рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдпрдерд╛, рд╣рдо рдмрд╕ рдЕрдкрдиреЗ рдкрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ ese.dll рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдУрдПрд╕ рдХреЗ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ 7 рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рдпреВрдирд┐рдХреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпреВрдирд┐рдХреЛрдб рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдирдП рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ x64 рдФрд░ рдпреВрдирд┐рдХреЛрдб (рд╕рд╛рдорд╛рдиреНрдп - рдпреВрдирд┐рдХреЛрдб рдХреИрд░реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдЕрдм рд╣рдо ESE рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╣реЗрдбрд░ рдлрд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
# рдЕрд▓рдЧ рдХрд░реЗрдВ <esent.h>
рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╡реАрдПрд╕ 2008 рдХреЗ рдмрд╛рдж рд╕реЗ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИред
Stdafx.h рдореЗрдВ рд╣рдо JET рд╡рд░реНрдЬрди (ESE) рдХреЗ рд╕рд╛рде 2
рдбрд┐рдлрд╛рдЗрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо API рдХреЗ рдпреВрдирд┐рдХреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
#define JET_UNICODE
#define JET_VERSION 0x0600
рдЦреИрд░, рдЕрдм рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдИрдПрд╕рдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рд╕реНрддрдВрднреЛрдВ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ: рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рд╕реНрддрдВрднреЛрдВ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛рдПрдВ рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
typedef рд╕рдВрд░рдЪрдирд╛ tagDBColumnsInfo
{
std :: wstring sColumnName ;
std :: рд╡реЗрдХреНрдЯрд░ < std :: wstring > sColumnValues ;
} SDBColumnInfo ;
typedef рд╕рдВрд░рдЪрдирд╛ tagDBTableInfo
{
std :: wstring sTableName ;
std :: рд╡реЗрдХреНрдЯрд░ < SDBColumnInfo > sColumnInfo ;
} SDBTableInfo ;
typedef рд╕рдВрд░рдЪрдирд╛ tagDBTablesInfo
{
std :: wstring sDBName ;
std :: рд╡реЗрдХреНрдЯрд░ < SDBTableInfo > sTablesInfo ;
} SDBTablesInfo ;
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ DLL рдХреЛ рд╕реНрд╡рдпрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдХрд░реЗрдВ, :: LoadLibrary (...) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рд╣рдо ese.dll рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- JetInit
- JetCreateInstanceW
- JetBeginSessionW
- JetAttachDatabaseW
- JetOpenDatabaseW
- JetCloseDatabase
- JetDetachDatabaseW
- JetTerm
- JetSetSystemParameterW
- JetOpenTableW
- JetGetColumnInfoW
- JetRetrieveColumns
- JetMove
- JetGetTableColumnInfoW
- JetCloseTable
- JetGetSystemParameter
рдмреЗрд╕ рдУрдкрдирд┐рдВрдЧ
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реАрдзреЗ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред MSDN рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ
JET_paramDatabasePageSize (esent.h) рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдбреЗрдЯрд╛рдмреЗрд╕ рдкреГрд╖реНрда рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдХрдард┐рдирд╛рдИ рдЖрддреА рд╣реИред рдХреЗрд╡рд▓ EDB рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдЗрд╕ рдорд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╣реАрдВ рдЦреБрд▓реЗрдЧрд╛ред рдпрд╣ eseutils (рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд░рд╛рд╕реНрддрд╛ рд▓рд┐рдпрд╛ рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдореВрд▓реНрдп рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ 4096 рдХрд╛ рдЧреБрдгрдХ рд╣реИред рдпрд╣ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЪреЗрдВрдЬ 2010 рдХреЗ рд▓рд┐рдП
32768 рд╣реИ ред
рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреГрд╖реНрда рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
JET_ERR jRes = _JetSetSystemParameter ( NULL , NULL , JET_paramDatabasePageSize, 32768 , NULL ) ;
JET_ERR рд╕рд┐рд░реНрдл рдПрдХ рд▓рдВрдмрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╣реИред рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ JetGetSystemParameter рдлрд╝рдВрдХреНрд╢рди (ala :: FormatMessage (...): рдХреЗ рд╕рд╛рде рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
JetGetSystemParameter ( m_instance, m_sesid, JET_paramErrorToString,
reinterpret_cast < JET_API_PTR * > ( & jeterror ) , cBuff, MAX_BUFFER_SIZE ) ;
рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (m_cLog рдореЗрд░рд╛ рдЖрдВрддрд░рд┐рдХ рд▓реЙрдЧрд┐рдВрдЧ рд╡рд░реНрдЧ рд╣реИ):
#define WRITE_TO_LOG_AND_RETURN_IF_ERROR (jeterror) \
рдЕрдЧрд░ (рдЬреЗрдЯреЗрд░рд┐рдпрд░) {\ _
char cBuff [MAX_BUFFER_SIZE] = {0}; \
рдЕрдЧрд░ (m_instance) _JetGetSystemParameter (m_instance, m_sesid, \ _
JET_paramErrorToString, reinterpret_cast <JET_API_PTR *> (& jeterror), cBuff, MAX_BUFFER_SIZE); \
m_cLog.write (m_sEDBPath, cBuff, jeterror, __FILE__, __LINE__); \
рд╡рд╛рдкрд╕реА рдШрд╛рдЯ; }
рдЕрдм рдЖрдкрдХреЛ Exchange рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ
рдХреЙрд▓рдмреИрдХ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рд╣рдо рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддреЗ:
jRes = _JetSetSystemParameter ( NULL , NULL , JET_paramDisableCallbacks, true , NULL ) ;
рдЕрдЧрд▓рд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛
рдЙрджрд╛рд╣рд░рдг (JET_INSTANCE m_instance) рдмрдирд╛рдПрдВ:
jRes = _JetCreateInstance ( & m_instance, NULL ) ;
рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрднрд┐рдХ рдХрд░рддреЗ рд╣реИрдВ:
jRes = _JetInit ( & m_instance ) ;
рдПрдХ рдирдпрд╛ рд╕рддреНрд░ рд╢реБрд░реВ (JET_SESID m_sesid):
jRes = _JetBeginSession ( m_instance, & m_sesid, NULL , NULL ) ;
рд╣рдо рдЕрдкрдиреА рдИрдбреАрдмреА рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
jRes = _JetAttachDatabase ( m_sesid, L "Demo.edb" , JET_bitDbReadOnly ) ;
рдФрд░ рдЗрд╕реЗ рдЦреЛрд▓реЗрдВ:
jRes = _JetOpenDatabase ( m_sesid, L "Demo.edb" , NULL , & m_dbid, JET_bitDbReadOnly ) ;
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрджрд┐ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди JET_errSuccess рд╡рд╛рдкрд╕ рдЖ рдЧрдП, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рд╕рд╛рдордЧреНрд░реА рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХреБрдЫ рдХреЛрдб рд╣реИред рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЖрдк рдЙрд╕реЗ рджреЛрдкрд╣рд░ рдореЗрдВ рдЖрдЧ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗредрд╣рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ
рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
JET_ERR CJetDBReaderCore :: EnumRootTables ( SDBTablesInfo рдФрд░ sDBTablesInfo )
{
sDBTablesInfoред sDBName = m_sEDBPath ;
JET_ERR jRes = OpenTable ( ROOT_TABLE ) ;
рдЕрдЧрд░ ( jRes == JET_errSuccess )
{
JET_COLUMNBASE sNameInfo,
sTypeInfo ;
рдЕрдЧрд░ ( ReadFromTable ( ROOT_TABLE, NAME_COLUMN, sNameInfo ) &&
! ReadFromTable ( ROOT_TABLE, TYPE_COLUMN, sTypeInfo ) :
{
JET_RETRIEVECOLUMN sJetRC [ 2 ] ;
sJetRC [рдХреЛ реж ] ред columnid = sNameInfoред рдХреЙрд▓рдо ;
sJetRC [рдХреЛ реж ] ред cbData = sNameInfoред cbMax ;
sJetRC [рдХреЛ реж ] ред itagSequence = 1 ;
sJetRC [рдХреЛ реж ] ред рдЪрдХреНрдХреА = 0 ;
CHAR szName [ MAX_BUFFER_SIZE ] ;
sJetRC [рдХреЛ реж ] ред pvData = szName ;
sJetRC [ 1 ] ред columnid = sTypeInfoред рдХреЙрд▓рдо ;
sJetRC [ 1 ] ред cbData = sTypeInfoред cbMax ;
sJetRC [ 1 ] ред itagSequence = 1 ;
sJetRC [ 1 ] ред рдЪрдХреНрдХреА = 0 ;
рд╢рдмреНрдж wType ;
sJetRC [ 1 ] ред pvData = & wType ;
рдХрд░рдирд╛
{
jRes = GetColumns ( ROOT_TABLE, sJetRC, 2 ) ;
рдЕрдЧрд░ ( jRes ! = JET_errSuccess ) рд╡рд╛рдкрд╕реА jRes ;
рдЕрдЧрд░ ( wType == 1 )
{
szName [ sJetRC [рдХреЛ реж ] ред cbActual ] = 0 ;
SDBTableInfo sTableInfo ;
std :: string tmp ( szName ) ;
sTableInfoред sTableName рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( tmpред рд╢реБрд░реВ ) ( ) , tmpред рдЕрдВрдд ( ) ;
sDBTablesInfoред sTablesInfo ред push_back ( sTableInfo ) ;
}
} рдЬрдмрдХрд┐ ( ! TableEnd ( ROOT_TABLE ) ) ;
}
jRes = CloseTable ( ROOT_TABLE ) ;
}
рд╡рд╛рдкрд╕реА jRes ;
}
рдЬрд╣рд╛рдВ:
- ROOT_TABLE - "MSysObjects", рдЪрд▓реЛ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд░реВрдЯ рдХрд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдиреНрдп рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред
- NAME_COLUMN - "рдирд╛рдо", рдПрдХ рд╕реНрддрдВрдн рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдирд╛рдо рд╣реИрдВред
- TYPE_COLUMN - "рдкреНрд░рдХрд╛рд░", рдПрдХ рд╕реНрддрдВрдн рдЬрд┐рд╕рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╣рдо рд░реВрдЯ рдЯреЗрдмрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдпрд╣
JetOpenTable рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
JET_ERR CJetDBReaderCore :: OpenTable ( std :: wstring sTableName )
{
std :: map < std :: wstring , JET_TABLEID > :: const_iterator iter = m_tablesред find ( sTableName ) ;
рдЕрдЧрд░ ( iter == m_tablesред рдЕрдВрдд ( ) )
{
JET_TABLEID рдореЗрдЬрд╝рд┐рдж ( 0 ) ;
JET_ERR jRes = _JetOpenTable ( m_sesid, m_dbid, sableableNameред C_str ( ) , NULL ,
0 , JET_bitTableReadOnly, & tableid ) ;
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes )
m_tables [ sTableName ] = tableid ;
}
рд╡рд╛рдкрд╕реА JET_errSuccess ;
}
рдЖрдЧреЗ, рд╣рдореЗрдВ ReadFromTable рдХреЗ рдЕрдВрджрд░ рдХреЙрд▓рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕рдХреА рдЖрдИрдбреА рдЪрд╛рд╣рд┐рдП:
JET_ERR CJetDBReaderCore :: ReadFromTable (
std :: wstring sTableName,
std :: wstring sColumnName,
JET_COLUMNBASE & sColumnBase )
{
std :: map < std :: wstring , JET_TABLEID > :: const_iterator iter = m_tablesред find ( sTableName ) ;
рдЕрдЧрд░ ( iter ! = m_tablesред рд╕рдорд╛рдкреНрддрд┐ ( ) )
{
JET_ERR jRes = _JetGetColumnInfo ( m_sesid, m_dbid, sTableNameред C_str ( ) ред
sColumnNameред c_str ( ) , рдФрд░ sColumnBase, sizeof ( JET_COLUMNBASE ) , JET_ColInfoBase ) ;
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes )
}
рд╡рд╛рдкрд╕реА JET_errSuccess ;
}
Id рднрд░рдиреЗ рдХреЗ рдмрд╛рдж
JET_RETRIEVECOLUMN рд╕рдВрд░рдЪрдирд╛ рднрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
GetColumns рдХреЗ рдЕрдВрджрд░ JetRetrieveColumns рдХрд░рддреЗ рд╣реИрдВ:
JET_ERR CJetDBReaderCore :: GetColumns (
std :: wstring sTableName,
JET_RETRIEVECOLUMN * sJetRC,
INT рдПрдирдХрд╛рдЙрдВрдЯ )
{
std :: map < std :: wstring , JET_TABLEID > :: const_iterator iter = m_tablesред find ( sTableName ) ;
рдЕрдЧрд░ ( iter ! = m_tablesред рд╕рдорд╛рдкреНрддрд┐ ( ) )
{
JET_ERR jRes = _JetRetrieveColumns ( m_sesid, iter - > second, sJetRC, nCount ) ;
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes )
}
рд╡рд╛рдкрд╕реА JET_errSuccess ;
}
рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдорд┐рд▓реА рд╣реИ, рдЪрд▓реЛ рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╕рд╣реЗрдЬ рд▓реЗрдВрдЧреЗред
рд╣рдо рдХреЙрд▓рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ:
JET_ERR CJetDBReaderCore :: EnumColumns (
SDBTableInfo рдФрд░ sTableInfo,
std :: рд╕реВрдЪреА < SColumnInfo > & sColumnsInfo )
{
рдЕрдЧрд░ ( OpenTable ( sTableInfoред sTableName ) )
{
JET_COLUMNLIST sColumnInfo ;
GetTableColumnInfo ( sTableInfoред STableName , рдФрд░ sColumnInfo ) ;
MoveToFirst ( sTableInfoред STableName ) ;
char szNameBuff [ MAX_BUFFER_SIZE ] ;
рдХрд░рдирд╛
{
SCOLumnInfo ci ;
JET_RETRIEVECOLUMN sJetRC [ 4 ] ;
sJetRC [рдХреЛ реж ] ред columnid = sColumnInfoред columnidcolumnname ;
sJetRC [рдХреЛ реж ] ред cbData = sizeof ( szNameBuff ) ;
sJetRC [рдХреЛ реж ] ред itagSequence = 1 ;
sJetRC [рдХреЛ реж ] ред рдЪрдХреНрдХреА = 0 ;
sJetRC [рдХреЛ реж ] ред pvData = szNameBuff ;
sJetRC [ 1 ] ред columnid = sColumnInfoред рдХреЙрд▓рдорд┐рдбреЙрд▓реНрдХрд┐рдирд┐рдб ;
sJetRC [ 1 ] ред cbData = sizeof ( DWORD ) ;
sJetRC [ 1 ] ред itagSequence = 1 ;
sJetRC [ 1 ] ред рдЪрдХреНрдХреА = 0 ;
sJetRC [ 1 ] ред pvData = & ciред dwId ;
sJetRC [ 2 ] ред columnid = sColumnInfoред рд╕реНрддрдВрднрд▓реЗрдЦ ;
sJetRC [ 2 ] ред cbData = sizeof ( DWORD ) ;
sJetRC [ 2 ] ред itagSequence = 1 ;
sJetRC [ 2 ] ред рдЪрдХреНрдХреА = 0 ;
sJetRC [ 2 ] ред pvData = & ciред dwType ;
sJetRC [ 3 ] ред columnid = sColumnInfoред columnidcbMax ;
sJetRC [ 3 ] ред cbData = sizeof ( DWORD ) ;
sJetRC [ 3 ] ред itagSequence = 1 ;
sJetRC [ 3 ] ред рдЪрдХреНрдХреА = 0 ;
sJetRC [ 3 ] ред pvData = & ciред dwMaxSize ;
GetColumns ( sTableInfoред STableName , sJetRC, 4 ) ;
ciред sName рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ ( reinterpret_cast < wchar_t * > ( sJetRC [ 0 ] ред pvData ) , sJetRC [ 0 ] ред cbActual / 2 ) ;
SDBColumnInfo sDBColumnInfo ;
sDBColumnInfoред sColumnName = ciред sName ;
sColumnsInfoред push_back ( ci ) ;
sTableInfoред sColumnInfo ред push_back ( sDBColumnInfo ) ;
}
рдЬрдмрдХрд┐ ( TableEnd ( sTableInfoред sTableName ) ) ;
CloseTable ( sTableInfoред STableName ) ;
}
рд╡рд╛рдкрд╕реА JET_errSuccess ;
}
рдпрд╣рд╛рдВ рд╣рдо рдЯреЗрдмрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░реВрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЬреЛ рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕рднреА рдХреЙрд▓рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рдПрдХ рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛:
JET_ERR CJetDBReaderCore :: MoveToFirst ( std :: wstring sTNIS )
{
std :: map < std :: wstring , JET_TABLEID > :: const_iterator iter = m_tablesред find ( sTableName ) ;
if ( iter ! = m_tablesред end ( ) ) // рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓рд╛ рд╣реИ
{
JET_ERR jRes = _JetMove ( m_sesid, iter - > second, JET_MoveFirst, 0 ) ;
BOOL bIsEmpty = ( jRes == JET_errNoCurrentRecord ) ;
рдЕрдЧрд░ ( bIsEmpty ) рд░рд┐рдЯрд░реНрди jRes ; // рдЦрд╛рд▓реА рд╣реЛ рддреЛ рдЗрдирдЧреНрдиреЛрд░ рдХрд░реЗрдВ
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes ) ;
}
рд╡рд╛рдкрд╕реА NO_ERROR ;
}
JET_ERR CJetDBReaderCore :: GetTableColumnInfo ( WP
std :: wstring sTableName,
JET_COLUMNLIST * pCl,
BOOL bReplaceOld )
{
JET_ERR jRes = JET_errSuccess ;
std :: map < std :: wstring , JET_TABLEID > :: itter iter = m_tablesред find ( sTableName ) ;
рдЕрдЧрд░ ( iter ! = m_tablesред рд╕рдорд╛рдкреНрддрд┐ ( ) )
{
jRes = _JetGetTableColumnInfo ( m_sesid, iter - > рджреВрд╕рд░рд╛, NULL , pCl,
sizeof ( JET_COLUMNLIST ) , JET_ColInfoList ) ;
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes )
if ( bReplaceOld ) // рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдЦреБрд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
{
jRes = CloseTable ( sTableName ) ;
m_tables [ sTableName ] = pCl - > рдЯреЗрдмрд▓рд┐рдб ;
}
рдЕрдиреНрдпрдерд╛
{
jRes = _JetCloseTable ( m_sesid, pCl - > tableid ) ;
WRITE_TO_LOG_AND_RETURN_IF_ERROR_2 ( jRes )
}
}
рд╡рд╛рдкрд╕реА jRes ;
}
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдкреЛрд╕реНрдЯ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рд╕рдордп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЖрдзрд╛рд░ рдХреЛ рдкрдврд╝реЗрдВрдЧреЗ, рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдЖрдзрд╛рд░ рдХрд╛ "рдлрдЯрд╛ рд╣реБрдЖ" рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
PS рдпрд╣ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ
рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ, рдпрд╛ рдЫрдВрдЯрдиреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЧреИрдЧ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЙрди рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВ, рдпрд╣ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреЗрдЬ рдкрд░ рд╕рднреА рдЬрдЧрд╣ "рдЦрд╛рдПрдВ" рдирд╣реАрдВред рдЖрдкрдХреА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдкреАрдкреАрдПрд╕ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐, рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреА рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдФрд░ рдЗрд╕ рдкрдж рдкрд░ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ
- MSDN рдкрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрди
- рд░реВрд╕реА рдореЗрдВ рдПрдХ рд▓реЗрдЦ (рдИрдПрд╕рдИ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ RuNet рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд▓реЗрдЦ)
- рдИрдПрд╕рдИ рдлрд╝реАрдЪрд░ рдЙрджрд╛рд╣рд░рдг