Files
ls-2014-source/database/00_create_databases.sql
T

27 lines
1.2 KiB
Transact-SQL

-- LosaDev 2014: creates LosaGame, LosaGame_log, LosaLogData and Backup (empty). Run first.
-- Backup stays empty: procedures such as game_practice_rank_reward and game_region_backup_point create
-- their own tables in it (SELECT ... INTO [Backup].dbo.<name>), so the game login must own it.
-- sqlcmd -S <server> -E -f 65001 -v DB_COLLATE=DEFAULT -i 00_create_databases.sql
-- DB_COLLATE=DEFAULT = the instance's collation (recommended: install SQL Server with
-- Korean_Wansung_CI_AS so Korean text in varchar columns survives). Otherwise e.g. Korean_Wansung_CI_AS.
USE [master]
GO
DECLARE @c nvarchar(128) = N'$(DB_COLLATE)', @sql nvarchar(max), @db sysname
IF @c = N'DEFAULT' SET @c = N''
DECLARE d CURSOR LOCAL FAST_FORWARD FOR SELECT v FROM (VALUES (N'LosaGame'), (N'LosaGame_log'), (N'LosaLogData'), (N'Backup')) t(v)
OPEN d
FETCH NEXT FROM d INTO @db
WHILE @@FETCH_STATUS = 0
BEGIN
IF DB_ID(@db) IS NULL
BEGIN
SET @sql = N'CREATE DATABASE ' + QUOTENAME(@db) + CASE WHEN LEN(@c) > 0 THEN N' COLLATE ' + @c ELSE N'' END
EXEC (@sql)
PRINT 'created ' + @db
END
ELSE PRINT @db + ' already exists (kept)'
FETCH NEXT FROM d INTO @db
END
CLOSE d
DEALLOCATE d
GO