Как остановить выполнение скрипта в Transact-SQL

Задача: остановить выполнение сложного sql-запроса. Нормального способа разработчики MS Sql server 2005 не предусмотрели, приходится импровизировать. Первым делом на ум приходит что-то вроде: Но данный метод не сработает, если в sql-запросе применяется конструкция go, разбивающая его на независимые пакеты инструкций. … Читать далее

Универсальная строка даты в MS SQL или ошибка The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

При формировании sql запросов очень часто используются строчные значения даты. Все бы хорошо, но формат этих строк зависит от региона, точнее говоря от региональных настроек сервера и клиента и скрытых преобразований формата datetime внутри разных программ и библиотек. Иначе говоря, … Читать далее

Обьединение двух выборок или сложное ограничение в Transact sql

Многие программисты новички, особенно начавшие с классических языков программирования, считаю sql весьма примитивным средством для выборок данных, которые затем обрабатываются внутри программы. На самом деле sql запросы позволяют очень быстро и легко решать весьма сложные задачи, просто их структура резко … Читать далее

Как сбросить значение столбца identity на 0 в Transact Sql

При удалении строк из таблицы счетчик столбца с identy остается на последнем значении. Удалили тысячу строк, следующая вставленная будет иметь код не 1, а 1001. Чтобы при удалении данных сбросить значение identity используем следующий код: DBCC CHECKIDENT (Transact-SQL) … Читать далее

Выполняем код для каждой строки в выборке Transact SQL с использованием курсора

В SQL мы обычно оперируем выборками, но иногда надо выполнить некие действия для каждой строки в выборке. В обычных языках такая задача решается обходом последовательности в цикле, но в Transact SQL клссические циклы плохо работают, вместо них лучше использовать специальный … Читать далее

Ловим ошибки в запросе к MS SQl и откатываем изменения - транзакции (transaction) и блок TRY-CATCH

Имеем запрос, меняющий данные на MS SQL Server. Задача: отловить возникшие при выполнении запроса ошибки и откатить все уже внесенные внутри запроса изменения к состоянию на момент его запуска. Помогут нам в этом нелегком деле транзакции и блок TRY-CATCH. Когда … Читать далее

Оператор insert into ... select в transact sql

Обычный оператор вставки значений в таблицу INSERT: Для вставки в таблицу выборки строк из другой таблицы используется следующее выражение: Если таблица простая, то копирование данных можно совместить с ее созданием Для сложных таблиц это не сработает, например свойство IDETITY пропадет … Читать далее

Как пренести таблицу MS SQL Server на другой сервер/базу с сохранением IDENTITY

Иногда на разных серверах-базах надо иметь точные копии одной и той же таблицы, содержащей столбец IDENTITY, значения которого должны быть уникальны и генерятся автоматически. Простые операторы выборки и вставки не помогают, особенно если некоторые строки удалялись и коды идут непоследовательно … Читать далее

Transact SQL и MS SQL Server - получаем список ролей для текущего пользователя и всех пользователей

Механизм ролей в MS SQL Server не так прост, как кажется, если имя пользователя добывается легко и непринужденно: то список ролей можно получить с помощью утюга, паяльника, дыбы, испанского сапога и следующего запроса Типичный программист любопытен, хочет все знать и … Читать далее