powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить что поле переименовано
8 сообщений из 8, страница 1 из 1
Как определить что поле переименовано
    #37844992
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

Существует ли возможность с большой вероятностью определить что поле таблицы было переименовано?
и если да то по какому критерию это можно узнать?

Спасибо
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845012
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к примеру, заранее аудит напустить
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845077
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Crimean,

проще никак? В некоторых платных продуктах определение происходит и без включения аудита.

Мне это нужно при сравнении структуры таблиц дабы если в исходной таблице поле переименовали в целевой из другой базы его тоже переименовать а не удалять и создавать заново. (изначально предполагается что таблицы и базы были идентичны (целевая была получена восстановлением из резервной копии исходной базы)).

Спасибо.
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845088
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko, ну так найти различия в структуре двух баз это одно (и для этого есть куча утилит, в том числе бесплатных), а определить сам факт переименования - это другое.
например, если у двух полей одного типа некий злодей поменял местами имена
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845114
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoВ некоторых платных продуктах определение происходит и без включения аудита.Там происходит не определение, а додумывание за пользователя. Додумывание включается, когда у столбцов совпадают все атрибуты, кроме имени.
Но совершенно не учитывыается вариант, когда столбец был удален и добавлен новый. А ведь в этом случае данные в таблицах будут различаться.

И как вы собираетесь поступать, если "переименованный" столбец задействован в каких-либо констрейнтах и триггерах?

Если хотите, чтобы ваша схема хоть как-то работала -- навесьте на БД DDL-триггер, который будет сохранять все DDL-инструкции. Потом их будете применять на второй БД.
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845170
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoСуществует ли возможность с большой вероятностью определить что поле таблицы было переименовано? и если да то по какому критерию это можно узнать?
Спасибо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
  C1.object_id
, C1.column_id
, name1 = C1.name
, name2 = C2.name
from MyDabatase1.sys.columns C1
join MyDabatase2.sys.columns C2
  on C2.object_id = C1.object_id
  and C2.column_id = C1.column_id
where C2.name <> C1.name

Такой запрос покажет только те переименованные поля, которые изначально были созданы в MyDabatase1 и позже сресторены в MyDabatase2 из бекапа от MyDabatase1. Я специально перепроверил на mssql 2008r2: идентификаторы таблиц (object_id) и колонок (column_id) сохраняются при бекапе\ресторе, что позволяет использовать их в качестве ключей для сопоставлений. Надо учитывать, что если колонки не переименовывались, а менялись местами, то запрос их также покажет.

зы: это все out of warranty
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845844
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RubinDm,
спасибо,
предполагается что дальше сравнение будет производиться после добавления или удаления колонок через ALTER TABLE и тогда id не будут совпадать.
...
Рейтинг: 0 / 0
Как определить что поле переименовано
    #37845914
Alexandr Kr.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mikhail Tchervonenko,

А почему нельзя запустить профайлер в фоне настроеный на альтер допустим таблиц. И по трассе профайлера уже анализировать?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как определить что поле переименовано
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]