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

使用动态SQL创建数据库的更多相关文章

  1. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  2. ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引

    WHEN子句说明触发约束条件.Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数.WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行 ...

  3. [LINQ TO SQL]使用LINQ TO SQL创建数据库

    这篇博客将介绍如何使用LINQ TO SQL来创建数据库,以及如何映射Table之间的主外键关系. 我们的数据库表关系如下: Province与City之间1:M,City与Area之间1:M的关系. ...

  4. 2016年11月14日--SQL创建数据库、表-查、插、删、改

    --创建数据库(create database 数据库名)create database hq20161114go --使用选择数据库(use 数据库名)use hq20161114go --创建学生 ...

  5. SQL创建数据库、建表、填入内容

    --创建数据库 create database Information go --使用数据库 use Information go --创建表 create table Student ( Sno ) ...

  6. SQL创建数据库、表、存储过程及调用

    --如果存在数据库PRogrammerPay  就删除 if exists (select * from sysdatabases where name='programmerPay') drop d ...

  7. sql 创建数据库并对数据库更改排序规则

    use master -- 设置当前数据库为master,以便访问sysdatabases表 go if exists(select * from sysdatabases where name='t ...

  8. sql 创建数据库

    CREATE DATABASE [NET_CN] ON PRIMARY( NAME=N'NET_CN',FILENAME= N'D:\Data\NET_CN.mdf',SIZE = 5120KB,MA ...

  9. birt-j脚本调试 & 动态sql的实现

    一个比较好的birt问题解决网址: http://www.myexception.cn/h/1335919.html 1,Birt的JavaScript脚本简单调试 Birt中的js脚本不能用aler ...

随机推荐

  1. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  2. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  3. 第七章 过滤器 Filter(二)

    一  过滤器API 由容器实现的接口 –javax.servlet.Filter –javax.servlet.FilterChain –javax.servlet.FilterConfig 四个包装 ...

  4. 百度前端技术学院-task1.8源代码以及个人总结

    通过这次任务的练习我学到了很多,现将所学到的以及遇到的问题总结如下. 源码地址:http://pan.baidu.com/s/1kVB2VZL 下面出现的代码,都是摘自这个上面的源码 1.终于明白了a ...

  5. C# 如何判断ie版本号和获取注册表中的信息

    1.获取ie版本号 string ver = (new WebBrowser()).Version.ToString(); 例如:11.0.10586.103 int mainVer = (new W ...

  6. Async和await关键字的用法

    async & await 的前世今生(Updated) 1. 方法打上Async关键字, 就可以使用await调用别的Async方法了 2. 记得在需要异步执行的方法里面调用await或者n ...

  7. C#基础知识回顾--委托事件

    在上一篇看到他我一下子就悟了(续)---委托,被人狂喷.说写的太空,没有什么内容之类的.所以准备在这里重写下,不过还是按着以前的方式尽量简单的写.这里我们以打篮球为例. 第一步:首先,其他对象订购事件 ...

  8. Oracle面试的基本题

    事务 事务的概念 事务就是对数据操作的一系列指令集合. 事务的四个特性 原子性 事务的操作要么全部成功,要么全部失败,如果有一个指令失败,那么事务回滚到初始状态. 一致性 事务的执行不能破坏数据的完整 ...

  9. 从实例角度分析java的public、protected、private和default访问权限

    一.public 同一个package 1.本类内部 public class A { public int f=1; public void m1() {} public void m2() { f ...

  10. C#中Main函数为什么要static

    假设没有static关键字,那意味着需要用生成一个实例后才可以调用这个Main方法,而Main方法是程序入口点,你没有进入Main方法,自然无法生成一个实例,既然没有实例,那就无法调用Main函数,岂 ...