МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ администраторы, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, Π·Π°Π΄Π°ΡŽΡ‚ΡΡ вопросом ΠΎ возмоТности прямого взаимодСйствия с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° языкС SQL. Π­Ρ‚ΠΎ СстСствСнный интСрСс, вСдь ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ мощная Π‘Π£Π‘Π”, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π±Π°Π·Π΅ Microsoft SQL Server, PostgreSQL ΠΈΠ»ΠΈ Oracle. ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ SQL Π² контСкстС 1Π‘, критичСски Π²Π°ΠΆΠ½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ слоТных Π·Π°Π΄Π°Ρ‡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

Однако Π²Π°ΠΆΠ½ΠΎ сразу ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ «чистый» SQL для написания бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ВмСсто этого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнный язык запросов 1Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ транслируСтся ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ SQL ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π”. ΠŸΡ€ΡΠΌΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-запросов Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов ΠΈ понимаСтся ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ€Π°, Π° Π½Π΅ стандартная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° понятиСм SQL Π² экосистСмС 1Π‘, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ свой синтаксис ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… Ρ€Π΅Π΄ΠΊΠΈΡ… случаях всС ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° языкС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… выполнСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… запросов, рисках, связанных с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариСв.

АрхитСктурныС различия: Π―Π·Ρ‹ΠΊ запросов 1Π‘ ΠΏΡ€ΠΎΡ‚ΠΈΠ² SQL

Главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнный синтаксис запросов, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСзависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ, написанная Π½Π° языкС запросов 1Π‘, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ эффСктивно ΠΊΠ°ΠΊ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° MS SQL Server ΠΈΠ»ΠΈ PostgreSQL. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя Π·Π°Π΄Π°Ρ‡Ρƒ трансляции высокоуровнСвых конструкций Π² спСцифичный Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ SQL, понятный Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π‘Π£Π‘Π”.

Когда Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ запрос Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅, Π²Ρ‹ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…: справочниками, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, рСгистрами. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° физичСских Ρ‚Π°Π±Π»ΠΈΡ† Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΠΌΠ΅ΡŽΡ‚ слоТныС систСмныС прСфиксы Π²Ρ€ΠΎΠ΄Π΅ _InfoRg ΠΈΠ»ΠΈ _AccRg. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски управляСт Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа (RLS), Ρ‡Ρ‚ΠΎ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ прямом Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ Ρ‡Π΅Ρ€Π΅Π· SQL.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π·Π½Π°Π½ΠΈΠ΅ SQL ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для администраторов Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ запрос 1Π‘ прСвращаСтся Π² SQL-ΠΊΠΎΠ΄, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½Ρ‹ выполнСния запросов ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠ΅ мСста» Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для этого сущСствуСт Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ запросов, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ тСкст, отправляСмый сСрвСру Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ….

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ консоль запросов с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Β«ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ тСкст запроса SQLΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° транслируСт ваш ΠΊΠΎΠ΄ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π”. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ различия Π² синтаксисС.

ΠŸΡ€ΡΠΌΠΎΠ΅ использованиС SQL Π»ΠΈΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° прСимущСств ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ вСрсионности Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² 99% случаСв слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ стандартов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 1Π‘ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ запросов.

Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-запросов Π² 1Π‘

НСсмотр Π½Π° строгиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ SQL-запроса становится Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. Π§Π°Ρ‰Π΅ всСго это связано с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ администрирования, массовой ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со сторонними систСмами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ стандартный интСрфСйс 1Π‘.

Одной ΠΈΠ· распространСнных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ выполнСния спСцифичных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π‘Π£Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² языкС запросов 1Π‘. НапримСр, использованиС ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ спСцифичныхHint-ΠΎΠ² для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π½Π° выполнСния Π² MS SQL Server.

Π’Π°ΠΊΠΆΠ΅ SQL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ восстановлСнии Π΄Π°Π½Π½Ρ‹Ρ… послС сбоСв, ΠΊΠΎΠ³Π΄Π° стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ 1Π‘ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ записи. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях администратор Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, обходя Π»ΠΎΠ³ΠΈΠΊΡƒ прилоТСния.

  • πŸš€ МассовоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: ИзмСнСниС ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² провСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для ускорСния процСсса.
  • πŸ” БлоТная Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°: ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² с использованиСм спСцифичСских Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π‘Π£Π‘Π”, нСдоступных Π² 1Π‘.
  • πŸ”— Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ: ΠŸΡ€ΡΠΌΠ°Ρ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ внСшниС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Data Warehouse) Π±Π΅Π· использования ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° 1Π‘.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL-запросов Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ ΠΈ нСвозмоТности провСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ осознаСтС структуру физичСской Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

πŸ“Š Π‘Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ Π»ΠΈ Π²Ρ‹ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠΈΡΠ°Ρ‚ΡŒ SQL для 1Π‘?
Π”Π°, для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²
Π”Π°, для массового обновлСния
НСт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запросы 1Π‘
Волько для администрирования Π‘Π”

ВСхничСскиС способы выполнСния SQL Π² срСдС 1Π‘

БущСствуСт нСсколько тСхничСских ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ SQL-ΠΊΠΎΠ΄Π° ΠΈΠ· срСды 1Π‘. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния (файловая ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрная) ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ уровня доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π‘Π°ΠΌΡ‹ΠΉ распространСнный ΠΈ бСзопасный способ β€” использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ADODB.Connection Ρ‡Π΅Ρ€Π΅Π· COM-соСдинСниС. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ прямоС соСдинСниС с сСрвСром Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ OLE DB ΠΈΠ»ΠΈ ODBC. Код выполняСтся Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСра 1Π‘, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ создан ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ соСдинСния.

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("ADODB.Connection");

Π‘Ρ‚Ρ€ΠΎΠΊΠ°ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ = "Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DbName;Integrated Security=SSPI;";

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Open(Π‘Ρ‚Ρ€ΠΎΠΊΠ°ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Execute("SELECT TOP 10 * FROM _Reference34");

Для ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° 1Π‘ Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, запускаСмых Π½Π° сСрвСрС, ΠΈΠ»ΠΈ использованиС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, написанных Π½Π° C# ΠΈΠ»ΠΈ C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямой доступ ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ Π‘Π£Π‘Π”. Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Native API для Π±ΠΎΠ»Π΅Π΅ эффСктивного взаимодСйствия.

На сСрвСрС 1Π‘ использованиС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ настройки ΠΏΡ€Π°Π² доступа ΠΈ установлСнных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ².

β˜‘οΈ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ SQL-запроса

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°: Π Π°Π±ΠΎΡ‚Π° с ADODB ΠΈ запросами

Рассмотрим практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выполнСния SQL-запроса для получСния списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· систСмных Ρ‚Π°Π±Π»ΠΈΡ† SQL Server. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ стандартныС ограничСния ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ соСдинСния, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ возвращаСтся Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Recordset, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² 1Π‘ ΠΎΠ½ΠΈ часто содСрТат спСцсимволы.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘ΠΏΠΈΡΠΎΠΊΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉSQL()

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("ADODB.Connection");

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.ConnectionString = "Provider=SQLOLEDB;Server=localhost;Database=MyBase;Trusted_Connection=Yes;";

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Mode = 3; // adModeReadWrite

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Open();

ВСкстЗапроса = "SELECT name, create_date FROM sys.databases WHERE name = 'MyBase'";

Π—Π°ΠΏΠΈΡΡŒ = ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Execute(ВСкстЗапроса);

Пока НС Π—Π°ΠΏΠΈΡΡŒ.EOF Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π‘Π°Π·Π°: " + Π—Π°ΠΏΠΈΡΡŒ.Fields(0).Value);

Π—Π°ΠΏΠΈΡΡŒ.MoveNext();

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Π—Π°ΠΏΠΈΡΡŒ.Close();

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€.Close();

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка выполнСния SQL: " + ОписаниСОшибки());

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π”Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DDL (Data Definition Language), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС индСкса для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ нСльзя Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ срСдствами языка запросов 1Π‘, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ структуру Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· SQL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. 1Π‘ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ свои Ρ‚ΠΈΠΏΡ‹ (Π”Π°Ρ‚Π°, Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°) Π² Ρ‚ΠΈΠΏΡ‹ Π‘Π£Π‘Π”, Π½ΠΎ ΠΏΡ€ΠΈ прямом SQL-запросС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° соотвСтствиСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Риски ΠΈ ограничСния прямого доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

ИспользованиС SQL Π² 1Π‘ нСсСт Π² сСбС ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ риски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” это ΠΎΠ±Ρ…ΠΎΠ΄ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° рСгистрации ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Если Π²Ρ‹ обновляСтС Π΄Π°Π½Π½Ρ‹Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ рСгистра свСдСний, двиТСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ зарСгистрированы, ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, построСнныС Π½Π° основС этих рСгистров, ΠΏΠΎΠΊΠ°ΠΆΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слоТный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управляСмых ΠΈ нСуправляСмых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ΠŸΡ€ΡΠΌΠΎΠΉ SQL-запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ страницы, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ, устанавливаСмыми ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π²Π·Π°ΠΈΠΌΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ (deadlock) ΠΈ остановкС Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСй систСмы для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’ΠΈΠΏ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² 1Π‘ Риск ΠΏΡ€ΠΈ SQL РСкомСндация
Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Высокая Низкий (грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅) Допустимо для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ²
ОбновлСниС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² Высокая ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ (потСря Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ) Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записСй Высокая ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ (Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ссылок) Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСксов БрСдняя Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹) Π’Π½Π΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ выполняйтС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ DELETE ΠΈΠ»ΠΈ UPDATE Π½Π°Π΄ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ рСгистров Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· SQL, Ссли Π²Ρ‹ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ экспСртом Π² физичСской структурС Π±Π°Π·Ρ‹ 1Π‘. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «грязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β» Π² SQL?

ГрязноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Dirty Read) происходит, ΠΊΠΎΠ³Π΄Π° транзакция Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ зафиксированы. Π’ 1Π‘ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π”

Если ваша Ρ†Π΅Π»ΡŒ β€” оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ SQL-скрипт, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам запрос 1Π‘. Часто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π½Π΅ Π² языкС, Π° Π² отсутствии индСксов ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС соСдинСния Ρ‚Π°Π±Π»ΠΈΡ†. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ для выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Ρ… участков.

Если использованиС SQL Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ, примСняйтС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выполняСтся скрипт, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись систСмного администратора (sa) для повсСднСвных Π·Π°Π΄Π°Ρ‡.

ВсСгда тСстируйтС SQL-скрипты Π½Π° ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° тСстовой Π±Π°Π·Π΅ с Π΄Π΅ΡΡΡ‚ΡŒΡŽ записями, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ коллапс сСрвСра Π½Π° ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ с ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ строк ΠΈΠ·-Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ рСсурсов.

  • βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: ΠžΠ±Π΅Ρ€Π½ΠΈΡ‚Π΅ ваши SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² явныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² случаС ошибки.
  • βœ… Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Π’Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΆΡƒΡ€Π½Π°Π» всСх выполняСмых SQL-скриптов с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ тСкста запроса для Π°ΡƒΠ΄ΠΈΡ‚Π°.
  • βœ… Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: Для слоТных вычислСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ SQL, Π½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ… послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
πŸ’‘

Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° 1Π‘: Ссли Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ срСдствами ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ β€” Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ прямой SQL. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ SQL Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исчСрпаны ΠΈΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ тСхничСски.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SQL-запрос прямо Π² консоли запросов 1Π‘?

НСт, консоль запросов 1Π‘ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для языка запросов 1Π‘. Она Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ SQL-ΠΊΠΎΠ΄. Для выполнСния SQL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ спСциализированныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ SSMS для SQL Server.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ имя физичСской Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 1Π‘ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… SQL?

ИмСна физичСских Ρ‚Π°Π±Π»ΠΈΡ† ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· консоль запросов, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста SQL, ΠΈΠ»ΠΈ посмотрСв структуру Π±Π°Π·Ρ‹ Π² SSMS. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ справочников Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с _Reference, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² β€” с _Document, Π° рСгистров β€” с _AccRg ΠΈΠ»ΠΈ _InfoRg, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт GUID ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

БСзопасно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL для исправлСния ошибок Π² Π΄Π°Π½Π½Ρ‹Ρ…?

Π­Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ рискованно. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· SQL ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ 1Π‘. БСзопаснСС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° языкС 1Π‘, которая ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ двиТСния ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ с соблюдСниСм всСх бизнСс-ΠΏΡ€Π°Π²ΠΈΠ».

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ прямой SQL Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ вСрсии 1Π‘ (1Π‘:Π›ΠΈΠ½ΠΊ)?

Π’ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисах прямой доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· SQL ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ бСзопасности ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°. Π’Ρ‹ Π½Π΅ смоТСтС ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ прямоС соСдинСниС с сСрвСром Π‘Π”. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ API ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, прСдоставляСмыС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ.