【问题标题】:Creating non-trivial database on SQL Server on request根据请求在 SQL Server 上创建重要的数据库
【发布时间】:2023-03-27 08:33:01
【问题描述】:

我正面临一个问题,即在一个命令中使用从 ASP.NET 作为批处理发送的 17000 行代码长脚本来创建新数据库缓慢。问题是在高峰时段执行此脚本有时需要 20 多秒。如果我在 SQL Server Management Studio 中运行此脚本,则需要 2 秒。

根据请求创建数据库、将脚本放入存储过程、数据库克隆、预创建以及重命名数据库的最佳实践是什么?我们需要确保它与负载下的并发环境兼容。

谢谢。

【问题讨论】:

  • 此实例中的所有数据库是否相互克隆?如果是这样,最好的方法是将所有对象/数据添加到模型数据库中。然后你所要做的就是发出一个 CREATE DATABASE 命令。创建的新数据库将是模型数据库的副本。这就是模型数据库的用途,它是在该实例上创建的所有新数据库的模板(模型)。
  • 数据库创建代码是否有任何动态需要您在命令中执行它?或者您可以使用脚本文件和其他适当的开关执行 SQLCmd 来创建数据库吗?
  • 您是否分析过您的 ASP.NET 应用程序以查看额外的 18 用于何处?
  • 这是一个遗留代码,我刚刚意识到 SMO 用于调用它,使用分析器我可以看到脚本被分成 1000 个单独的调用,所以这可能是问题所在。但是,当用户注册新帐户时,动态创建数据库的最佳方法是什么?

标签: asp.net sql-server


【解决方案1】:

通过线路向 SQL 服务器发送 17000 行似乎是一个可怕的开销,而且速度很慢。使用 ASP.NET 的 SQL 客户端来执行此类操作也是如此。

是的,我赞成您使用存储过程来执行此操作。对数据库克隆和重命名操作不太确定;我敢打赌,您可以通过使用存储过程的参数来定义它来摆脱这种情况。

【讨论】:

  • 问题是你必须将该PROC存储在公共DB中并且PROC不能包含USE命令,所以我可以创建DB并在新创建的DB上运行脚本吗?
猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多