MS SQL REPLACE fonksiyonu

Replace fonksiyonu ile belirtilen karakterler yerine yeni karakterlerin konulması.

UPDATE [dbo].[Table1] 
SET UBARCODE=REPLACE(UBARCODE,'M','S'), PROJECT='90',QUANTITY=10,
KONTROL=0, BARCODE='C10101210003'
 WHERE UBARCODE IN
 ('0M3AAA00061',
 '0M3AAA00062',
 '0M3AAA00063',
 '0M3AAA00064',
 '0M3AAA00065')

MS SQL Server Veritabanı Bakım Planında Neler Olmalı?

Birkçok bakım planı sihirbaz kullanılarak görev olarak tanımlanabilmekte. Ancak 7/24 çalışan sitemlerde bu görevleri çalıştıracak boşluklar bulmak oldukça zor olabilmektedir. Zira bazı bakım işlemleri ya sistemin tüm kaynaklarını istemekte veya sistemin hiç kullanılmamasını istemektedir. Bu yüzden özelikle resmi tatillerde veritabanının kullanılmadığı zamanlarda bu bakımları yapmak sistemciler için önemlidir. Hangi sırada ve hangi bakımlar yapılmalıdır MS SQL sunucunuzda. Burada yazacaklarım tamamen veritabanının bakımı ile ilgili görevlerdir. Tabiki  sunucunun işletim sistemi ve donanım bakımları da yapılmalıdır.

1. Beckup Transaction Log: Logların yedeği alınmalı.

2. Beckup User Database: Bakım yapılacak kullanıcı veritabanları yedeklenmeli.

3. Check Database Integrity: Yedeği alınan veritabanlarının bütünkükleri kontrol edilmeli.

EXEC sp_msforeachdb 'DBCC CHECKDB(''?'')'

4. Shrink Database: Yedeği alınan veritabanları sıkıştırılmalı.

EXEC sp_MSForEachDB 'DBCC SHRINKDATABASE (''?'' , 0)'

5. Rebuild Index: Indexler yeniden yaratılmalı.

SET NOCOUNT ON
GO
--Set the fillfactor
DECLARE @FillFactor TINYINT
SELECT @FillFactor=80
DECLARE @StartTime DATETIME
SELECT @StartTime=GETDATE()
if object_id('tempdb..#TablesToRebuildIndex') is not null
begin
drop table #TablesToRebuildIndex
end
DECLARE @NumTables VARCHAR(20)
SELECT
s.[Name] AS SchemaName,
t.[name] AS TableName,
SUM(p.rows) AS RowsInTable
INTO #TablesToRebuildIndex
FROM
sys.schemas s
LEFT JOIN sys.tables t
ON s.schema_id = t.schema_id
LEFT JOIN sys.partitions p
ON t.object_id = p.object_id
LEFT JOIN sys.allocation_units a
ON p.partition_id = a.container_id
WHERE
p.index_id IN ( 0, 1 ) -- 0 heap table , 1 table with clustered index
AND p.rows IS NOT NULL
AND a.type = 1 -- row-data only , not LOB
GROUP BY
s.[Name],
t.[name]
SELECT @NumTables=@@ROWCOUNT
DECLARE RebuildIndex CURSOR FOR
SELECT
ROW_NUMBER() OVER (ORDER BY ttus.RowsInTable),
ttus.SchemaName,
ttus.TableName,
ttus.RowsInTable
FROM
#TablesToRebuildIndex AS ttus
ORDER BY
ttus.RowsInTable
OPEN RebuildIndex
DECLARE @TableNumber VARCHAR(20)
DECLARE @SchemaName NVARCHAR(128)
DECLARE @tableName NVARCHAR(128)
DECLARE @RowsInTable VARCHAR(20)
DECLARE @Statement NVARCHAR(300)
DECLARE @Status NVARCHAR(300)
FETCH NEXT FROM RebuildIndex INTO @TableNumber, @SchemaName, @tablename, @RowsInTable
WHILE ( @@FETCH_STATUS = 0 )
BEGIN
SET @Status='Table '+@TableNumber+' of '+@NumTables+': Rebuilding indexes on '+@SchemaName+'.'+@tablename + ' ('+@RowsInTable+' rows)'
RAISERROR (@Status, 0, 1) WITH NOWAIT --RAISERROR used to immediately output status
SET @Statement = 'ALTER INDEX ALL ON ['+@SchemaName+'].['+@tablename +'] REBUILD WITH (FILLFACTOR = '+CONVERT(VARCHAR(3), @FillFactor)+' )'
EXEC sp_executesql @Statement
FETCH NEXT FROM RebuildIndex INTO @TableNumber, @SchemaName, @tablename, @RowsInTable
END
CLOSE RebuildIndex
DEALLOCATE RebuildIndex
drop table #TablesToRebuildIndex
Print 'Total Elapsed Time: '+CONVERT(VARCHAR(100), DATEDIFF(minute, @StartTime, GETDATE()))+' minutes'
GO

6. Reorganize Index: Indexler yenilenmeli.

7. Update Statistics: Güncellenmeli.

8. Beckup System Database: Sistem veritabanları güncellenmeli.

9. History Cleanup: Temizlik.

USE msdb
GO
DECLARE @DaysToKeepHistory DATETIME
SET @DaysToKeepHistory = CONVERT(VARCHAR(10), DATEADD(dd, -30,GETDATE()), 101)
EXEC sp_delete_backuphistory @DaysToKeepHistory
GO

10. Mainteance Cleanup: Eski bakım ve yedeklerin temizlenmesi.

 

sql: SELECT sonucu dönen kayıtlara satır no kolonu eklemek için ROW_NUMBER

Sorgu sonucuna satır no alanı eklemek:

SELECT [URUN]
 ,[MAKINE]
 ,[ONCELIK]
 ,[KOVAN]
 ,[SNO]
 ,ROW_NUMBER() OVER(ORDER BY URUN,MAKINE,ONCELIK) AS KayitNo
 FROM [MACELLAN].[dbo].[PNTFICRONURNALTRMK]
 ORDER BY URUN,MAKINE,ONCELIK
URUN MAKINE ONCELIK KOVAN KayitNo
BCS40K L411/412 1 400 1
BGS45T L12/512 1 400 2
BOHCA1 L411/412 1 400 3
D00NAK HF Super VM 2 400 4
D00NAK L409/416 1 400 5

 

 

 

ms-sql: replace fonksiyonu

Select sonucu dönen kayıtlarda belirli bir karakter dizisini belirli başka bir karakter dizisi ile değiştirmek.

SELECT A.WAREHOUSE, A.STOCKPLACE,A.MATERIAL
, REPLACE(A.MATERIAL,'LPA34T','L0PA1T') AS MATERIAL2
, A.BEDEN, A.RENK
FROM PENTI.dbo.VW_STOK AS A
WHERE (A.MATERIAL NOT LIKE 'QC______%')
AND A.MATERIAL LIKE '%LPA34T%';
WAREHOUSE STOCKPLACE MATERIAL MATERIAL2 BEDEN RENK
170 1 LPA34T L0PA1T 125
170 YH015A LPA34TD L0PA1TD 125
180 1 LPA34TB L0PA1TB 125 2065
180 1 LPA34TB L0PA1TB 125 2097
190 DIKIS LPA34TF L0PA1TF 125 2024
190 DIKIS LPA34TF L0PA1TF 125 2028
190 DIKIS LPA34TF L0PA1TF 125 2050
190 DIKIS LPA34TF L0PA1TF 125 02N93