Windows Azure SQL VM рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рдиред BLOB рднрдВрдбрд╛рд░рдг + рдмрд╛рдХреА

рдЕрдм рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ SQL рд╕рд░реНрд╡рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ SQL рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд╕реЗ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдерд╛рдиреАрдп SQL рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╣реИ, рдпрд╣ рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП, рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рднрд╛рдЧ рдХреЛ Azure SQL VM рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ (рдпрд╛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ) рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдмреИрдХрдЕрдк рдХреЙрдкреА, рдбрд┐рдЯреИрдЪ, рдбреЗрдЯрд╛-рдЯреАрдпрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрддреНрдпрд╛рджрд┐ рдмрдирд╛рдХрд░, рдлрд╛рдЗрд▓ рдХреЛ Azure SQL VM рдореЗрдВ рдбрд┐рд▓реАрд╡рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреИрдХрдЕрдк, рд╕рдВрд▓рдЧреНрди, рддреИрдирд╛рдд / рдЖрдпрд╛рдд рдбреЗрдЯрд╛ рд╕реНрддрд░реАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ , рдЖрджрд┐ рдкрд╣рд▓реА рдФрд░ рдЕрдВрддрд┐рдо рдХреНрд░рд┐рдпрд╛ DBA рдХреЗ рд╕рд╛рде рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдЙрдард╛рддреА рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ SQL рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ (.bak, .mdf, .bacpac, ...) рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдерд▓рдЧ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдПрдбрд╡реЗрдВрдЪрд░рд╡рд░реНрдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЙрд╕рдХреА рдмреИрдХрдЕрдк рдкреНрд░рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ:

backup database AdventureWorks2012 to disk = 'c:\Temp\AdventureWorks2012.bak' with init, compression, stats = 10
рд▓рд┐рдкрд┐ рез

рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рдг рдХреЗ, SQL рд╕рд░реНрд╡рд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рджреВрд░рд╕реНрде рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдорд╛рдирдХ рдХреЙрдкреА / рдкреЗрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рднреА рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрд╕рдлрд▓рддрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░, рд╕рд╣реА рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ, рдФрд░ рдПрдлрд╝рдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рдпреЗ рддрд░реАрдХреЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдмреВрдБрдж рдХреЗ рд░реВрдк рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдБ рд╕реЗ рдХреНрд▓рд╛рдЙрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдмрдирд╛рддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдЕрдХрд╛рдЙрдВрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ vhds рдирд╛рдо рдХрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреА рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдХ рдПрдХ рдмреНрд▓реЙрдм рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реЛрддреА рд╣реИред рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕реА рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Azure рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рдЕрдВрджрд░, рдбреЗрдЯрд╛ рдХреЛ рдмреНрд▓рдмреНрд╕ рдпрд╛ рдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - Windows Azure рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ Azure рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдФрд░ рд╡реНрдпрд╡рд╕рд╛рдп Analytics рджреЗрдЦреЗрдВред рдЯреЗрдмрд▓реНрд╕ рдХрдбрд╝рд╛рдИ рд╕реЗ рд╕рдВрдмрдВрдзрдкрд░рдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдпреЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╡рд╛рд▓реЗ рдЬреЛрдбрд╝реЗ рдХреЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕реЗрдЯ рд╣реИрдВ рдЬреЛ рдПрдХ рдмрд╛рд░ SQL рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рдХрд╣рд▓рд╛рддрд╛ рд╣реИ - SQL Azure рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдЦреЗрдВред рдПрд╕рдбреАрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ SQL рдПрдЬрд╝реНрдпреЛрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреЗрдЬ рд╣реИред рдмреНрд▓реЙрдмреНрд╕ рдмреНрд▓реЙрдХ рдФрд░ рдкреЗрдЬ рд╣реИрдВред рдмреНрд▓реЙрдХ рдмреНрд▓рдмреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЙрдк-рдбреЙрдХ рдкрд╣реБрдВрдЪ, рдкреГрд╖реНрда - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреГрд╖реНрда рд╕рдВрд░рдЪрдирд╛ рдЖрдкрдХреЛ рдмреВрдБрдж рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ - blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/using-windows-azure-page-blobs-and-how-to-blyly-upload-and-and рдбрд╛рдЙрдирд▓реЛрдб-рдкреГрд╖реНрда- blobs.aspx рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдХ рдХреЛ рдкреЗрдЬ рдмреНрд▓рдмреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд▓рдм рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рднрдВрдбрд╛рд░рдг рдЦрд╛рддреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред AdventureWorks2012.bak рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП tststorage рдЦрд╛рддреЗ рдореЗрдВ рдПрдХ рдХрдВрдЯреЗрдирд░ 1 рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдБред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рдмреВрдБрджреЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрдБрдж рдХрд┐рд╕реА рдХреЛ рднреА рдХрд┐рд╕реА рднреА рдмреВрдБрдж рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдПрдХ рдирд┐рдЬреА рдХрдВрдЯреЗрдирд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмреВрдБрдж рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣рдг рдЦрд╛рддрд╛ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рдВрдкрд╛рджрди рдХрдВрдЯреЗрдирд░ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕реНрддрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1 рдореЗрдВ рдмрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреИрдХрдЕрдк рдХреЛ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдмреНрд▓реЙрдм рдХреЗ рд░реВрдк рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрд▓рд╛рдЙрдб рдореЗрдВ (рд╕рд╛рде рд╣реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХрддрд╛рд░реЛрдВ рдкрд░) рдмреНрд▓рдмреНрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдк REST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ (HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ / рд░рд┐рд╕реНрдкрд╛рдВрд╕) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрддреА рд╣реИред рдмреВрдБрдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП REST API рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ - msdn.microsoft.com/en-us/library/dd135733.aspx ред рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдмреНрд▓рдмреНрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реИрдВ: tststorage.blob.core.windows.net/container1?restype=container&comp=list
рдХрдВрдЯреЗрдирд░ рдХрдВрдЯреЗрдирд░ 1 рдЕрдм рдЦрд╛рд▓реА рд╣реИред AdventureWorks2012.bak рдХреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ PUT рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;
System.Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;
System.IO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;
System.Security.Cryptography рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;
System.Text рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;
System.Globalization рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;

рдХрдХреНрд╖рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо
{
рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ [] args)
{
string fileFullName = @ "c: \ Temp \ AdventureWorks2012.bak"; //@Filec:\Temp\aaa.txt ";

string storageAccount = "tststorage";
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдВрдЯреЗрдирд░ рдирд╛рдо = "рдХрдВрдЯреЗрдирд░ 1";
string accessKey = "xws7rilyLjqdw8t75EHZbsIjbtwYDvpZw790lda0L1PgzEqKHxGNIDdCdQlnvW5LdWWK/QOZFTs5xE4P93A5A =A =";

HttpWebRequest рдкреБрдирдГ ));

FileStream fs = File.OpenRead (fileFullName);
рдмрд╛рдЗрдЯ [] рдлрд╝рд╛рдЗрд▓рдХрдВрдЯреЗрдВрдЯ = рдирдИ рдмрд╛рдЗрдЯ [f..Length];
fs.Read (fileContent, 0, fileContent.Length);
fs.Close ();

req.Method = "PUT";
req.ContentLength = fileContent.Length;
req.Headers.Add ("x-ms-blob-type", "BlockBlob");
req.Headers.Add ("x-ms-date", DateTime.UtcNow.ToString ("R", CultureInfo.InvariantCulture);
req.Headers.Add ("x-ms-version", "2011-08-18");
string canonicalizedString = BuildCanonicalizedString (req, String.Format ("/ {0} / {1} / {2}", StorageAccount, рдХрдВрдЯреЗрдирд░ рдирд╛рдо, Path.GetFileName (fileFullName));
req.Headers ["рдкреНрд░рд╛рдзрд┐рдХрд░рдг"] = CreateAuthorizationHeader (canonicalizedString, storageAccount, accessKey);
req.Timeout = 100 * 60 * 1000;
рд╕реНрдЯреНрд░реАрдо s = req.GetRequestStream ();
s.Write (fileContent, 0, fileContent.Length);

рддрд╛рд░реАрдЦ рд╕рдордп dt = DateTime.Now;
req.GetResponse ();
System.Diagnostics.Debug.WriteLine (DateTime.Now - dt);

}

рд╕реНрдерд┐рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ CreateAuthorizationHeader (рд╕реНрдЯреНрд░рд┐рдВрдЧ canonicalizedString, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣рдг
{
HMACSHA256 hmacSha256 = рдирдпрд╛ HMACSHA256 (Convert.FromBase64String (accessKey));
рдмрд╛рдЗрдЯ [] dataToHMAC = Encoding.UTF8.GetBytes (canonicalizedString);
рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ = Convert.ToBase64String (hmacSha256.ComputeHash (dataToHMAC));
рд╡рд╛рдкрд╕реА "SharedKey" + storageAccount + ":" + рд╣рд╕реНрддрд╛рдХреНрд╖рд░;
}

рд╕реНрдЯреИрдЯрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрд┐рд▓реНрдбрдХреИрдиреЛрд▓рд╛рдЗрдЬрд╝реНрдб рд╕реНрдЯреНрд░реАрдВрдЧ (HttpWebRequest req, string canonicalizedResource)
{
StringBuilder sb = new StringBuilder ();
sb.Append (req.Method + "\ n \ n \ n");
sb.Append (String.Format ("{0} \ n \ n \ n \ n \ n \ n \ n \ n \ n", req.ContentLength));
sb.Append ("x-ms-blob-type:" + req.Headers ["x-ms-blob-type"] + '\ n');
sb.Append ("x-ms-date:" + req.Headers ["x-ms-date"] + '\ n');
sb.Append ("x-ms-version:" + req.Headers ["x-ms-version"] + '\ n');
sb.Append (canonicalizedResource);
рд░рд┐рдЯрд░реНрди sb.ToString ();
}
}
рд▓рд┐рдкрд┐ реи

рдЗрд╕ рдХреЛрдб рдореЗрдВ, рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рд╛рдпрдж рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХрдВрдЯреЗрдирд░ 1 рдХреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдмреВрдБрдж рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реЗрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреНрд▓реЙрдмреНрд╕ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдкрд░ рдХреМрди рдФрд░ рдХреМрди рд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ - msdn.microsoft.com/en-us/library/dd179354.aspx ред рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдорд╛рд▓рд┐рдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдорд╛рд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╣реИрдбрд░ рдХреЛ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдореЗрдВ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдХреИрдиреЛрд▓рд╛рдЗрдЬреНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдПрдХ рд╣реИрд╢-рдЖрдзрд╛рд░рд┐рдд рдореИрд╕реЗрдЬ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЛрдб (HMAC) рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ SHA256 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдХреИрдиреЛрдирд╛рдЗрдЬрд╝реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ REST рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐, рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░, рдмреВрдБрдж рдкреНрд░рдХрд╛рд░ (x-ms-blob-type = block рдпрд╛ рдкреЗрдЬ) UTC рд╕реНрд╡рд░реВрдк рдореЗрдВ HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рджрд┐рдирд╛рдВрдХ / рд╕рдордп (x-ms-date), Azure рдмреВрдБрдж рд╕реЗрд╡рд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рджрд┐рдирд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕ HTTP рдЕрдиреБрд░реЛрдз (рдПрдХреНрд╕-рдПрдордПрд╕-рд╕рдВрд╕реНрдХрд░рдг) рдЖрджрд┐ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдирд╛, рдЙрдЪреНрдЪ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдЪрдордХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╢реНрд░рдорд╕рд╛рдзреНрдпрддрд╛ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреИрдиреЛрдирд╛рдЗрдЬрд╝реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЧрдарди рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рднреА рдЕрд╢реБрджреНрдзрд┐, HTTP 403 рдирд┐рд╖рд┐рджреНрдз рддреНрд░реБрдЯрд┐ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред
рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА (рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ) рд╕реНрдЯреЛрд░реЗрдЬ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЗрдиреНрд╣реЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЧреБрдгреЛрдВ (рдореИрдиреЗрдЬ рдХреАрдЬрд╝) рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - HMACSHA256 hmacSha256 = рдирдпрд╛ HMACSHA256 (Convert.FromBase64String (accessKey));
рдЕрдзрд┐рдХ рджрд╛рдиреЗрджрд╛рд░ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд╛рдЭрд╛ рдкрд╣реБрдБрдЪ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдЭрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЖрдкрдХреЛ рдПрдХ рдиреАрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╡рдВрдЯрд┐рдд рд╕рдордп рдЕрд╡рдзрд┐ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рдиреАрддрд┐ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХреЗрдЧрд╛ред рдПрдХ рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЕрд▓рдЧ рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
тАв рдЕрдЧрд░ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдмреВрдБрдж рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рдЪреБрдкрдЪрд╛рдк рднреВрди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
тАв рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд╛рдо рдХреЗрд╕ рд╕рдВрд╡реЗрджреА рд╣реИред
тАв рд▓реЛрдбрд┐рдВрдЧ рд╕рдордп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧреНрд░рд┐рдб рдХреА рдЧрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рдо рд╕реЗ, рдпрд╣ 45-рдореЗрдЧрд╛рдкрд┐рдХреНрд╕реЗрд▓ рдмреИрдХрдЕрдк 00:01:07 рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдЯреА рд╕реЗ рднрд░ рдЧрдпрд╛ рдерд╛ред рдШрд░ рд╕реЗ рдпрд╣ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдирд┐рдХрд▓рд╛ред
рдЗрд╕ рдбреЗрдореЛ рдореЗрдВ, рдмреИрдХрдЕрдк рдЖрдХрд╛рд░ рдореЗрдВ рдХрд╛рдлреА "рдмрдЪрдХрд╛рдирд╛" рдерд╛ред рдмреНрд▓реЙрдХ рдмреНрд▓рдмреНрд╕ 200 рдЬреАрдмреА рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред 64 рдПрдордмреА рд╕реЗ рдХрдо рдЖрдХрд╛рд░ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ 2 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред рдЕрдиреНрдпрдерд╛, рдЗрд╕реЗ рдмреНрд▓реЙрдХ рдФрд░ рдкреБрдЯ рдмреНрд▓реЙрдХ рд╕реВрдЪреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреНрд▓реЙрдХ рд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ Azure Storage рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкреЗрдЬ рдмреНрд▓рдмреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдкреГрд╖реНрда рдмреВрдБрдж рдореЗрдВ 512-рдмрд╛рдЗрдЯ рдкреГрд╖реНрда рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ 1 рдЯреАрдмреА рд╣реИред рдкреЗрдЬ рдмреНрд▓реЙрдм рдкреЗрдЬ рд▓рд┐рдЦрдиреЗ / рдкрдврд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/use-windows-azure-page-blobs-and-how-to-efficiently-upload- рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб-рдкреГрд╖реНрда- blobs.aspx

Source: https://habr.com/ru/post/In156939/


All Articles