如何将存储过程(即所有业务逻辑)与客户端数据库分开,以便它只包含客户端数据?

时间:2014-08-01 07:44:28

标签: sql sql-server visual-studio-2010 stored-procedures sql-server-2012

方案
我们的应用程序数据库(在SQL Server 2012中)包含存储过程中的整个业务逻辑。每次我们必须将数据库发布到客户端时,都会不必要地导致将存储过程复制到客户端数据库。

问题
所有业务逻辑都被复制到客户端并导致专有问题。

先前尝试过的解决方案

  1. 使用WITH ENCRYPTION

    CREATE PROCEDURE Proc_Name WITH ENCRYPTION
    

    此方法导致加密且不可维护的存储过程代码。我们无法判断客户端运行的代码版本,因此无法调试。无法应用版本控制。此外,客户端无法执行数据库复制,因为加密的存储过程无法复制。

  2. 创建同义词

    CREATE SYNONYM SchemaName.Proc_Name FOR LinkedServerDB.SchemaName.Proc_Name
    

    这允许在Client_DB创建引用(同义词),它访问驻留在Remote_Linked_Server_DB上的实际存储过程。在每个存储过程调用中,从Client_DB访问整个数据并将其传输到Remote_Linked_Server_DB,在那里完成计算并将结果发回。这导致严重的性能问题。还需要24x7互联网连接到远程链接服务器。

  3. 要求
    我们正在寻找一种解决方案,通过该解决方案可以编译(保护)存储过程代码并将其与客户端数据库分开。此外,编译的存储过程代码应该在客户端可用,以便客户端不需要24x7连接到远程位置来访问存储过程。也许Visual Studio数据库项目可用于编译存储过程代码或其他东西。

    [编辑] 我知道SQL Server 2014允许本机编译的存储过程代码。这有帮助吗? msdn link SQL Server 2014 RTM版本是否足够稳定?

0 个答案:

没有答案