Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Динамическое создание базы данных и источника данных в ColdFusion

Автор вопроса: Saravana KumarОтветов: 1

Я пытаюсь создать базу данных и источник данных динамически из пользовательского ввода.

Я не уверен, что возможно или нет создать базу данных с использованием тега cfquery без использования источника данных.

Для создания источника данных

<cfscript>
    adminObj = createObject("component","cfide.adminapi.administrator");
    adminObj.login("admin password");
    myObj = createObject("component","cfide.adminapi.datasource");
    myObj.setMSSQL(driver="MSSQLServer",
        name="datasourceName", host = "127.0.0.1", port = "1433",
        database = "database", username = "userName", password="password", login_timeout = "30",
        timeout = "20", interval = 7, buffer = "64000", blob_buffer = "64000", setStringParameterAsUnicode = "false",
        description = "", pooling = true, maxpooledstatements = 1000, enableMaxConnections = "true",
        maxConnections = "300", enable_clob = true, enable_blob = true, disable = false, storedProc = true,
        alter = false, grant = true, select = true, update = true, create = true, delete = true, drop = false,
        revoke = false
        );
</cfscript>

Я пытался создать источник данных, используя приведенный выше код статически, он успешно создает источник данных.

Для создания базы данных

<cfquery name="createDB" result="res">
    create database #form.dbname#
</cfquery>

но не может создать базу данных, используя приведенный выше код. Я получил ошибку, моя цель должна создать базу данных, а затем источник данных, используя строку ввода пользователя. введите здесь описание изображения

Любой совет или помощь ценны
Заранее спасибо.

  • Почему? Я думаю, что это возможно в обходном пути, но сервер ColdFusion действительно не должен иметь такого уровня разрешений для вашего сервера базы данных. Используете ли вы учетную запись sa в качестве пользовательского соединения CF или у вас есть специальное соединение для сервера CF? Shawn 28.02.2020
  • Это действительно плохая идея позволять пользователям создавать базы данных на вашем сервере. Miguel-F 28.02.2020
  • @shawn да, я использую учетную запись sa в качестве пользовательского подключения cf Saravana Kumar 28.02.2020
  • @miguel-F да, но это сценарий ☺ Saravana Kumar 28.02.2020
  • Вам нужно использовать имя источника данных в ‹cfquery›, который создает базу данных, хотя я не уверен, что это сработает. Возможно, вам потребуется создать БД с использованием уже существующего источника данных, а затем создать новый источник данных. Кроме того, я согласен со всеми остальными... это плохая идея... очень, очень плохая идея. Scott Stroz 28.02.2020
  • Насколько я помню, я думаю, что вы можете создать другую базовую базу данных (например, Master в SQL Server), а также создать резервную копию и восстановить эту базу данных. Это дает вам фактический источник данных для использования. Однако я еще раз повторяю, что считаю это очень плохой идеей. Shawn 28.02.2020

sql-servercfmlcoldfusion-2016coldfusion

Ответы

Ответ 1 · рейтинг 1 · Richard_J_Nap

Можете ли вы преобразовать свой скрипт в функцию и передать желаемое имя базы данных из ввода формы в качестве аргумента?

runCreateDatabase = createDBforMe(databasename=form.dbname)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы