我在一个学区工作。每年我们都必须从学生管理系统中导出一份学生名单,并将其发送给处理我们在线考试的公司。

所以为了做这个输出,我们必须雇佣一个了解我们学生管理系统内部运作的人。他写了一个sql (Adaptive Sybase sql Anywhere)查询,将学生导出到我们需要的csv文件。这是在我开始为学区工作之前,所以有一段时间我以为这是一个真正的应用程序,直到轮到我自己做导出的时候。

每年他都会向我们收取500美元来更新这个查询以导出当年的学生。所以当我发现它只是一个查询(.bat文件和.sql文件)时,我的想法是“我可以自己更新”。我所要做的就是改变查询中的年份(例如。2009 - 2010)。

查询(。SQL文件)本身在顶部有这样的注释:

// This code was writtend by [the guy]
// and is the property of [his company]...Copyright 2005,2006,2008,2009
// This code MAY NOT BE USED without the expressed written consent of 
// [his company].

(是的,上面确实写着“writtend”。)

所以现在我老板担心我们侵犯了版权。那家伙会发现是我自己更新了查询因为我们今年还没有要求他更新并采取法律行动。

回到刚才的问题: 他真的能获得这个问题的版权吗? 如果是的话,我们自己修改是不是侵犯了版权? 在我看来,单个查询不是程序代码。它更像是一个命令行命令。但我不知道这在法律上是怎么考虑的。


当前回答

因为我们在这里都不是律师,我想指出这篇文章是通过Techdirt的方式来的,它确实有相当多的法律追随者,特别是在版权领域。想知道他们是怎么说的吗?

你能对SQL查询进行版权保护吗?

其他回答

我是一名DBA,使用过许多带有罐装SQL代码的第三方应用程序,我从未见过SQL语句附加这样的东西。如果你可以直接访问数据库并从中查询数据,那就重写代码,不要再给那个人一秒钟的时间,因为这样一个500美元的单进程似乎是一种敲敲敲敲。

But without seeing the code there's no telling how involved it is. I've written some SQL statements that go into hundreds of lines to get data, and they can take DAYS or even WEEKS to write and debug. If this guy invested that kind of time into the process and you're paying $500 per run, it may be worth it ... but if it's just a strait forward Select statement that's no more then a dozen or so lines long, that is not worth $500 and can be written by you or someone else with a basic understanding of SQL. Even if it looks similar to his, honestly sometimes there's only so many ways to write something. "The dog is blue"... how many ways can you say it? Not many :)

是的,我也不是律师,但当涉及到这样的事情时,我的道德准则是指导我的。

另一种选择(你可能执行也可能不执行,风险由你自己承担——咨询律师!):保持他的代码不变。编写一个包装器,读取他的SQL并在运行它之前执行s/2009/$this_year/。瞧,你什么都没改变……

首先,你需要查阅你当初雇佣那个人时起草的合同。

这份合同要么规定,要么没有规定谁拥有代码。

然后,你拿着这份合同,雇一个律师来检查它,然后他(或她)会告诉你你是否有根据,你有什么选择。

这里没人是律师,所以你在这里得不到任何法律建议。即使这里有人是律师,这个人也不会在这里回答任何你可以依赖的东西,因为如果你在一个程序员问答网站上从一个律师那里得到法律建议,那么这个律师的职业生涯很可能会很短,所以只有愚蠢的律师才会这么做。

所以你在这里得到的是意见。如果你想要可靠的法律建议,请律师。

我建议你提出一个不同的问题:鉴于我们的学生管理系统的这个和那个表结构,SO社区会提出什么SQL查询来导出任何给定年份的学生列表?

这将使你最初的问题变得有趣,但与你手头的任务相关,因为你将有一个社区提供的解决方案,可能会越来越高性能,更容易维护:)

请其他人为您重写查询(或者自己重写),并且永远不要再使用他的代码。

你不用用他的密码。