Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
Было свободное время и немного поизучал SQL. Так для меня наиболее подходяще изучать на каком-то практическом примере то решал задачу сравнения данных двух баз через запросы. Получилось следующее. Просьба показать либо ошибки либо серьезные не оптимальные решения. (в конце описание почему сделано так и что не очень получилось.) Сравнение баз данных с идентичной структурой. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. Примечания. - делал пошагово - мне так проще было понимать, плюс возможность делать процесс сравнения пошагово с возможностью посмотреть результаты промежуточных этапов. - использование @state_print - так как я почти не работал ранее с очень длительными процессами, то мне грустно смотреть на зеленый кружочек и я хотел смотреть где движется процесс. - первоначально было желание результат динамического запроса выводить в временную таблицу (типа INSERT INTO #tb_tmp EXEC(@v1)), но оказалось что временная таблица (#tb_tmp) должна быть определена со всеми столбцами. А я это не смог реализовать простыми методами, а усложнения типа применения OPENROWSET или EXEC AT решил не использовать. То есть встала проблема простого определения динамически создаваемой таблицы. В итоге решил применять глобальную временную таблицу. Сам вижу что получение @bd1 и @bd2 несколько кривоватое. Возможно есть более красивые и оптимальные варианты. Плюс в варианте 2 вывода различий проявляется ошибка обрезания данных если длина наименования @bd1 короче длины @bd2. То есть если в результате EXEC(@v1_mod) поле TableName_BD будет короче чем при применении EXEC(@v2_mod) , то получаем "String or binary data would be truncated". Как это обойти я не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 13:29 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
lyc64166, в Visual Studio есть инструменты сравнения схем объектов и данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 14:01 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Еще есть продукт от devart который хоть и платный, но имеет 30 дней пробного периода. Но мне было интересно разобраться в SQL. Поэтому возник этот велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 16:29 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
у вас никакое не сравнение баз, а только сравнение таблиц, и то неполное. таблицы - это не только колонки. это еще и индексы, констрэйнты и триггеры. а база это и еще туча объектов. откройте Object Explorer в студии и ужаснитесь, сколько всего есть в базах, да и в таблицах тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 16:58 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
Yasha123, То есть существуют инструменты которые сравнивают "еще и индексы, констрэйнты и триггеры"? Особенно интересно про индексы. Таблицы индексов сравниваются в принципе? Или речь идет о сравнении схемы? Вроде бы в первом сообщении сразу указано что это для "Сравнение баз данных с идентичной структурой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 11:53 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
lyc64166, В Visual Studio, помимо Schema Compare, есть еще и Data Compare. Но, конечно, если у вас терабайтные базы, то может и не взлететь - она данные для сравнения на клиента тянет, насколько я помню. И да, там много настроек сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 11:56 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
Насколько я понял желающих ковырять тексты запросов нет. Тогда пара конкретных вопросов. 1. Можно ли задать двумя переменными имена баз данных (@bd1 и @bd2), а затем одну из переменных использовать в конструкции USE @bd1? Или каким-то другим образом перейти в контекст базы данных заданной в переменной? 2. Конструкцией SELECT * INTO #tmp FROM получаем временную таблицу. Можно ли в этой таблице изменить (увеличить) тип поля nvarchar? Потому как при добавлении данных в эту таблицу с помощью INSERT INTO #tmp если в поле с типом nvarchar новые данные превышают максимальное значение уже имеющихся данных, то выпадает сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 12:07 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
lyc64166, все отчеты есть в справке. И прекратите заниматься интуитивным программированием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2019, 12:24 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
ER/Studio пару недель вам все посравнивает бесплатно. Может и подольше, если заморочитесь. TOAD Data modeller вероятно тоже. Сделайте reverse Engineering одной базы и сравните с другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 00:39 |
|
||
|
Сравнение идентичных баз через запрос. Возможные ошибки и не оптимальные решения.
|
|||
|---|---|---|---|
|
#18+
А если вам Count ы нужны, то вот https://stackoverflow.com/questions/2221555/how-to-fetch-the-row-count-for-all-tables-in-a-sql-server-database ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2019, 00:48 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39876675&tid=1687111]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
129ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 450ms |

| 0 / 0 |
