2014-03-28 32 views
1

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

的问题是,当我从dbo改变我的存储过程的模式,让我们说SchemaA,然后尝试从德尔福运行它TUniStoredProc组件发现它ProcedureName而不是SchemaA.ProcedureName会抛出没有找到存储过程的例外执行。

我不能为不同的用户分配不同的模式作为他们的默认方案,因为有些用户根据权限使用4-6个方案。我已经尝试过的是手动输入SchemaA.ProcedureName,而且完美地工作,但对于约150个组件需要花费很多时间,所以我正在寻找更好的解决方案。

有什么想法?

+0

所以你的问题实际上是:如何在我的所有'TUniStoredProc'组件中将过程名称从“ProcedureName”更改为“SchemaA.ProcedureName”?他们全都在数据模块中,还是分散在你自己的表单之中? –

+0

whell有更多的架构比一个不完全的选择:P我的问题更多的是如何强制TUniStoredProc自动检测架构或在服务器中作出正确的权限,如果用户有db_owner,他可以看到所有的没有指定存储过程模式的模式,是的,我所有的存储过程组件都在两个独立的数据模块中有任何想法? :) – AirWolf

回答

0

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

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

+0

这将是一个很好的决定,如果我只使用一个方案,但在当时我使用了7个模式,所以多数民众赞成我的选择,我实际上做的发现uid,Unidac不太喜欢架构,所以我只是决定不要使用它们 – AirWolf