Here's a script. You could put this into a stored procedure or just leave it as it is. All you have to do is update the initial col and row values.
DECLARE
@cols INT = 4,
@rows INT = 10,
@tablename VARCHAR(20) = 'TestTable'
DECLARE
@i INT = 1,
@j INT = 1,
@sql NVARCHAR(MAX) = 'create table ' + @tablename + '('
WHILE(@i <= @cols)
BEGIN
SET @sql = @sql + 'att' + CAST(@i AS VARCHAR(10)) + ' VARCHAR(10)'
IF NOT @i = @cols
BEGIN
SET @sql = @sql + ', '
END
SET @i = @i + 1
END
SET @sql = @sql + ')'
EXECUTE sp_executesql @sql
SET @sql = 'INSERT INTO ' + @tablename + ' VALUES'
WHILE(@j <= @rows)
BEGIN
SET @i = 1
SET @sql = @sql + '('
WHILE(@i <= @cols)
BEGIN
SET @sql = @sql + '''' + CAST(@i AS VARCHAR(10)) + ''''
IF NOT @i = @cols
BEGIN
SET @sql = @sql + ', '
END
SET @i = @i + 1
END
IF NOT @j = @rows
BEGIN
SET @sql = @sql + '), '
END
SET @j = @j + 1
END
SET @sql = @sql + ')'
EXECUTE sp_executesql @sql
Hope this helps.