You've already forked ssms-addin
mirror of
https://github.com/alex-bochkov/ssms-addin.git
synced 2025-11-23 22:04:53 +02:00
71 lines
2.6 KiB
Transact-SQL
71 lines
2.6 KiB
Transact-SQL
SET NOCOUNT ON;
|
|
|
|
DROP TABLE IF EXISTS #AllFiles;
|
|
DROP TABLE IF EXISTS #AllDatabases;
|
|
|
|
SELECT
|
|
DB_NAME(database_id) as DatabaseName,
|
|
name
|
|
INTO #AllFiles
|
|
FROM sys.master_files
|
|
WHERE type = 0 and database_id > 4
|
|
|
|
SELECT
|
|
DatabaseName,
|
|
ROW_NUMBER() OVER (ORDER BY DatabaseName) AS RN
|
|
INTO #AllDatabases
|
|
FROM #AllFiles
|
|
GROUP BY DatabaseName
|
|
|
|
DECLARE @MaxRow int = 0, @RN int = 1, @TheResults NVARCHAR(max) = N'', @DbName NVARCHAR(50);
|
|
|
|
Declare @vbCrLf CHAR(2)
|
|
SET @vbCrLf = CHAR(13) + CHAR(10)
|
|
|
|
SELECT @MaxRow = MAX(RN) FROM #AllDatabases
|
|
|
|
WHILE @RN <= @MaxRow
|
|
BEGIN
|
|
|
|
SELECT @DbName = DatabaseName FROM #AllDatabases WHERE RN = @RN;
|
|
|
|
SET @TheResults = @TheResults + @vbCrLf + 'CREATE DATABASE [' + @DbName + '.ss] ON'
|
|
|
|
SELECT @TheResults = @TheResults + @vbCrLf + ' ( NAME = ' + name + ', FILENAME = ''Z:\Snapshots\' + @DbName + '.' + name + '.ss''),'
|
|
FROM #AllFiles
|
|
WHERE DatabaseName = @DbName;
|
|
|
|
SET @TheResults = LEFT(@TheResults, LEN(@TheResults) - 1)
|
|
|
|
SET @TheResults = @TheResults + @vbCrLf + ' AS SNAPSHOT OF ' + @DbName + ';' + @vbCrLf;
|
|
|
|
SET @RN = @RN + 1;
|
|
|
|
END
|
|
|
|
;WITH E01(N) AS (SELECT 1 UNION ALL SELECT 1 UNION ALL
|
|
SELECT 1 UNION ALL SELECT 1 UNION ALL
|
|
SELECT 1 UNION ALL SELECT 1 UNION ALL
|
|
SELECT 1 UNION ALL SELECT 1 UNION ALL
|
|
SELECT 1 UNION ALL SELECT 1), -- 10 or 10E01 rows
|
|
E02(N) AS (SELECT 1 FROM E01 a, E01 b), -- 100 or 10E02 rows
|
|
E04(N) AS (SELECT 1 FROM E02 a, E02 b), -- 10,000 or 10E04 rows
|
|
E08(N) AS (SELECT 1 FROM E04 a, E04 b), --100,000,000 or 10E08 rows
|
|
--E16(N) AS (SELECT 1 FROM E08 a, E08 b), --10E16 or more rows than you'll EVER need,
|
|
Tally(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY N) FROM E08),
|
|
ItemSplit(
|
|
ItemOrder,
|
|
Item
|
|
) as (
|
|
SELECT N,
|
|
SUBSTRING(@vbCrLf + @TheResults + @vbCrLf,N + DATALENGTH(@vbCrLf),CHARINDEX(@vbCrLf,@vbCrLf + @TheResults + @vbCrLf,N + DATALENGTH(@vbCrLf)) - N - DATALENGTH(@vbCrLf))
|
|
FROM Tally
|
|
WHERE N < DATALENGTH(@vbCrLf + @TheResults)
|
|
--WHERE N < DATALENGTH(@vbCrLf + @INPUT) -- REMOVED added @vbCrLf
|
|
AND SUBSTRING(@vbCrLf + @TheResults + @vbCrLf,N,DATALENGTH(@vbCrLf)) = @vbCrLf --Notice how we find the delimiter
|
|
)
|
|
select
|
|
row_number() over (order by ItemOrder) as ItemID,
|
|
Item
|
|
from ItemSplit
|