Databasedeki Tüm İndexleri Create Kodu ile Alma SQL Script

Bu script ile Sql Server daki Database ait tüm NONCLUSTERED indexleri listeleyip create kodlarını alabilirsiniz

SELECT 
    DB_NAME() AS DatabaseName, -- Veritabanı adı
    OBJECT_SCHEMA_NAME(i.object_id) + '.' + OBJECT_NAME(i.object_id) AS TableName, -- Şema ve tablo adı
    i.name AS IndexName, -- İndeks adı
    'CREATE ' + 
    CASE WHEN i.is_unique = 1 THEN 'UNIQUE ' ELSE '' END + 
    'NONCLUSTERED INDEX [' + i.name + '] ON ' + 
    OBJECT_SCHEMA_NAME(i.object_id) + '.' + OBJECT_NAME(i.object_id) +
    ' (' + 
    STUFF((
        SELECT ', ' + c.name
        FROM sys.index_columns ic
        JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
        WHERE ic.object_id = i.object_id AND ic.index_id = i.index_id AND ic.is_included_column = 0
        ORDER BY ic.key_ordinal
        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') +
    ')' +
    CASE 
        WHEN EXISTS (
            SELECT 1
            FROM sys.index_columns ic2
            WHERE ic2.object_id = i.object_id AND ic2.index_id = i.index_id AND ic2.is_included_column = 1
        ) THEN 
        ' INCLUDE (' + 
        STUFF((
            SELECT ', ' + c2.name
            FROM sys.index_columns ic2
            JOIN sys.columns c2 ON ic2.object_id = c2.object_id AND ic2.column_id = c2.column_id
            WHERE ic2.object_id = i.object_id AND ic2.index_id = i.index_id AND ic2.is_included_column = 1
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') + 
        ')' 
        ELSE '' 
    END AS CreateIndexScript
FROM 
    sys.indexes i
WHERE 
    i.type = 2 -- Non-clustered indeksler
ORDER BY 
    DatabaseName, TableName, IndexName;

Sql Server İçinde Veri Olan Tablolar

Sql server database inin içindeki tablolardaki kayıt sayılarını verir

SELECT 
    s.name AS SchemaName,
    t.name AS TableName,
    SUM(p.rows) AS [RowCount]
FROM sys.tables t
JOIN sys.schemas s ON t.schema_id = s.schema_id
JOIN sys.partitions p ON t.object_id = p.object_id
WHERE p.index_id IN (0, 1) -- 0: Heap, 1: Clustered Index
GROUP BY s.name, t.name
HAVING SUM(p.rows) > 0
ORDER BY [RowCount] DESC;

SQL Server Tüm İndexler Rebuild

Veritabanında bulunan indexleri aşağıdaki script ile kolayca rebuild yapabilirsiniz

USE [VeritabanıAdı];
GO

DECLARE @TableName NVARCHAR(255);
DECLARE table_cursor CURSOR FOR 
SELECT name FROM sys.tables;

OPEN table_cursor;
FETCH NEXT FROM table_cursor INTO @TableName;

WHILE @@FETCH_STATUS = 0  
BEGIN  
       EXEC ('ALTER INDEX ALL ON ' + @TableName + ' REBUILD;');
       FETCH NEXT FROM table_cursor INTO @TableName; 
END;

CLOSE table_cursor;  
DEALLOCATE table_cursor; 
GO

MSSQL Rebuild Index , Sql Server Index Yenileme

MsSql deki index lerimizi zaman zaman rebuild yapıp indexleri yenilememiz gerekir bunuda aşağıdaki script ile gerçekleştirebilir siniz

USE [Database]
GO
ALTER INDEX [Index_Adı] ON [dbo].[Tablo Adı]
REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 10)
GO
SQl Kontrollü view ekleme scripti

Sql server da ekliyeceğimiz view kontrol eder var ise update satırının içinde view imizi oluşturur yok sa create view bloğundaki kodu çalıştırır ve view i database e ekler

IF NOT EXISTS(select * FROM sys.views where name = 'TEST')
BEGIN
    EXEC sp_executesql N'CREATE VIEW [dbo].[TEST]
AS
    SELECT * FROM TABLO WHERE ID > 100 '
END
ELSE
BEGIN
 
      EXEC sp_executesql N'  ALTER VIEW [dbo].[TEST] AS 
    SELECT * FROM TABLO WHERE ID > 100 '
 
END
SQL Kontollü Tabloya Index Ekleme

Sql Server da bir tabloda eklemek istediğimiz index yok ise index i oluşturur var ise herhangi bir işlem yapmaz

 IF NOT EXISTS( select * from sys.indexes where name = 'IND_CHAR_AKTARILDI')
BEGIN 
	EXEC sp_executesql N'CREATE NONCLUSTERED INDEX [IND_CHAR_AKTARILDI] ON [dbo].[CIHAZHAREKET] ([AKTARILDI])'
END

SQL Kontrollü tabloya alan ekleme

Sql server da tablo da alan yok ise alan ekleme var ise herhangi bir işlem yapmama scripti

IF NOT EXISTS(SELECT * FROM SYS.COLUMNS WHERE OBJECT_ID=OBJECT_ID('TABLOADI') AND NAME='ALANADI') 
BEGIN 
		ALTER TABLE TABLOADI  ADD ALANADI NVARCHAR(255)  
END

SQL Kontrollü tablo ekleme scripti

Sql server bir tablo database de yok ise tablo eklensin var ise eklenmesin işlemini yapmak için aşağıdaki script i kullanabiliriz

IF NOT OBJECT_ID('DATABASE.dbo.[TABLO]','U') IS NOT NULL
BEGIN
	CREATE TABLE [dbo].[TABLO](
		[ID] [int] NOT NULL,
		[ALAN1] [int] NULL,
		[ALAN2] [varchar](50) NULL,
				[OLTAR] [datetime] NULL,
		[OLUSER] [varchar](255) NULL,
			 CONSTRAINT [PK_PER_TRANSFER] PRIMARY KEY CLUSTERED 
	(
		[ID] ASC
	)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
	) ON [PRIMARY]
 
END