/*其實我也搞不懂為什麼要用SQL來創建,明明SQL Server有圖形化創建資料庫多省事啊!*/USE master;DECLARE @sqlstr nvarchar(max)/*定義一個變數*/DECLARE @database_name nvarchar(20) = 'MyDB';/*這裡輸 ...
/*其實我也搞不懂為什麼要用SQL來創建,明明SQL Server有圖形化創建資料庫多省事啊!*/
USE master;
DECLARE @sqlstr nvarchar(max)
/*定義一個變數*/
DECLARE @database_name nvarchar(20) = 'MyDB';
/*這裡輸入需要創建的資料庫名*/
DECLARE @file_name_d nvarchar(200) = CONVERT(sysname, SERVERPROPERTY('InstanceDefaultDataPath'))
/*這裡是利用SQL Server的serverproperty這個函數來獲取當前實例的預設數據文件位置和日誌文件位置*/
DECLARE @file_name_l nvarchar(200) = CONVERT(sysname, SERVERPROPERTY('InstanceDefaultLogPath'))
/*微軟官方參數介紹https://docs.microsoft.com/en-us/sql/t-sql/functions/serverproperty-transact-sql?view=sql-server-2017*/
IF DB_ID('MyDB') IS NOT NULL
BEGIN
PRINT 'Database ' +@database_name+' already exists'; --判斷MyDB是否存在,存在的話就幹掉,我也不知道為什麼要這麼寫
DROP DATABASE MyDB; --還是手動刪除吧,不使用腳本刪除
END
ELSE
BEGIN
SET @sqlstr= 'CREATE DATABASE'+' '+@database_name+' '
SET @sqlstr = @sqlstr +'ON'
SET @sqlstr = @sqlstr +'('
SET @sqlstr = @sqlstr +'NAME = '+' '+@database_name+'_dat,'
SET @sqlstr = @sqlstr +'FILENAME = '+''''+@file_name_d+''+@database_name+'.mdf'','
SET @sqlstr = @sqlstr +'SIZE = 10,'
SET @sqlstr = @sqlstr +'MAXSIZE = 50,'
SET @sqlstr = @sqlstr +'FILEGROWTH = 5'
SET @sqlstr = @sqlstr +')'
SET @sqlstr = @sqlstr +'LOG ON'
SET @sqlstr = @sqlstr +'( NAME = '+' '+@database_name+'_log,'
SET @sqlstr = @sqlstr +'FILENAME = '+''''+@file_name_l+''+@database_name+'.ldf'','
SET @sqlstr = @sqlstr +'SIZE = 5MB,'
SET @sqlstr = @sqlstr +'MAXSIZE = 25MB,'
SET @sqlstr = @sqlstr +'FILEGROWTH = 5MB'
SET @sqlstr = @sqlstr +');'
Print (@sqlstr) -- 如果不想直接執行,使用使用print參數先把命令列印出來
--exec (@sqlstr); -- 執行直接上面生成的動態SQL
--Print 'Datbaase '+@database_name +' has been created using default data and log location in the server configuration!!'
/*列印已經創建成功的資料庫名字*/
--Print 'Data file location = '+@file_name_d+@database_name+'.mdf';
/*列印創建的資料庫的數據文件路徑*/
--Print 'Log file location = '+@file_name_l+@database_name+'.ldf';
/*列印創建的資料庫的日誌文件路徑*/
END