Skip to content

Instantly share code, notes, and snippets.

@justingarrick
Last active December 20, 2015 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save justingarrick/6104608 to your computer and use it in GitHub Desktop.
Save justingarrick/6104608 to your computer and use it in GitHub Desktop.
Generic SQL Server "create DB" script that uses the same defaults as "New Database" in SSMS. Locates data directory based on master.mdf.
USE [master]
DECLARE @dbName NVARCHAR(MAX)
SET @dbName ='Derp' -- Your DB name here
DECLARE @sql NVARCHAR(MAX)
DECLARE @template NVARCHAR(MAX)
DECLARE @dataDir NVARCHAR(MAX)
SET @dataDir = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1)
SET @template = N'CREATE DATABASE [{dbName}] CONTAINMENT = NONE ON PRIMARY (NAME = N''{dbName}'', FILENAME = N''{dataDir}{dbName}.mdf'', SIZE = 4096KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) LOG ON (NAME = N''{dbName}_log'', FILENAME = N''{dataDir}{dbName}_log.ldf'', SIZE = 1024KB, MAXSIZE = 2048GB, FILEGROWTH = 10%)'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
SET @sql = REPLACE(@sql, '{dataDir}', @dataDir)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET COMPATIBILITY_LEVEL = 110'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin
SET @template = N'[{dbName}].[dbo].[sp_fulltext_database] @action = ''enable'''
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
end
SET @template = N'ALTER DATABASE [{dbName}] SET ANSI_NULL_DEFAULT OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET ANSI_NULLS OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET ANSI_PADDING OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET ANSI_WARNINGS OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET ARITHABORT OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET AUTO_CLOSE OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET AUTO_CREATE_STATISTICS ON'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET AUTO_SHRINK OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET AUTO_UPDATE_STATISTICS ON'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET CURSOR_CLOSE_ON_COMMIT OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET CURSOR_DEFAULT GLOBAL'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET CONCAT_NULL_YIELDS_NULL OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET NUMERIC_ROUNDABORT OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET QUOTED_IDENTIFIER OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET RECURSIVE_TRIGGERS OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET DISABLE_BROKER'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET AUTO_UPDATE_STATISTICS_ASYNC OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET DATE_CORRELATION_OPTIMIZATION OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET TRUSTWORTHY OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET ALLOW_SNAPSHOT_ISOLATION OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET PARAMETERIZATION SIMPLE'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET READ_COMMITTED_SNAPSHOT OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET HONOR_BROKER_PRIORITY OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET RECOVERY FULL'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET MULTI_USER'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET PAGE_VERIFY CHECKSUM'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET DB_CHAINING OFF'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET FILESTREAM(NON_TRANSACTED_ACCESS = OFF)'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET TARGET_RECOVERY_TIME = 0 SECONDS'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
SET @template = N'ALTER DATABASE [{dbName}] SET READ_WRITE'
SET @sql = REPLACE(@template, '{dbName}', @dbName)
PRINT @sql
EXECUTE (@sql)
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment