none
POSH Создать базу на MS SQL 2014 RRS feed

  • Вопрос

  • Добрый день!
    Нужно написать скрипт на POSH, который создаёт новую базу данных с необходимыми параметрами на MS SQL 2014.

    Накопал, что нужно использовать invoke-sqlcmd -InputFile "D:\Scripts\NewDB.sql"

    Вот так например.

    Но не могу понять, как передать этому NewDB.sql нужные параметры (название базы, пути до файлов)

    Может Другим способом можно выполнить создание базы?


    14 декабря 2017 г. 13:31

Ответы

  • https://docs.microsoft.com/en-us/sql/relational-databases/databases/create-a-database

    $dbName = "Test"
    $dbPath = "C:\SQL\test.mdf"
    $dbLog = "C:\SQL\test.ldf"
    
    $query = @"
    USE master ;  
    GO  
    CREATE DATABASE $dbName  
    ON   
    ( NAME = Sales_dat,  
        FILENAME = '$dbPath ',  
        SIZE = 10,  
        MAXSIZE = 50,  
        FILEGROWTH = 5 )  
    LOG ON  
    ( NAME = Sales_log,  
        FILENAME = '$dbLog',  
        SIZE = 5MB,  
        MAXSIZE = 25MB,  
        FILEGROWTH = 5MB ) ;  
    GO
    "@
    
    Invoke-Sqlcmd ...-Query $query

    • Помечено в качестве ответа LiOH 14 декабря 2017 г. 14:30
    14 декабря 2017 г. 13:42
    Отвечающий

Все ответы

  • https://docs.microsoft.com/en-us/sql/relational-databases/databases/create-a-database

    $dbName = "Test"
    $dbPath = "C:\SQL\test.mdf"
    $dbLog = "C:\SQL\test.ldf"
    
    $query = @"
    USE master ;  
    GO  
    CREATE DATABASE $dbName  
    ON   
    ( NAME = Sales_dat,  
        FILENAME = '$dbPath ',  
        SIZE = 10,  
        MAXSIZE = 50,  
        FILEGROWTH = 5 )  
    LOG ON  
    ( NAME = Sales_log,  
        FILENAME = '$dbLog',  
        SIZE = 5MB,  
        MAXSIZE = 25MB,  
        FILEGROWTH = 5MB ) ;  
    GO
    "@
    
    Invoke-Sqlcmd ...-Query $query

    • Помечено в качестве ответа LiOH 14 декабря 2017 г. 14:30
    14 декабря 2017 г. 13:42
    Отвечающий
  • Благодарю за быстрый ответ!

    Сейчас буду тестировать.

    14 декабря 2017 г. 13:47
  • Как и ожидалось, всё отлично! 

    Благодарю еще раз.

    Еще один момент хочу спросить. Не особо я силен в POSH, уровень начальный.

    Как мне сделать этот скрипт интерактивным? То есть запросить ввод с клавиатуры для  переменных $dbName, $dbPath...

    Вот немного доработанный мной скрипт.

    $dbName = "Test"
    $dbPath = ""
    $dbLog = ""
    $dbdb = $dbName + "_dat"
    $logdb = $dbName + "_log"

    $query = @"
    USE master ;  
    GO  
    CREATE DATABASE $dbName  
    ON   
    ( NAME = $dbdb,  
        FILENAME = '$dbPath',  
        SIZE = 10,  
        MAXSIZE = 50,  
        FILEGROWTH = 5 )  
    LOG ON  
    ( NAME = $logdb,  
        FILENAME = '$dbLog',  
        SIZE = 5MB,  
        MAXSIZE = 25MB,  
        FILEGROWTH = 5MB ) ;  
    GO
    use $dbName;
    EXEC sp_changedbowner 'user';
    use $dbName;
    ALTER DATABASE model SET RECOVERY SIMPLE ;
    "@

    Invoke-Sqlcmd -Query $query

    14 декабря 2017 г. 14:30
  • https://technet.microsoft.com/en-us/library/ee176935.aspx - Using the Read-Host Cmdlet

    $dbName = Read-Host "Please enter your dbName"

    14 декабря 2017 г. 14:36
    Отвечающий
  • Да, действительно не сложно.

    Думаю, тема исчерпана.

    Спасибо большое!

    14 декабря 2017 г. 14:58