Database deki Tüm Tablolara Otomatik Insert Oluşturma
Sql Server da bulunan database deki tüm tablolara otomatik insert komutu oluşturan script
bu script le database deki veri leri kopyalamak için kullanabilir
sorguyu geliştirerek devir gibi işlemlerde kullanabilirsiniz
Bu sorguda autoincrement tipindeki alanlara insert yapılamayacağım autoincrement alanlar tespit edilip kolon bilgilier için getirilmemiştir
-- Geçici bir tablo oluştur
CREATE TABLE #InsertCommands (
TableName NVARCHAR(128),
InsertCommand NVARCHAR(MAX)
)
DECLARE @KaynakDatabase NVARCHAR(128)
DECLARE @HedefDatabase NVARCHAR(128)
DECLARE @TableName NVARCHAR(128)
DECLARE @SQL NVARCHAR(MAX)
SET @KaynakDatabase = '[Verilerin Alınacağı Database]'
SET @HedefDatabase = '[Verilerin Kopyalacanağı Database]'
DECLARE tableCursor CURSOR FOR
SELECT t.name
FROM sys.tables t
WHERE t.type = 'U'
OPEN tableCursor
FETCH NEXT FROM tableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'INSERT INTO #InsertCommands (TableName, InsertCommand) SELECT ''' + @TableName + ''',
''INSERT INTO ' + @HedefDatabase + '.[dbo].[' + @TableName + '] (' +
STUFF((
SELECT ', [' + c.name + ']'
FROM sys.columns c
WHERE c.object_id = OBJECT_ID(@TableName) AND c.is_identity = 0
FOR XML PATH('')), 1, 2, '') + ') SELECT ' +
STUFF((
SELECT ', [' + c.name + ']'
FROM sys.columns c
WHERE c.object_id = OBJECT_ID(@TableName) AND c.is_identity = 0
FOR XML PATH('')), 1, 2, '') + ' FROM ' + @KaynakDatabase + '.[dbo].' + '['+@TableName+']' + ''''
EXEC sp_executesql @SQL
FETCH NEXT FROM tableCursor INTO @TableName
END
CLOSE tableCursor
DEALLOCATE tableCursor
-- Geçici tablodaki sonuçları al
SELECT DISTINCT * FROM #InsertCommands -- DISTINCT ile benzersiz sonuçlar alın
-- Geçici tabloyu temizle
DROP TABLE #InsertCommands