We have purchased a fairly light-weight application that uses a database on SQL Server for its back-end. This application has no API. There is a small web-based feature we need to add, that can easily be added by connecting to the database directly.

Generally speaking, and all issues relating to future schema changes aside, is this typically allowed by the software license?

A co-worker made the argument that in the spirit of the software license, we are reverse-engineering their code.

I hold the belief that it is our data in the database that we would be accessing and potentially modifying, no license is required for the actual data. In addition, since we still pay for a license to use the software, that means we also have a license to use its schema, as the schema is part of the software. It is also my understanding that it is common practice (at least, everywhere I have worked) to access an application's database directly for reporting purposes.

Which is considered correct? I am interested in input from both a legal standpoint, and an industry commonly understood standpoint.

I also understand that this will vary from license to license. I am looking for a general answer that will apply to most software. Thank you.

Edit: Perhaps another way to look at it... What is generally considered acceptable? Throw out the license agreement, since the legal question cannot be properly answered without the license. As a developer, would you be unhappy with your users accessing the database directly?

  • 1
    Your assumptions and conclusions are very very strange. Oct 18, 2011 at 16:58
  • For some reason, this question reminds me of the Astrolabe lawsuit
    – Jetti
    Oct 18, 2011 at 17:28

3 Answers 3


I also understand that this will vary from license to license. I am looking for a general answer that will apply to most software.

That's a contradiction. What you're allowed or not allowed to do with a piece of software depends specifically on the license. You really can't generalize something like that. You can say that in general you're allowed to make a backup copy for archival purposes, but that's because that right is written into copyright law. I don't believe that there's a similar provision governing an unintended use of a piece of software.

If the license prohibits such use, you're in violation of the license if you do it. If it doesn't, then you're probably fine. Nothing else matters.

And btw, I am not a lawyer. Talk to your lawyer if you need legal advice.

  • Yes, I agree with you, but you see what I'm getting at, yes? Let me rephrase... What is generally considered acceptable? Throw out the license agreement. As a developer, would you be unhappy with your users accessing the database directly?
    – Brad
    Oct 18, 2011 at 16:58
  • 3
    The license is a legally-binding contract. You can't just throw it out. How I feel as a developer doesn't matter.
    – Blrfl
    Oct 18, 2011 at 17:13
  • @Blrfl, I'm not suggesting I intend to throw it out. I'm saying that for the purpose of discussion, ignore the legalities and tell me your opinion of whether or not you would want your customers in the database created by your application on their server.
    – Brad
    Oct 18, 2011 at 17:16
  • 1
    @Brad, 3 things: 1) You can't throw out the license -- it's what you agreed to; 2) It is your data, and you can do what you like with it including store it in some proprietary format that you've agreed not to reverse engineer; 3) Accessing a standard database doesn't seem like reverse engineering to me, but if you're at all unclear about what your license means, you need to talk to your lawyer (which in this case is probably your company's lawyer, and this is exactly what they're there for).
    – Caleb
    Oct 18, 2011 at 17:20
  • 1
    @Brad: If my customers are smart enough to know they want access to the database, they should also be smart enough to make sure they can have it before licensing my product. The term for that is "due dilligence." I've been on the vendor and customer sides of that fence and have developed products where I (or my company) cared about it and others where it wasn't an issue. It isn't something you can generalize. Caleb's comment is included by reference. :-)
    – Blrfl
    Oct 18, 2011 at 19:35

Unless the license says otherwise, then the data you create with the application is your data. You can read it however you want. Otherwise, you wouldn't be able to open your MS-Access files in another program that happens to be able to read them, or open your MS Word files in OpenOffice. You wouldn't be able to open the SQL Lite database that Firefox uses to store it's data. Even the old bookmarks.html could be construed as a database. Reading the data you created from a database is completely within your rights.

  • Thank you for your input. Does your answer hold true for data created outside of the application, but then used by the application? That is, if I write to the database, do you believe that is still generally within our rights?
    – Brad
    Oct 18, 2011 at 17:05
  • Writing to the database can be a tricky thing. Especially if you have a support contract with them. If you start changing data yourself, you may mess up something that their application depends on. Writing to the database is more of a "reverse engineering" then just reading it. To put it more plainly, You can go ahead start modifying all the values your want in about:config, but don't expect Mozilla to help you out when something goes terribly wrong.
    – Kibbee
    Oct 18, 2011 at 17:20
  • Yes, I understand that we cannot expect support on something like that. Thank you for your input.
    – Brad
    Oct 18, 2011 at 18:41

It of course does depend on what access the software vendor allows through its written license. Software vendors vary wildly on whether they allow database access or not.

You cannot be denied your data and if you move to another vendor, generally they can be forced to create data files for the new vendor to import. But you can't always access the database directly.

Most companies who feel strongly that the schema is proprietary data either store it only on their servers that you can only access through the application or they encrypt the data/sql code that is being run. These companies also tend to have very expensive consultants who will write any custom reporting for you. Since they are charging for custom reporting, they are losing money if you do your own reporting and thus their licenses tend to forbid you to do such things. The database schema is part of their particular company's marketing advantage. If you figure it out, then you don't need their product anymore as you coudl write your own. Certainly I wouldn't want our schema to be made available to our competition.

Others either don't want to get into such custom reporting or don't have the people to do so and tend to be much more open to the customer accessing the database directly. Of course unless they do the database admin of the data, they will need to grant admin rights to someone on your team to do database backups and restores.

The time to check such things is before you buy the product not afterwards. If you bought the product, you need to live with whatever their license specifies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.