SQL-pätkiä kaikenlaiseen operointiin
Välillä sitä ihminen tarvitsee jos jonkinlaista pikku skriptintynkää SQL:n kanssa operoimiseen. Alle on keräiltynä ikään kuin muistilapun oloisesti tarpeelliseksi havaittuja rytäyksiä.
Single User to Multi User (last resort -tyyppinen)
USE master
GO
DECLARE @kill varchar(max) = '';
SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; '
FROM master..sysprocesses
WHERE spid > 50 AND dbid = DB_ID('KANTA')
EXEC(@kill);
GO
SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [KANTA] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [KANTA] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO
Trace Flag 3042 (ei tilan esivarausta kompressoidussa backupissa)
DBCC TRACEON (3042, -1) DBCC TRACESTATUS (3042)
Muista myös laittaa -T3042 -parametri SQL:n startuppiin Configuration Managerin avulla.
Error-logien kierrätys joka kuun viides päivä
USE [msdb] GO DECLARE @jobId BINARY(16) EXEC msdb.dbo.sp_add_job @job_name=N'CycleErrorLogs', @enabled=1, @notify_level_eventlog=0, @notify_level_email=2, @notify_level_netsend=2, @notify_level_page=2, @delete_level=0, @category_name=N'[Uncategorized (Local)]', @description=N'Cycles error logs on the 5th day of every month.', @owner_login_name=N'DOMAIN\Käyttäjä', @job_id = @jobId OUTPUT /* Käyttäjä voi olla myös sa-tunnus. */ select @jobId GO EXEC msdb.dbo.sp_add_jobserver @job_name=N'CycleErrorLogs', @server_name = N'SAMPO' GO EXEC msdb.dbo.sp_add_jobstep @job_name=N'CycleErrorLogs', @step_name=N'Cycle', @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_fail_action=2, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=N'EXEC sp_cycle_errorlog', @database_name=N'master', @flags=0 GO DECLARE @schedule_id int EXEC msdb.dbo.sp_add_jobschedule @job_name=N'CycleErrorLogs', @name=N'EveryMonthFifth', @enabled=1, @freq_type=16, @freq_interval=5, @freq_subday_type=1, @freq_subday_interval=0, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20180406, @active_end_date=99991231, @active_start_time=0, @active_end_time=235959, @schedule_id = @schedule_id OUTPUT select @schedule_id GO
Aseta rinnakkaistumisen Cost Threshold ylemmäs kuin default (tässä 25)
EXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE GO EXEC sys.sp_configure N'cost threshold for parallelism', N'25' GO RECONFIGURE WITH OVERRIDE GO EXEC sys.sp_configure N'show advanced options', N'0' RECONFIGURE WITH OVERRIDE GO
Aseta backup-kompressio oletusasetukseksi koko instanssissa
EXEC sys.sp_configure N'backup compression default', N'1' GO RECONFIGURE WITH OVERRIDE GO
Looppaa läpi kannat jotka alkavat merkkijonolla "ALKU_" ja luo niihin dbo-käyttäjä.
exec sp_MSForEachDB ' IF ''?'' LIKE ''ALKU_%%'' BEGIN; Use [?]; CREATE USER käyttäjä FOR LOGIN käyttäjä ALTER ROLE [db_owner] ADD MEMBER käyttäjä END;'
Erilaiset päivämäärät
SELECT dateadd(mm, 0, 0) as BeginningOfTime
,dateadd(dd, datediff(dd, 0, getdate()), 0) as Today
,dateadd(wk, datediff(wk, 0, getdate()), 0) as ThisWeekStart
,dateadd(mm, datediff(mm, 0, getdate()), 0) as ThisMonthStart
,dateadd(qq, datediff(qq, 0, getdate()), 0) as ThisQuarterStart
,dateadd(yy, datediff(yy, 0, getdate()), 0) as ThisYearStart
,dateadd(dd, datediff(dd, 0, getdate()) + 1, 0) as Tomorrow
,dateadd(wk, datediff(wk, 0, getdate()) + 1, 0) as NextWeekStart
,dateadd(mm, datediff(mm, 0, getdate()) + 1, 0) as NextMonthStart
,dateadd(qq, datediff(qq, 0, getdate()) + 1, 0) as NextQuarterStart
,dateadd(yy, datediff(yy, 0, getdate()) + 1, 0) as NextYearStart
,dateadd(ms, -3, dateadd(dd, datediff(dd, 0, getdate()) + 1, 0)) as TodayEnd
,dateadd(ms, -3, dateadd(wk, datediff(wk, 0, getdate()) + 1, 0)) as ThisWeekEnd
,dateadd(ms, -3, dateadd(mm, datediff(mm, 0, getdate()) + 1, 0)) as ThisMonthEnd
,dateadd(ms, -3, dateadd(qq, datediff(qq, 0, getdate()) + 1, 0)) as ThisQuarterEnd
,dateadd(ms, -3, dateadd(yy, datediff(yy, 0, getdate()) + 1, 0)) as ThisYearEnd
Viime kuun ensimmäinen ja viimeinen päivä:
SELECT dateadd(mm, datediff(mm, 0, dateadd(MM, -1, getdate())), 0)
SELECT dateadd(ms, -3, dateadd(mm, datediff(mm, 0, dateadd(MM, -1, getdate())) + 1, 0))
Tämän päivän aamu:
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Eilisen päivän aamu:
SELECT DATEADD(dd, -1, DATEDIFF(dd, 0, GETDATE()))