使用動態SQL創建數據庫


/*其實我也搞不懂為什么要用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM