【问题标题】:Create a database using T SQL on a specified location在指定位置使用 T SQL 创建数据库
【发布时间】:2010-09-12 08:44:45
【问题描述】:

如何在指定位置使用 T SQL 脚本创建数据库?假设,我想在D:\temp\dbFolder 上创建一个 SQL Server 数据库。如何做到这一点?

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    当您创建新数据库时,您指定位置。例如:

    USE [master]
    GO
    
        CREATE DATABASE [AdventureWorks] ON  PRIMARY 
        ( NAME = N'AdventureWorks_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf' , SIZE = 167872KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB )
         LOG ON 
        ( NAME = N'AdventureWorks_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB )
        GO
    

    【讨论】:

      【解决方案2】:

      来自 SQL Server Books 的一个示例,其中明确定义了数据库文件名:

      USE master
      GO
      CREATE DATABASE Sales
      ON 
      ( NAME = Sales_dat,
         FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf',
         SIZE = 10,
         MAXSIZE = 50,
         FILEGROWTH = 5 )
      LOG ON
      ( NAME = 'Sales_log',
         FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
         SIZE = 5MB,
         MAXSIZE = 25MB,
         FILEGROWTH = 5MB )
      GO
      

      【讨论】:

        【解决方案3】:
        1. 在您的文件系统上创建文件夹:D:\temp\dbFolder\
        2. 运行脚本:

          USE master; 
          GO 
          CREATE DATABASE TestDB1  
          ON      ( NAME = Sales_dat, FILENAME = 'D:\temp\dbFolder\TestDB1.mdf') 
          LOG ON  ( NAME = Sales_log, FILENAME = 'D:\temp\dbFolder\TestDB1.ldf'); 
          GO
          

        【讨论】:

          【解决方案4】:

          使用 Studio Manager 中的变量扩展前面的示例。

          创建文件夹和子文件夹。
          示例:根文件夹 E:\MSSQL\DATA 子文件夹 E:\MSSQL\DATA\DB 和 E:\MSSQL\DATA\Logs。

          MKDIR "E:\MSSQL\DATA\DB"
          MKDIR "E:\MSSQL\DATA\Logs"
          

          将数据库名称 @DBNAME 变量 @Test_DB' 更改为您的 'DesiredName_DB'

          根据上面创建的文件夹将根文件夹路径 @DataPath 'E:\MSSQL\DATA' 更改为您的。

          在 Studio Manager 中运行以下代码

          DECLARE @DBNAME VARCHAR(MAX)
          DECLARE @DataPath AS NVARCHAR(MAX)
          DECLARE @sql VARCHAR(MAX)
          
          SET @DBNAME = N'Test_DB'
          SET @DataPath = N'E:\MSSQL\DATA'
          
          SELECT @sql = 'USE MASTER'
          EXEC (@sql)
          
          SELECT @sql = 'CREATE DATABASE '+ quotename(@DBNAME) + ' 
          ON 
          PRIMARY
           ( 
           NAME = ''' + @DBNAME + '_DB'', 
           FILENAME = ''' + @DataPath + '\DB\' + @DBNAME + '.mdf'', 
           SIZE = 3136 KB , MAXSIZE = UNLIMITED, 
           FILEGROWTH = 1024 KB
           ) 
          LOG ON
           (
           NAME = '''+ @DBNAME + '_Log'', 
           FILENAME = '''+ @DataPath + '\Logs\' + @DBNAME  + '_log.ldf'', 
           SIZE = 832KB , MAXSIZE =  2048 GB , FILEGROWTH = 10 %
           )'
          
          
          EXEC (@sql)
          

          或上述主题的另一种变体。

          DECLARE @DBNAME VARCHAR(MAX)
          DECLARE @DataFilePath AS NVARCHAR(MAX)
          DECLARE @LogFilePath AS NVARCHAR(MAX)
          DECLARE @sql VARCHAR(MAX)
          
          SET @DBNAME = N'Test_DB'
          SET @DataFilePath = N'E:\MSSQL\DATA\DB\'
          SET @LogFilePath = N'E:\MSSQL\DATA\Logs\'
          
          SELECT @sql = 'USE MASTER'
          EXEC (@sql)
          
          SELECT @sql = 'CREATE DATABASE '+ quotename(@DBNAME) + ' 
          ON 
          PRIMARY
           ( 
           NAME = ''' + @DBNAME + '_DB'', 
           FILENAME = ''' + @DataFilePath + @DBNAME + '.mdf'', 
           SIZE = 3136 KB , MAXSIZE = UNLIMITED, 
           FILEGROWTH = 1024 KB
           ) 
          LOG ON
           (
           NAME = '''+ @DBNAME + '_Log'', 
           FILENAME = '''+ @LogFilePath+ @DBNAME  + '_log.ldf'', 
           SIZE = 832KB , MAXSIZE =  2048 GB , FILEGROWTH = 10 %
           )'
          
          
          EXEC (@sql)
          

          【讨论】:

            【解决方案5】:

            查看此链接:CREATE DATABASE (Transact-SQL)

            CREATE DATABASE [ADestinyDb] CONTAINMENT = NONE ON  PRIMARY 
            ( NAME = N'ADestinyDb', 
              FILENAME = N'D:\temp\dbFolder\ADestinyDb.mdf' , 
              SIZE = 3136 KB , MAXSIZE = UNLIMITED, 
              FILEGROWTH = 1024 KB )
            LOG ON 
            ( NAME = N'ADestinyDb_log', 
              FILENAME = N'D:\temp\dbFolder\_log.ldf' , 
              SIZE = 832KB , MAXSIZE =  2048 GB , FILEGROWTH = 10 %)
            

            【讨论】:

              【解决方案6】:

              在您的文件系统上创建文件夹:D:\temp\dbFolder\ 并运行以下脚本 (尝试“sa”登录)

               USE master
              CREATE DATABASE [faltu] ON  PRIMARY 
              ( NAME = N'faltu', FILENAME = N'D:\temp\dbFolder\faltu.mdf' , SIZE = 2048KB , FILEGROWTH = 1024KB )
               LOG ON 
              ( NAME = N'faltu_log', FILENAME = N'D:\temp\dbFolder\faltu_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
              

              【讨论】:

                猜你喜欢
                • 2013-11-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多