在PowerShell中创建LocalDB数据库(不是实例)是否只有一行程序?

在PowerShell中创建LocalDB数据库(不是实例)是否只有一行程序?,powershell,localdb,Powershell,Localdb,我想创建一个LocalDB数据库,使MDF和LDF文件保持在脚本执行文件夹中 我知道我们可以很容易地在PowerShell中使用$操作符进行命令替换,因此,如果我声明类似$pwd的内容,它将使用pwd命令的输出进行替换 从中,我知道,Invoke SqlCmd不是处理LocalDB实例的简单方法 我想通过PowerShell执行以下命令。我怎样才能做到呢 sqlcmd -S "(localdb)\MSSQLLocalDB" -Q " CREATE DATABASE [Test] ON PRIM

我想创建一个LocalDB数据库,使MDF和LDF文件保持在脚本执行文件夹中

  • 我知道我们可以很容易地在PowerShell中使用
    $
    操作符进行命令替换,因此,如果我声明类似
    $pwd
    的内容,它将使用
    pwd
    命令的输出进行替换

  • 从中,我知道,
    Invoke SqlCmd
    不是处理LocalDB实例的简单方法

  • 我想通过PowerShell执行以下命令。我怎样才能做到呢

    sqlcmd -S "(localdb)\MSSQLLocalDB" -Q "
    CREATE DATABASE [Test] ON PRIMARY ( 
            NAME = N'Test', 
            FILENAME = N'<$pwd output here>\Test.mdf'
    ) 
    LOG ON ( 
            NAME = N'Test_log', 
            FILENAME = N'<$pwd output here>\Test_log.ldf'
    )"
    
    sqlcmd-S“(localdb)\MSSQLLocalDB“-Q”
    在主(
    NAME=N'Test',
    FILENAME=N'\Test.mdf'
    ) 
    登录(
    NAME=N‘测试日志’,
    FILENAME=N'\Test\u log.ldf'
    )"
    

    • 这可能比你要求的要多得多,但它会解决你的问题

      这将询问您是否要从模板还原。如果否,则将创建一个空数据库

      $backupFilePath=''
      $TempDB=''
      $TempDBlog=''
      $DBName=''
      $Logfilepath=''
      $Datafilepath=''
      
      $confirmation = Read-Host "Do you want to use a DB template? [y/n]"
      
      If($confirmation.ToUpper().StartsWith("Y") )
      {
      $dbCommand = "use [master];RESTORE DATABASE [$DBName] " + "FROM DISK = N'$backupFilePath'" + "WITH FILE = 1, NOUNLOAD, STATS = 10, " + "move '$TempDB' to '$Datafilepath" + "\" + "$DBName" + ".mdf', " + "move '$TempDBlog' to '$Logfilepath" + "\" + "$DBName" + ".ldf';" + "alter database [$DBName] modify file (name=N'$TempDB ', newname=N'$DBName" + "_data1');" + "alter database [$DBName] modify file (name=N'$TempDBlog', newname=N'$DBName" + "_log1');" + "alter database [$DBName] set read_committed_snapshot on with rollback immediate;" + "alter database [$DBName] set COMPATIBILITY_LEVEL = 100;"
      }
      
      else {
      $dbCommand = "use [master];CREATE DATABASE [$DBName] ON " + "( NAME='$DBName" + "_data1', FILENAME='$Datafilepath" + "\" + "$DBName" + "_data1.mdf', SIZE=1GB, MAXSIZE=UNLIMITED, FILEGROWTH=200MB)" + "LOG ON ( NAME='$DBName" + "_log1', FILENAME='$Logfilepath" + "\" + "$DBName" + "_log1.ldf', SIZE=1GB, MAXSIZE=UNLIMITED, FILEGROWTH=200MB); " + "alter database [$DBName] set read_committed_snapshot on with rollback immediate;" + "alter database [$DBName] set COMPATIBILITY_LEVEL = 100; " + "set AUTO_CLOSE OFF;"
      }
      
      有人将不得不编辑成好看的代码中断,因为它不允许我这样做