﻿CREATE procedure [dbo].[CreaTabellaBackUp](
	@tableName varchar(100),
	@schema varchar(100),
	@suffix varchar(100) = ''
)
as
	declare @data datetime
	declare @dataString varchar(20)
	declare @SQL nvarchar(4000)
	set @data = getdate()
	set @dataString = convert(varchar(4), year(@data)) + right('0' + convert(varchar(2), month(@data)), 2) + right('0' + convert(varchar(2), day(@data)), 2)
	-- Se è stato passato un suffisso per specificare il motivo del backup della tabella (es: PreGenerazione...)
	if isnull(@suffix, '') <> ''
		set @suffix = '_' + @suffix
	-- Se la tabella con data + suffisso è già presente si aggiunge alla stringa data anche l'orario
	IF EXISTS (SELECT 'X' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @tableName + '_' + @dataString + @suffix AND TABLE_SCHEMA = @schema)
		begin
			print 'La tabella ' + @schema + '.' + @tableName + '_' + @dataString + @suffix + ' già esiste nel DB.'
			set @dataString = @dataString + '_' + right('0' + convert(varchar(2), DATEPART(hour, @data)), 2) + right('0' + convert(varchar(2), DATEPART(minute, @data)), 2) + right('0' + convert(varchar(2), DATEPART(second, @data)), 2)
		end
	set @SQL = 'select * into ' + @schema + '.' + @tableName + '_' + @dataString + @suffix + ' from ' + @schema + '.' + @tableName
	print @SQL
	exec sp_executeSql @SQL