安装 SQL Shield 后,就可立即使用。SQL Shield 不影响现有过程,不改变任何已经存在的对象。当它被激活后,仅仅影响您新创建的过程。它只在您明确指定新方法时发生作用。因此,两种方法可以共存而互不干 扰。为明确指定新方法,您应将 /*sqlshield*/ 备注插入 WITH ENCRYPTION 语句。备注区分大小写。实例:

CREATE PROCEDURE MyTest
WITH /*sqlshield*/ ENCRYPTION
AS
SELECT 2+2

SQL Shield 对使用 SQL Server 或 SQL Shield 模式加密的过程不提供解密方法。

安装 SQL Shield 后,您可以选择使用以下加密方法:原始加密法或 SQL Shield。通过运行两种外部过程,您可以启用或禁用 SQL Shield。SQL Shield 与 SQL Server 一同启动。安装期间,它将一个称为 sqlshield_startup 的特殊过程置入主数据库。如果要禁用它,请在此备注 "exec sqlshield_on"。要随时卸载 SQL Shield,请使用“exec sqlshield_off”。此后,所有新建对象将都使用原始 SQL Server 加密法。SQL Server 会缓存解密对象。这就是您停止或卸载 SQL Shield 后,通常情况下加密对象仍然可用(您可以执行它们)的原因。但是未启动的对象将不可用。 如果您重新启动 SQL Server 而未启动 SQL Shield,则所有对象都不可用。尽管 SQL Shield 不能完全保护过程免遭解密,但使用 SQL Shield,目前所有解密程序都将失效。

由于 MSSQL Server 7.0 的内部限制,用 SQL Shield 加密的存储过程和视图不能超过 4000 个字符。较长的过程可用原始 SQL 加密法加密。用于 MSSQL 2000 的版本无限制。

了解解密 SQL Server 过程何其容易。创建一个简单的加密存储过程:

Web 搜索中查找解密程序

启动该程序,选择新建过程并按“保存”。

用记事本打开创建的文本文件。文件随即打开。只需数次点击,便可揭示所有加密的过程!

现在让我们了解 SQL Shield 如何解决此问题

如果 SQL Shield 尚未启动,请启动:

创建新的存储过程并插入 "magic" /*sqlshield*/ 备注:

运行它,并留意它仍然可以执行,不会出现问题。

运行解密程序,并尝试将它运用到我们的过程:

按“保存”按钮,并查看生成的文件:

哇!我们的过程现已受到保护。

希望了解在没有 SQL Shield 的情况下会有何后果?在 master..sqlshield_startup 过程中禁止自动启动 SQL Shield,然后重新启动 SQL Server。现在再次运行 sqlshield_test。您将看到以下错误。

启动 SQL Shield 时,您可以再次执行。