【发布时间】: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