加密要在服务器上运行的sql脚本

时间:2014-09-15 16:37:41

标签: sql sql-server

我们公司有一个专有的t-sql脚本,我们需要在不属于我们的几个SQL服务器上运行。我们想要一种运行此脚本的方法,以便它不能通过文件系统或剪贴板复制。我们通常通过远程会话(logmein或类似方式)登录,因此我们担心看到我们运行一个脚本的技术人员可以通过了解我们如何运行它来准备下一个服务器来复制脚本。

脚本创建的所有记录都将在数据库中供他们查看,我们只希望保护脚本本身。

是否有任何方法不需要进行重大开发?

3 个答案:

答案 0 :(得分:3)

不可能完全保护您的脚本(它总是可以被捕获),但是如果您不想像简单的复制/粘贴那样分发它,那么您可以创建一个除了连接到数据库之外的应用程序,运行脚本,并将脚本作为加密的资源嵌入到您的应用程序中。

但是我只是建议你不要做任何事情,只要相信你的客户,你不相信你的直接风俗,与你直接接触的情况,让我觉得非常糟糕。它也常常被认为是非常糟糕的,你想象它的价值超过它最有可能。

答案 1 :(得分:1)

您可以在创建存储过程或函数时使用WITH ENCRYPTION选项 这样就无法查看基础SQL,但仍然可以执行它。

http://msdn.microsoft.com/en-us/library/ms187926.aspx

答案 2 :(得分:0)

正如我在上面的评论中所说,我不认为可以对服务器管理员完全不可监督的SQL Server发出命令。但我不确定。

如果事实证明这是不可能的,或者由于其他原因你没有得到任何答案,如果您的脚本只修改数据库对象但没有服务器对象,请考虑以下备选方案:

  1. 检索可用于创建该数据库本地副本的数据库备份或CREATE脚本。
  2. 在本地(公司内部)应用所有更改,即针对数据库副本运行脚本。
  3. 将修改后的数据库副本作为备份返回给SQL Server所有者。
  4. 这样,他们就没有机会确切地看到你对数据库做了什么。

    (如果您的脚本实际上 创建或修改服务器级别的对象,那么上述建议将无效,因为您无法进行服务器备份。但恕我直言,它是唯一正确的应该允许SQL Server所有者确切地知道你的脚本对他们的服务器做了什么;毕竟,你正在为他们的财产做些什么。)