Ответы пользователя по тегу SQL Server
  • Как удалить данные за период и проверить на целостность?

    ScriptKiddo
    @ScriptKiddo
    Какими командами сделать трункейт данных и оставить данные за последний год?

    Если есть партиции - удаляете партиции

    https://docs.microsoft.com/ru-ru/sql/t-sql/stateme...

    TRUNCATE TABLE PartitionTable1   
    WITH (PARTITIONS (2, 4, 6 TO 8));  
    GO

    Если партиций нет и данных мало - удалить просто

    DELETE FROM table WHERE date <= %date%

    Если данных много - сделать задачу в SQL Agent. Количество удаляемых строк оставляете на свое усмотрение

    DELETE TOP (1000) FROM table WHERE date <= %date%

    Какими командами проверить на целостьность и оптимизировать?


    Проверять целостность и логичность - только вручную. Необходимость и возможность удаления ваших данных определяете только вы.

    Если нужно проверить, не битая ли база - то используйте команду DBCC CHECKDB
    https://docs.microsoft.com/ru-ru/sql/t-sql/databas...

    P.S Не помешали бы бекапы и прочее прочее
    Ответ написан
    Комментировать
  • Почему не срабатывают блокировки?

    ScriptKiddo
    @ScriptKiddo
    Вам необходимо использовать одновременно два табличных указания

    WITH(TABLOCKX, HOLDLOCK)

    TABLOCKX - монопольно блокирует таблицу, HOLDLOCK - включает режим SERIALIZABLE, что включает в себя следующее:

    Запросы не могут читать те данные, которые были изменены, но еще не закоммичены другими транзакциями.

    Другие транзакции не могут изменять данные, которые были прочитаны текущей транзакцией, пока текущая транзакция не завершится.

    Другие транзакции не могут вставлять новые строки со значениями ключей, которые попадают в диапазон ключей, считываемых любыми запросами в текущей транзакции, до тех пор, пока текущая транзакция не завершится.

    https://docs.microsoft.com/en-us/sql/t-sql/stateme...
    Ответ написан
    Комментировать
  • Как сравнить схемы БД?

    ScriptKiddo
    @ScriptKiddo
    VisualStudio SSDT имеет инструменты Schema/Data Compare для сравнивания двух баз данных.

    SSDT: https://docs.microsoft.com/ru-ru/sql/ssdt/download...

    Инструкции:
    https://docs.microsoft.com/en-us/sql/ssdt/how-to-u...

    https://www.sqlshack.com/how-to-compare-two-sql-da...
    Ответ написан
    Комментировать