Не повторяйте одну и ту же ошибку!
Маленькая мудрость:
Напишите функцию и используйте её когда понадобится.
Маленькая мудрость:
Для включения возможности использования xp_cmdshell в MSSQL необходимо:
-- Разрешаем изменение дополнительных параметров.
EXEC sp_configure 'show advanced options', 1
GO
-- Обновkztv текущее настроенное значение для дополнительных параметров
RECONFIGURE
GO
-- Включаем cmdshell.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Обновляем текущее настроенное значение для cmdshell
RECONFIGURE
GO
Перезапуск (Restart) MSSQL Server на Linux (Ubuntu).
Microsoft рекомендует перезапускать сервер так:
-- Получить состояние сервиса
sudo systemctl status mssql-server
-- Остановить сервис
sudo systemctl stop mssql-server
-- Запустить сервис
sudo systemctl start mssql-server
-- Перезапустить сервис
sudo systemctl restart mssql-server
Для Ubuntu я лично предпочитаю такой способ:
service mssql-server status
service mssql-server stop
service mssql-server start
service mssql-server restart
Чтобы получить SESSION ID:
select @@spid
Чотбы получить TRANSACTION ID:
select CURRENT_TRANSACTION_ID()
"OFFSET FETCH" это фильтр который позволяет пропустить некоторое количество первых строк в выборке.
Например:
select field1, field2, field3
from table1
order by field1, field2
offset 100 rows fetch next 50 rows only;
Этот пример вернет строки с 101 по 150, из всех строк отсортированных по field1 и field2.
! Сначала будет произведена сортировка, затем возврат 50 строк.
! Для больших объемов данных этот способ требует много ресурсов, поэтому использовать лучше на минимизированных выборках.
Два способа выполнения транзакций в MSSQL, с отменой по ошибке.
Первый способ:
BEGIN TRY
BEGIN TRAN
UPDATE 1
UPDATE 2 --Error
UPDATE 3
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Пример поиска процедуры по тексту который она содержит
SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%некоторый_текст%'
Этот скрипт вернет названия всех процедур которые содержат в текст: "некоторый_текст"
Пример выбора диапазона дат:
WITH q AS
(
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM q
WHERE num < 10
)
SELECT DATEADD(DAY,0,cast(cast(DATEADD(DAY,-num,SYSDATETIME()) as date) as datetime))
FROM q
Пример обновления данных в одной таблице с одновременным сопоставлением и проверкой условия по второй таблице при помощи JOIN:
update cc
set cc.ActivateState=2
from ClientsCards cc
left join ClientsCardsHeads cch
on cch.CardUid=cc.Uid
where cc.ActivateState=0 and cch.State=3
ClientsCards cc - Первая таблица в которой производится изменение.
ClientsCardsHeads cch - Вторая таблица с данными которой производится сверка.
Рецепт, чтобы запереть FTP пользователя в своей папке.
Прописать в vsftpd.conf:
local_enable=YES
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
В файле /etc/vsftpd.chroot_list надо указать UserId пользователей для которых это правило будет действовать.