【问题标题】:UniDac doesnt find stored procedure schemaUniDac 找不到存储过程架构
【发布时间】:2014-03-28 19:03:53
【问题描述】:

我已经为 Delphi 使用 UniDac VCL 组件已有一年了,但最近使用 SQL Server 2012 开始了一个相当大的项目,我想以不同的方案分离表和存储过程,我的整个逻辑都在存储过程中,所以没有查询该程序只有存储过程名称和参数。

问题是,当我将存储过程架构从 dbo 更改为假设为 SchemaA 然后尝试从 Delphi 运行它时,TUniStoredProc 组件发现它是 ProcedureName 而不是 SchemaA.ProcedureName抛出执行时找不到存储过程的异常。

我不能将不同的模式分配给不同的用户作为他们的默认模式,因为根据权限,有些用户使用 4-6 种模式。我已经尝试过的是手动输入 SchemaA.ProcedureName 并且效果很好,但是为大约 150 个组件这样做会花费很多时间,所以我正在寻找更好的解决方案。

有什么想法吗?

【问题讨论】:

  • 所以你的问题实际上是:如何在我的所有TUniStoredProc 组件中将过程名称从“ProcedureName”更改为“SchemaA.ProcedureName”?它们都在一个数据模块中,还是分散在您的表单中?
  • 拥有更多的模式而不是一个选项:P 我的问题更多的是如何强制 TUniStoredProc 自动检测模式或在服务器中获得正确的权限,如果用户有db_owner 他可以在不指定存储过程模式的情况下查看所有模式,是的,我所有的存储过程组件都在 2 个单独的数据模块中,有什么想法吗? :)

标签: sql sql-server delphi stored-procedures unidac


【解决方案1】:

我不知道这些组件有多少表单或模块,但如果它们是集中式的,则以文本模式打开表单并进行替换。

UniDac 的宏在这里可能会派上用场,可以使用 {MySchema}.ProcedureName 并在连接宏中设置 MySchema 名称。

【讨论】:

  • 如果我只使用一种方案,那将是一个不错的决定,但当时我使用了大约 7 种模式,所以这不是我实际发现的一个选项,因为 Unidac 不太喜欢模式所以我决定不使用它们
猜你喜欢
  • 2019-02-28
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多