【问题标题】:Dynamically creating database and data source in ColdFusion在 ColdFusion 中动态创建数据库和数据源
【发布时间】:2020-02-28 09:26:40
【问题描述】:

我正在尝试根据用户输入动态创建数据库和数据源。

我不确定是否可以在不使用数据源的情况下使用 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>

但无法使用上述代码创建数据库。我得到了错误,我的目标需要使用用户输入字符串创建数据库然后数据源。

任何建议或帮助都是值得赞赏的
提前致谢。

【问题讨论】:

  • 让用户在你的服务器上创建数据库是一个真的坏主意。
  • 您需要在创建数据库的 中使用数据源名称 - 不过,我不确定这是否可行。您可能需要使用已经存在的数据源创建数据库,然后创建新的数据源。另外,我同意其他所有人的观点……这是一个坏主意……一个非常非常糟糕的主意。
  • 据我记忆,我认为您可以创建另一个基线数据库(如 SQL Server 中的 Master)并备份和恢复该数据库。这使您可以使用实际的数据源数据库。但是,我会再次重申,我认为这是一个非常糟糕的主意。
  • 我还强烈建议您创建一个仅 CF 使用的特殊用户,并将该帐户限制为允许执行的操作。 sa 在您的数据库中拥有 很多 权限。而且您真的不希望可通过网络访问的用户能够对您的数据库执行 DROP TABLE master 之类的操作。
  • 我将为未来的读者添加另一条注释:这是一个坏主意的原因之一(尽管有安全方面的问题)是您可以打开一个允许轻松拒绝的漏洞-服务,有意或无意。如果这被多次调用,则这些数据库中的每一个都有驱动器空间成本。您可以很快填满数据库服务器中的硬盘驱动器。驱动器空间不足可能是一个非常令人头疼的问题。更糟糕的是,如果您为使用的驱动器空间付费,您可能会收到相当昂贵的惊喜。

标签: sql-server coldfusion cfml coldfusion-2016


【解决方案1】:

您能否将脚本转换为函数,并从表单输入中传递所需的数据库名称作为参数?

runCreateDatabase = createDBforMe(databasename=form.dbname)

【讨论】:

  • 您的意思是您在谈论代码可重用性概念/目的,对吗?谢谢你的建议?
猜你喜欢
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 2020-05-11
  • 2015-01-06
  • 1970-01-01
相关资源
最近更新 更多